introducción a los patrones de diseño

37
15/06/2010 AMBIENTES DE DESARROLLO Patrones Departamento de Telemática

Upload: mario-solarte

Post on 03-Jul-2015

14.614 views

Category:

Education


0 download

DESCRIPTION

Diapositivas curso Ambientes de Desarrollo

TRANSCRIPT

15/06/2010

AMBIENTES DE DESARROLLO

Patrones

Departamento de Telemática

15/06/2010

Patrones

Los Patrones son estructuras reutilizables en

la construcción de aplicaciones.

Pueden ser:

De Diseño

De Interfaz

Arquitectónicos

otros

15/06/2010

Patrones - Introducción

Los Patrones de Diseño nos hablan de como

construir software, de como utilizar las

clases y los objetos de forma conocida.

Es necesario tener conocimientos previos de

Programación Orientada a Objetos para

entender los Patrones

15/06/2010

Orígenes 1/4

Los precedentes a los patrones de diseño

vienen del campo de la Arquitectura,

Christopher Alexander a finales de los 70

escribe varios libros acerca de urbanismo y

construcción de edificios, y se plantea reutilizar

diseños ya aplicados en otras construcciones

que cataloga como modelos a seguir.

15/06/2010

Orígenes 2/4

“Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno, para describir después el núcleo de la solución a ese problema, de tal manera que esa solución pueda ser usada más de un millón de veces sin hacerlo ni siquiera dos veces de la misma forma”

Christopher Alexander

15/06/2010

Orígenes 3/4

En 1987 Ward Cunningham y Kent Beck utilizan las

ideas de Alexander para desarrollar un lenguaje de patrones

como guía para los programadores de Smaltalk, dando

lugar al libro "Using Pattern Languajes for Object-Oriented

Programs".

Posteriormente en 1991 Jim Coplien publica el libro

"Advanced C++ Programming Styles and Idioms", donde

realiza un catalogo de "idioms" (especie de patrones)

15/06/2010

Orígenes 4/4

Entre 1990 y 1994, Erich

Gamma, Richard Helm, Ralph

Johnson y Hohn Vlissides

realizan el primer catálogo de

patrones de diseño, que publican

en el libro "Design Patterns:

Elements of Reusable Object-

Oriented Software" (Gang of

Four) (la pantilla de los cuatro).

15/06/2010

Patrones

Concepto 1/3

Un patrón es una unidad de

información nombrada, instructiva e

intuitiva que captura la esencia de una

familia exitosa de soluciones probadas a

un problema recurrente dentro de un

proyecto a desarrollar.

15/06/2010

Patrones de Diseño

Concepto 2/3

Un patrón es una solución de diseño

de software a un problema, aceptada

como correcta, a la que se ha dado un

nombre y que puede ser aplicada en

otros contextos.

15/06/2010

Patrones de Diseño

Concepto 3/3

Son un mecanismo popular para describir

soluciones generales de problemas de diseño que

pueden ser reusadas en la construcción de

aplicaciones. Cada patrón prescribe una estructura

de clases, sus roles y colaboraciones, y una

adecuada asignación de métodos para resolver un

problema de diseño en una manera flexible y

adaptable.

15/06/2010

Clasificación

Patrones de Creación

Patrones de Estructura

Patrones de

Comportamiento Patrones de Análisis

Patrones de Arquitectura

Patrones de Interfaces

Patrones de Organización

Patrones de Programación

15/06/2010

Características

Son soluciones concretas.

Son soluciones técnicas.

Se utilizan en situaciones frecuentes.

Favorecen la reutilización de código.

El uso de un patrón no se refleja en el

código.

Es difícil reutilizar la implementación de un

patrón.

15/06/2010

Formas de Descripción

Nombre

Intención

Otros Nombres

Motivación

Aplicaciones

Estructura

Participantes

Colaboraciones

Consecuencias

Implementación

Ejemplo

Usos Conocidos

Patrones Relacionados

15/06/2010

Ejemplo 1/7

Nombre: Builder

Intención: Permite a un cliente crear un objeto

especificando tipo y contenido, ocultandose el resto de

detalles.

Otros Nombres: Builder, Creador

Motivación: La creación de objetos o instanciación de

clases es uno de los temas más frecuentes en la

Programación Orientada a Objetos. Este patrón permite

tener una política general para la creación de objetos,

centralizandolo en una clase Builder.

15/06/2010

Ejemplo 2/7

Aplicaciones: Una clase superior Builder se aplica en

la creación de clases menores...

Cuando sea necesario crear y agregar

instancias de clases.

Cuando sea necesario contener múltiples

instancias de clases.

Cuando la clase superior dispone de los datos

necesarios para la clase a instanciar.

15/06/2010

Ejemplo 3/7

Estructura:

DirectorBuilder

RTFbuilder

15/06/2010

Ejemplo 4/7

Colaboraciones:

15/06/2010

