• No se han encontrado resultados

Clase: Uso de patrones de arquitectura

N/A
N/A
Protected

Academic year: 2020

Share "Clase: Uso de patrones de arquitectura"

Copied!
37
0
0

Texto completo

(1)

Uso de patrones de

arquitectura

Profesor Pedro Veloso Hernández

Master Ingeniería de Software

(2)

¿ que es un Patrón de diseño?

Los patrones de diseño (design patterns) son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.

Un patrón de diseño es una solución a un problema de diseño.

Para que una solución sea considerada un patrón debe poseer ciertas características. Una de ellas es que debe haber comprobado su

efectividad resolviendo problemas similares en ocasiones anteriores. Otra es que debe ser reusable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias.

Los escaladores usan a menudo patrones de diseño, usado Arneses, cuerdas, mosquetones, que usan dadas ciertas Condiciones de soporte, forma, y para situaciones que deben Resolver como : salvataje, cruzar dos personas en un solo Intento, saltarse una gran roca, etc.

Fuente Wikipedia

"Each pattern describes a problem which occurs over

and over again in our environment, and then describes the core

of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice" [AIS+77].

(3)

¿ que es un patrón UML?

Los patrones UML son colaboraciones parametrizadas

, esto es , son un grupo de clases/objetos

colaborando entre sí que se pueden abstraer de un

conjunto de escenarios general.

Los patrones son un medio excelente para lograr

reutilización y desarrollo robusto.

A medida que los patrones se descubren en todo

(4)

Condiciones para usar un patrón

UML

Los patrones generalmente describen cómo

resolver un problema abstracto y la tarea

del usuario del patrón consiste en modificar

los elementos del patrón para cumplir las

demandas del compromiso actual.

Antes de comenzar a usar un patrón

primero debe ser creado como un diagrama

estándar de UML o existir como tal en

(5)

Vamos a un ejemplo

(6)

Cuando “ no” usar patrones de

diseño

Del mismo modo que no es aconsejable optimizar

prematuramente, no se deben utilizar patrones de

diseño antes de tiempo.

Seguramente sea mejor implementar algo primero y

asegurarse de que funciona

, para luego utilizar el

patrón de diseño para mejorar las flaquezas; esto es

cierto, sobre todo, cuando aún no ha identificado

todos los detalles del proyecto ( comprensión del

dominio del problema)

Los patrones de diseño pueden incrementar o

(7)

¿ que familias de patrones de

diseño utilizaremos?

Para este curso, usaremos dos familias

de patrones de diseño propuestos en la

bibliografía sugerida. Cabe destacar que

existen muchas familias de patrones de

diseño, por lo que nos basaremos en los

mas usados, en función del objetivo que

nos hemos planteado en este curso.

(8)

Descripción de familias de patrones

GRASP :

son patrones generales de

software para asignación de

responsabilidades, es el acrónimo de

"General Responsibility Assignment

Software Patterns" .

son una serie de "buenas prácticas" de

aplicación recomendable en el diseño de

software.

(9)

Descripción de familias de

patrones

GOF:

Es la abreviación del grupo Gang of

Four, compuesto por Erich Gamma, Richard

Helm, Ralph Jhonson y John Vlisides,

quienes en su publicación “ Design

Patterns” ( década de los 90s), describen

23 patrones de diseño comúnmente

utilizados y de gran aplicabilidad en

problemas de diseño usando modelamiento

UML.

(10)

Relación de familias de patrones de

diseño

PATRONES

GOF

GRASP

Experto

Creador

Bajo acoplamiento

Alta Cohesión

Controlador

Creacionales

Estructurales

Comportamiento

Fabrica, constructor, método de fabricación, prototipo ,

instancia única

Adaptador, puente, objeto Compuesto, envoltorio, fachada,

Peso ligero, proxy Cadena responsabilidad, orden, Intérprete, iterador, mediador, recuerdo,

(11)
(12)

Experto

El GRASP de experto en información es el

principio básico de asignación de

responsabilidades en diseño O.O.

Nos indica que la responsabilidad de la

creación de un objeto debe recaer sobre la

clase que conoce toda la información

necesaria para crearlo.

Nótese, que el cumplimiento de una

responsabilidad requiere a menudo

(13)

Ejemplo del patrón experto

Ejemplo

En la aplicación del punto de venta, alguna clase necesita conocer el gran total de la venta. Comience asignando las responsabilidades con una definición clara de ellas. A partir de esta recomendación se plantea la pregunta:

