ANALISIS Y DISEÑO O.O. (LCD 2006-1) Patrones GRASP ANALISIS Y DISEÑO O.O. (LCD 2006-1) base: Arquitectura de Software Julio Carreño / César Bustacara
Patrones GRASP
General Responsabilities Assignment Software Patterns
PATRONES Solución a Problemas recurrentes Capturar las Mejores Prácticas de Diseño NO son siempre la mejor solución Facilitan la comunicación BENEFICIOS Mantenibilidad Extensibilidad Reestructuración Portabilidad
CONOCER Información privada Objetos relacionados Lo que puede derivar/calcular Ej: Métodos analizadores "get"
HACER Algo él mismo Ejecutar un cálculo Crear un objeto Iniciar acciones en otros Objetos Controlar/Coordinar actividades en otros Objetos Ej: Métodos modificadores "set"
Experto
BENEFICIO Conserva el Encapsulamiento Bajo Acoplamiento Alta Cohesión
Ejemplo Asociaciones de Venta Calculo Total de la Venta Métodos a implementar
Ejemplo: Experto Asociaciones de Venta
Ejemplo: Experto Calculo Total de la Venta
Ejemplo: Experto Métodos a implementar
Creador
El Objeto B tiene la responsabilidad de tener un método para creación de objetos A si... B agrega objetos A B contiene objetos A B registra objetos A B usa exhaustivamente objetos A B posee info para iniciar A
BENEFICIO Bajo Acoplamiento
Ejemplo: Creador Agregar Items de Venta
Bajo Acoplamiento
¿Cómo soportar bajo grado de dependencia entre clases? Modelo DESCENTRALIZADO (ver dos objetos a lo mas!) Para clases que cambian constantemente... Para reutilización!
BENEFICIO No se afectan por cambios en otros componentes Fáciles de entender por separado Fáciles de reutilizar
Ejemplo: Bajo Acoplamiento Diseño Descentralizado Diseño Centralizado Propuesta Solución UNO Propuesta Solución DOS
Ejemplo: Bajo Acoplamiento Diseño Descentralizado
Ejemplo: Bajo Acoplamiento Diseño Centralizado
Ejemplo: Bajo Acoplamiento Propuesta Solución UNO
Ejemplo: Bajo Acoplamiento Propuesta Solución DOS
Alta Cohesión
BENEFICIO Mejoran la claridad del Diseño Simplificación del cambio Genera bajo acoplamiento Facilita la reutilización
Ejemplo Alta Cohesión Baja Cohesión
Ejemplo: Alta Cohesión
Ejemplo: Alta Cohesión Baja Cohesión
Controlador
Un coordinador... (por caso de uno!) Que representa el sistema: FACHADA! Que representa un rol activo: TAREAS! Un manejador artificial: SESSION!
BENEFICIO Mayor potencial de los Componentes reutilizables
Ejemplo Opciones de Controlador Solución Deseable No muy buena Solución
Ejemplo: Controlador Opciones de Controlador
Ejemplo: Controlador Solución Deseable
Ejemplo: Controlador No muy buena Solución
Fachada
Ejemplo Fachada
Patrones GRASP