Consecuencias:

Reduce el acoplamiento.

Permite variar la representación interna de estructuras

compleja, respetando la interfaz común de la clase

Builder.

Se independiza el código de construcción de la

representación.

Las clases concretas que tratan las representaciones

internas no forman parte de la interfaz del Builder.

Ejemplo 5/7

15/06/2010

Consecuencias:

Cada ConcreteBuilder tiene el código especifico para

crear y modificar una estructura interna concreta.

Distintos Director con distintas utilidades pueden

utilizar el mismo ConcreteBuilder.

Permita un mayor control en el proceso de creación

del objeto.

El Director controla la creación paso a paso, solo

cuando el Builder ha terminado de construir el objeto

lo recupera el Director.

Ejemplo 6/7

15/06/2010

Implementación: El Builder posee un interfaz con

cada operación que se puede realizar, el

ConcreteBuilder implementa esas operaciones.

Usos Conocidos: Tratamiento de diferentes

formatos de archivos. Creación de objetos

complejos independientes de los elementos que lo

componen

Patrones Relacionados: Composite. Director.

Método Factoría.

Ejemplo 7/7

15/06/2010

Patrón Observer

15/06/2010

Patrones de GRASP 1/2

Los patrones GRASP (patrones

de los principios generales para

asignar responsabilidades)

describen los principios

fundamentales de la asignación

de responsabilidades a objetos,

expresados en forma

estructurada.

Libro “ULM y Patrones” de Craig Larman

15/06/2010

Patrones de GRASP 2/2

Patrón Experto

Patrón Creador

Patrón Bajo Acoplamiento

Patrón Alta Cohesión

Patrón Controlador

15/06/2010

Patrón Experto

Problema: ¿Cuál es el principio

fundamental en virtud del cual se asignan

las responsabilidades en el diseño orientado

a objetos?

Solución: Asignar una responsabilidad al

experto en información: la clase que cuenta

con la información necesaria para cumplirla

15/06/2010

Aplicación del Patrón

Experto 1/4

15/06/2010

Aplicación del Patrón

Experto 2/4

15/06/2010

Aplicación del Patrón

Experto 3/4

:Venta vli:VentaLineade

Producto

:VentaLineade

Producto

:Especificacion

deProducto

:Factura

1: t:=total()

2: :[para_cada]vli:=siguiente()

3: st:=subtotal()

4: :p:=precio()

15/06/2010

Aplicación del Patrón

Experto 4/4

Clase: Venta

Responsabilidad: conoce el total de la venta

Clase: VentaLineadeProducto

Responsabilidad: conoce el subtotal de la

línea de producto

Clase: EspecificaciondeProducto

Responsabilidad: conoce el precio del

producto

15/06/2010

Beneficios del Patrón

Experto

Se conserva el encapsulamiento

Bajo acoplamiento

Distribución del comportamiento entre

clases que tienen la información necesaria

para cumplir con una tarea en conjunto

Alta Cohesión

15/06/2010

Patrones de

Arquitectura 1/3

Servidor web +

Autentificación +

Gestión Cookies

http Servidor de

Aplicaciones +

Sesiones

Páginas Servidor

+ Motores del

Servicio

Páginas HTML +

formularios

Navegador +

Cookies

15/06/2010

Páginas HTML +

formularios

http

Servidor de

Aplicaciones +

Sesiones

Páginas Servidor +

Motores del Servicio

Scripts + XML +

XML + Applets +

JavaBeans

Navegador +

Cookies

Servidor web +

Autentificación +

Gestión Cookies

Patrones de

Arquitectura 2/3

15/06/2010

Páginas HTML +

formularios

http

Servidor de

Aplicaciones +

Sesiones

Páginas Servidor +

Motores del Servicio

Scripts + XML +

XML + Applets +

JavaBeans

Navegador +

Cookies

Servidor web +

Autentificación +

Gestión CookiesDCOM +

RMI +

CORBA

Patrones de

Arquitectura 3/3

15/06/2010

Patrones de Interfaz 1/3

Algunos ejemplos son:

Formatos de Fechas

Vista Previa

Scrollbar

Menú Flotante

y muchos más

15/06/2010

Patrones de Interfaz 2/3

15/06/2010

Patrones de Interfaz 3/3

15/06/2010

Procesos de Desarrollo

con PatronesOrganización por Organización en el tiempo

COMPONENTES DE SOPORTE

COMPONENTES DEL PROCESO

Iteraciones

Inicial

Est_Pre For_Pro Eje_Pro Val_Sol

Prep.#1

Prep.#2

Const.#1

Const.#2

Const.#N

Trans.#1

Trans.#2

FASESComponentes

Captura de Requisitos

Análisis

Diseño

Implementación

Pruebas

Puesta en Servicio

Modelado de la Organización

Gestión de Configuración y Cambios

Gestión del Proyecto

Entorno

15/06/2010

Preguntas ?