¿Quién es el responsable de conocer el gran total de la venta?

Desde el punto de vista del patrón Experto, deberíamos buscar la clase De objetos que posee la información necesaria para calcular el total.

En conclusión, para cumplir con la responsabilidad de conocer y dar el total de la venta, se asignaron tres responsabilidades a las tres clases

de objeto así:

Venta ( conoce total de la venta)

Ventaslineaproductos ( conoce subtotal de la linea de productos)

(14)

Creador

El patrón creador nos ayuda a identificar quién

debe ser el responsable de la creación (o

instanciación) de nuevos objetos o clases.

El patrón Creador guía la asignación de

responsabilidades relacionadas con la creación de

objetos, tarea muy frecuente en los sistemas

orientados a objetos.

El propósito fundamental de este patrón es

encontrar un creador que debemos conectar con el

objeto producido en cualquier evento.

(15)

Ejemplo patrón creador

Ejemplo

En la aplicación del punto de venta, ¿quién Debería encargarse de crear una Instancia VentasLineadeProducto?

Desde el punto de vista del patrón Creador, deberíamos buscar una clase que agregue, contenga y realice otras operaciones sobre este tipo de instancias

Una Venta contiene (en realidad, agrega) muchos objetos VentasLineadeProducto; por ello, el patrón Creador sugiere que

Venta es idónea para asumir la

responsabilidad de crear las instancias VentasLineadeProducto.

(16)

Bajo acoplamiento

Es la idea de tener las clases lo menos ligadas entre

sí que se pueda. De tal forma que en caso de

producirse una modificación en alguna de ellas, se

tenga la mínima repercusión posible en el resto de

clases, potenciando la reutilización, y disminuyendo

la dependencia entre las clases

(17)

Ejemplo bajo acoplamiento

Ejemplo: En el caso del punto de Ventas se tienen tres clases

Pago, TPDV y Venta y se quiere crear una instancia de Pago y asociarla a Venta.

¿Que clase es la responsable de realizarlo?

Según el patrón de Bajo

Acoplamiento la relación debería ser a través de TPDV.

Esta última asociación es mejor Dado que Venta realiza la

(18)

Alta Cohesión

Nos dice que la información que almacena una

clase debe de ser coherente y está en la

mayor medida de lo posible relacionada con la

clase.

La cohesión es una medida de cuán

relacionadas y enfocadas están las

responsabilidades de una clase.

Una clase con alta cohesión, compartirá la

responsabilidad de una operación, con otras

clases

Una clase con baja cohesión, concentrará las

responsabilidades de una o muchas

(19)

Ejemplo alta cohesión

Ejemplo: En el caso

del punto de ventas

se tienen tres clases

Pago, TPDV y Venta y

se quiere crear una

instancia de Pago y

asociarla a Venta.

Este diseño delega a Venta la responsabilidad de crear el pago.

Este diseño es conveniente ya que da soporte a una alta cohesión y a

un bajo acoplamiento.

¿Qué pasa si el sistema tiene 50 operaciones, todas recibidas por la clase TPDV ?

(20)

Controlador

El patrón controlador es un patrón que sirve como

intermediario entre una determinada interfaz y el

algoritmo que la implementa, de tal forma que es la

que recibe los datos del usuario y la que los envía a

las distintas clases según el método llamado.

Este patrón sugiere que la lógica de negocios debe

estar separada de la capa de presentación, esto para

aumentar la reutilización de código y a la vez tener un

mayor control.

(21)

Ejemplo de controlador

Por ejemplo, cuando un

cajero que usa un sistema

de Terminal en el punto

de venta oprime el botón

"Terminar Venta”, está

generando un evento

sistémico que indica que

“la venta ha terminado

Nótese que la clase TPDVApplet - parte de la capa

de presentación - transmite un mensaje introducirProducto al objeto TPDV.

(22)
(23)

Creacionales

1.-Fabrica abstracta (Abstract Factory) : Proporciona un interfaz para crear las familias de objetos relacionados o dependientes sin especificar sus clases concretas.

2.-Constructor (Builder): Separa la construcción de un objeto complejo de su representación , de modo que el mismo proceso de construcción pueda crear representaciones diferentes.

3.-Método fabricación(Factory Method) : Define un interfaz para crear un objeto, pero dejar a subclases decidir sus instancias . El Método De la fábrica deja a una clase la creación de ejemplares o copias a subclases.

