patrones de diseño grasp

19
Profesor: Andrés Muñoz Ordenes CC5404 TALLER DE UML

Upload: andres-munoz-ordenes

Post on 17-Aug-2015

245 views

Category:

Documents


0 download

DESCRIPTION

Información básica sobre patrones de diseño GRASP.

TRANSCRIPT

Profesor: Andrs Muoz OrdenesCC5404TALLER DE UMLAgenda Patrones de Diseo GRASP GoFPATRONES DE DISEOSi piensas que los usuarios de tus programas son idiotas, slo los idiotas usarn tus programas (Linus Torvalds)Patrones de Diseo GRASP son patrones generales de software para asignacin de responsabilidades. Es el acrnimo de General Responsibility Assignment Software Patterns". Aunque se considera que ms que patrones propiamente dichos, son una serie de "buenas prcticas" de aplicacin recomendable en el diseo de software.Patrones de Diseo Patrn de Controlador. Solucin: Asignar la responsabilidad de recibir o manejar un mensaje de evento del sistema a una clase que representa una de las siguientes opciones: Representa el sistema global, dispositivo o subsistema (controlador de fachada). Representa un escenario de caso de uso en el que tiene lugar el evento del sistema (controlador de sesin o de caso de uso).Este es nombrado como:Controlador, Manejador o Coordinador Problema: Quin debe ser responsable de gestionar un evento de entrada al sistema?Patrones de Diseo Patrn Experto de Informacin. Solucin: Asignar una responsabilidad al experto en informacin la clase que tiene la informacin necesaria para realizar la responsabilidad. Problema: Quin debera ser el responsable de conocer una informacin particular?Patrones de Diseo Patrn de Creador. Solucin: Asignar la responsabilidad a la clase B de crear instancias de la clase A si cumple uno o ms de los siguientes casos: B agrega objetos de A B contiene objetos de A B registra instancias de objetos de A B utiliza ms estrechamente objetos de A B tiene los datos de inicializacin que se pasar a un objeto de A cuando sea creado Problema: Quin debera ser el responsable de la creacin de una nueva instancia de alguna clase?Patrones de Diseo Patrn de Creador.Patrones de Diseo Patrn de Alta Cohesin. Solucin: Asignar una responsabilidad de manera que la cohesin permanezca alta. Problema: Cmo mantener la complejidad manejable? Cohesin: Informacin que almacena una clase debe de ser coherente y debe estar (en la medida de lo posible) relacionada con la ella. Especializacin de una clase.Patrones de Diseo Patrn de Bajo Acoplamiento. Solucin: Asignar una responsabilidad de manera que el acoplamiento permanezca bajo. Problema: Cmo soportar bajas dependencias, bajo impacto al cambio e incremento de la reutilizacin? Acoplamiento: Tener las clases lo menos ligadas entre s que se pueda. Beneficiar la reutilizacin y mantenibilidad de las clases.Patrones de Diseo Patrones de Alta Cohesin y Bajo Acomplamiento.La alta cohesin se ve en lo especiales que son los mensajes de las clases y el acoplamiento en la cantidad de enlaces que tienen con otros objetosPatrones de Diseo Otros Patrones: Patrn de Polimorfismo Solucin: Cuando una responsabilidad posee varias alternativas para comportamientos similares, se asignarn a los tipos en que el comportamiento presenta las variantes. Problema: Cmo manejar las alternativas basadas en el tipo? Patrn de Fabricacin Pura Solucin: Asignar un conjunto altamente cohesionado de responsabilidades a una clase artificial que no pertenece al dominio. Problema: Quin es el responsable de mantener la alta cohesin y el bajo acoplamiento cuando ya no tenemos ms alternativas en nuestro modelo? Patrn de Indireccin Solucin: Se asigna la responsabilidad a un objeto intermedio, de manera tal que medie entre componentes o servicios para que no terminen directamente acoplados. Problema: De qu manera podemos desacoplar los objetos para as mantener una potencial reutilizacin y un bajo acoplamiento? Quin debe tener la responsabilidad de mediar para mantener la indireccin entre las componentes? Patrn No Hables con Extraos. Solucin: Se asigna la responsabilidad a un objeto directo del cliente para que colabore con un objeto indirecto, de modo que el cliente no necesite saber nada del objeto indirecto. Problema: Quin debe ser el responsable de evitar conocer la estructura de los objetos indirectos?Patrones de Diseo Patrn No Hables con Extraos.En este caso, en la asignacin de la creacin de LDV, usaremos una abstraccin de dicho proceso que llamaremos agregar.3: agregar(p, cant)Patrones de Diseo Patrones GoF: Escrito por los Gang of Four (GoF, que en espaol es la pandilla de los cuatro) formada por Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides. Fueron por los aos 1994, en el libro Design Patterns: Elements of Reusable Object Oriented Software de estos autores Recopilan y documentan 23 patrones de diseo aplicados usualmente por expertos diseadores de software orientado a objetos. Los patrones de diseo el grupo de GoF clasifican en 3 grandes categoras basadas en su propsito: Creacionales Estructurales De ComportamientoPatrones de Diseo Patrones GoF Creacionales: Tratan con las formas de crear instancias de objetos. El objetivo de estos patrones es de abstraer el proceso de instanciacin y ocultar los detalles de cmo los objetos son creados o inicializados: Object Pool (Conjunto de Objetos): Se obtienen objetos nuevos a travs de la clonacin. Utilizado cuando el costo de crear una clase es mayor que el de clonarla. Especialmente con objetos muy complejos. Se especifica un tipo de objeto a crear y se utiliza una interfaz del prototipo para crear un nuevo objeto por clonacin. El proceso de clonacin se inicia instanciando un tipo de objeto de la clase que queremos clonar. Abstract Factory (Fbrica abstracta): Permite trabajar con objetos de distintas familias de manera que las familias no se mezclen entre s y haciendo transparente el tipo de familia concreta que se est usando. Builder (Constructor virtual): Abstrae el proceso de creacin de un objeto complejo, centralizando dicho proceso en un nico punto. Factory Method (Mtodo de fabricacin): Centraliza en una clase constructora la creacin de objetos de un subtipo de un tipo determinado, ocultando al usuario la casustica para elegir el subtipo que crear. Prototype (Prototipo): Crea nuevos objetos clonndolos de una instancia ya existente. Singleton (Instancia nica): Garantiza la existencia de una nica instancia para una clase y la creacin de un mecanismo de acceso global a dicha instancia.Patrones de Diseo Patrones GoF Estructurales: Los patrones estructurales describen como las clases y objetos pueden ser combinados para formar grandes estructuras y proporcionar nuevas funcionalidades. Estos objetos adicionados pueden ser incluso objetos simples u objetos compuestos: Adapter (Adaptador): Adapta una interfaz para que pueda ser utilizada por una clase que de otro modo no podra utilizarla. Bridge (Puente): Desacopla una abstraccin de su implementacin. Composite (Objeto compuesto): Permite tratar objetos compuestos como si de uno simple se tratase. Decorator (Envoltorio): Aade funcionalidad a una clase dinmicamente. Facade (Fachada): Provee de una interfaz unificada simple para acceder a una interfaz o grupo de interfaces de un subsistema. Flyweight (Peso ligero): Reduce la redundancia cuando gran cantidad de objetos poseen idntica informacin. Proxy: Mantiene un representante de un objeto.Patrones de Diseo Patrones GoF de Comportamiento: Los patrones de comportamiento ayudan a definir la comunicacin e iteracin entre los objetos de un sistema. El propsito de este patrn es reducir el acoplamiento entre los objetos: Chain of Responsibility (Cadena de responsabilidad): Permite establecer la lnea que deben llevar los mensajes para que los objetos realicen la tarea indicada. Command (Orden): Encapsula una operacin en un objeto, permitiendo ejecutar dicha operacin sin necesidad de conocer el contenido de la misma. Interpreter (Intrprete): Dado un lenguaje, define una gramtica para dicho lenguaje, as como las herramientas necesarias para interpretarlo. Iterator (Iterador): Permite realizar recorridos sobre objetos compuestos independientemente de la implementacin de estos. Mediator (Mediador): Define un objeto que coordine la comunicacin entre objetos de distintas clases, pero que funcionan como un conjunto. Memento (Recuerdo): Permite volver a estados anteriores del sistema. Observer (Observador): Define una dependencia de uno-a-muchos entre objetos, de forma que cuando un objeto cambie de estado se notifique y actualicen automticamente todos los objetos que dependen de l.Patrones de Diseo Patrones GoF de Comportamiento: Los patrones de comportamiento (cont): State (Estado): Permite que un objeto modifique su comportamiento cada vez que cambie su estado interno. Strategy (Estrategia): Permite disponer de varios mtodos para resolver un problema y elegir cul utilizar en tiempo de ejecucin. Template Method (Mtodo plantilla): Define en una operacin el esqueleto de un algoritmo, delegando en las subclases algunos de sus pasos, esto permite que las subclases redefinan ciertos pasos de un algoritmo sin cambiar su estructura. Visitor (Visitante): Permite definir nuevas operaciones sobre una jerarqua de clases sin modificar las clases sobre las que opera..MUCHAS GRACIAS, HASTA LA PRXIMA