4.-Prototipo(Prototype) : Crea nuevos objetos creándolos de una instancia ya existente.

(24)

Estructurales

6.-Adaptador (adapter) :Convierte la interfaz de una clase en otra interfaz que otra clase puede usar . debido a que la interfaces es incompatibles con dicha clase

7.-Puente ( bridge) :Desacopla una abstracción de su implementación de modo que los dos puedan variar por separado.

8.-Peso ligero (Flyweight ) :Reduce la redundancia cuando gran cantidad de objetos poseen idéntica información.

9.-Fachada (Facade) : Proporciona un interfaz unificada a un juego de interfaces en un subsistema. La fachada define un interfaz de nivel más alto que hace el subsistema fácil de usar.

10.-Envoltorio (Decorator) :Adjunta responsabilidades adicionales a un objeto dinámicamente. Los decoradores proporcionan una alternativa

flexible a la subclasificación para ampliar la funcionalidad.

11.-Objeto compuesto (Composite) :El objeto compuesto permite tratar a jerarquías de objetos en individuales y composiciones de objetos uniformemente como si se tratase de objetos simples

(25)

Comportamiento

13.-Cadena responsabilidad (Chain of Responsibility ): Encadena los objetos de encubrimiento y pasa la petición a lo largo de la cadena hasta que un objeto la maneja. Permite establecer la línea que deben llevar los mensajes para que los objetos realicen la tarea indicada.

14.-Orden (Command) : Encapsula una operación en un objeto, permitiendo ejecutar dicha operación sin necesidad de conocer el contenido de la misma.

15.-Intérprete (Interpreter) :Considerando un lenguaje , define un

representación para su gramática con un intérprete que usa la representación para interpretar sentencias en el mismo lenguaje.

16.-Iterador (Iterator) :Proporciona un modo de tener acceso a los elementos de un objeto agregado secuencialmente sin exponer su representación subyacente.

17.-Mediador (Mediator) :Define un objeto que coordine la comunicación entre objetos de distintas clases, pero que funcionan como un conjunto.

(26)

Comportamiento

19.-Observador (Observer) : Define de uno a varios la dependencia entre objetos de modo que cuando se produce un cambio de estado del objeto, todos sus dependientes sean

notificados y puestos al día automáticamente.

20-Estado (State) :Permite que un objeto modifique su comportamiento cada vez que cambie su estado interno

21.-estrategia (Strategy) : Define una familia de algoritmos ( métodos ), encapsula cada uno, y los hace permutables. La

estrategia deja al algoritmo ( método ) variar por separado de los clientes ( objetos ) que lo usan o invocan .

22.-método plantilla ( template method) :Define el esqueleto de un algoritmo en una operación, aplazando algunos pasos a

subclases. El Método de Plantilla deja a subclases redefinir los ciertos pasos de un algoritmo sin cambiar la estructura del algoritmo.

(27)

Patrones gof

(28)

Patrones gof

(29)

Patrones gof

(30)

Patrones gof

(31)

Patrones gof

(32)

Patrones gof

(33)

Patrones gof

(34)

Patrones gof

(35)

Patrones gof

(36)

Patrones gof

(37)

Bibliografía

UML y patrones ;Craig Larman.

Desingn Patterns; Gamma,

Helm,johnson,vlissides.

Referencias

Documento similar

A continuación tras la presentación de los patrones generales se detallan los patrones específicos, se aborda la selección o uso preferente de cada una de las especies

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

Patrones de tensión, resistencia eléctrica y medidas criogénicas a) Patrones primarios eléctricos basados en el Efecto Hall cuántico. b) Patrón de relación de corriente basado en

Para implementar las comunicaciones entre las aplicaciones Java y Matlab se han utilizado las funciones del paquete java.net (implementación en Java) y de la

La Encuesta se realiza siguiendo las directrices metodológicas definidas en el Manual de Oslo (OCDE, 1997). A pesar de que el INE ha continuado elaborando la Encues- ta para los

Se obtuvieron luego de realizar las encuestas tomando en cuenta los criterios de exclusión y tabulando los datos proporcionados por los pobladores, según los patrones

Este es el primer reporte donde se muestra que este ácaro tiene ciclos de agregación variables asociados con la dinámica de precipitación y etapas fenológicas específicas

El fenómeno del cuidado, emerge como necesidad la simbiosis entre el proceso de enfermería y su transcendencia en la investigación científica a través de la enfermería basada