Post on 22-Jan-2016
Patrones GRASPPatrones GRASP
ANALISIS Y DISEÑO O.O. (LCD 2006-1)ANALISIS Y DISEÑO O.O. (LCD 2006-1)
base: Arquitectura de Softwarebase: Arquitectura de SoftwareJulio Carreño / César BustacaraJulio Carreño / César Bustacara
Patrones GRASPPatrones GRASP
General Responsabilities General Responsabilities Assignment Software Patterns Assignment Software Patterns
PATRONESPATRONES
Solución a Problemas recurrentesSolución a Problemas recurrentes Capturar las Mejores Prácticas de DiseñoCapturar las Mejores Prácticas de Diseño NO son siempre la mejor soluciónNO son siempre la mejor solución Facilitan la comunicaciónFacilitan la comunicación BENEFICIOSBENEFICIOS
MantenibilidadMantenibilidad ExtensibilidadExtensibilidad ReestructuraciónReestructuración PortabilidadPortabilidad
CONOCERCONOCER
Información privadaInformación privada Objetos relacionadosObjetos relacionados Lo que puede Lo que puede
derivar/calcularderivar/calcular Ej: Métodos analizadores Ej: Métodos analizadores
"get""get"
HACERHACER
Algo él mismoAlgo él mismo Ejecutar un cálculoEjecutar un cálculo Crear un objetoCrear un objeto Iniciar acciones en otros Iniciar acciones en otros
ObjetosObjetos Controlar/Coordinar Controlar/Coordinar
actividades en otros Objetosactividades en otros Objetos Ej: Métodos modificadores Ej: Métodos modificadores
"set""set"
ExpertoExperto
BENEFICIOBENEFICIO
Conserva el Conserva el EncapsulamientoEncapsulamiento
Bajo AcoplamientoBajo Acoplamiento Alta CohesiónAlta Cohesión
EjemploEjemplo
Asociaciones de VentaAsociaciones de Venta Calculo Total de la VentaCalculo Total de la Venta Métodos a implementarMétodos a implementar
Ejemplo: ExpertoEjemplo: Experto
Asociaciones de VentaAsociaciones de Venta
Ejemplo: ExpertoEjemplo: Experto
Calculo Total de la VentaCalculo Total de la Venta
Ejemplo: ExpertoEjemplo: Experto
Métodos a implementarMétodos a implementar
CreadorCreador
El Objeto B tiene la El Objeto B tiene la responsabilidad de tener un responsabilidad de tener un método para creación de objetos A método para creación de objetos A si...si...
B agrega objetos AB agrega objetos A B contiene objetos AB contiene objetos A B registra objetos AB registra objetos A B usa exhaustivamente B usa exhaustivamente
objetos Aobjetos A B posee info para iniciar AB posee info para iniciar A
BENEFICIOBENEFICIO
Bajo AcoplamientoBajo Acoplamiento
Ejemplo: CreadorEjemplo: Creador
Agregar Items de VentaAgregar Items de Venta
Bajo AcoplamientoBajo Acoplamiento
¿Cómo soportar bajo grado ¿Cómo soportar bajo grado de dependencia entre clases?de dependencia entre clases?
Modelo DESCENTRALIZADO Modelo DESCENTRALIZADO (ver dos objetos a lo mas!)(ver dos objetos a lo mas!)
Para clases que cambian Para clases que cambian constantemente...constantemente...
Para reutilización!Para reutilización!
BENEFICIOBENEFICIO
No se afectan por cambios No se afectan por cambios en otros componentesen otros componentes
Fáciles de entender por Fáciles de entender por separadoseparado
Fáciles de reutilizarFáciles de reutilizar
Ejemplo: Bajo AcoplamientoEjemplo: Bajo Acoplamiento
Diseño DescentralizadoDiseño Descentralizado Diseño CentralizadoDiseño Centralizado Propuesta Solución UNOPropuesta Solución UNO Propuesta Solución DOSPropuesta Solución DOS
Ejemplo: Bajo AcoplamientoEjemplo: Bajo Acoplamiento
Diseño DescentralizadoDiseño Descentralizado
Ejemplo: Bajo AcoplamientoEjemplo: Bajo Acoplamiento
Diseño CentralizadoDiseño Centralizado
Ejemplo: Bajo AcoplamientoEjemplo: Bajo Acoplamiento
Propuesta Solución UNOPropuesta Solución UNO
Ejemplo: Bajo AcoplamientoEjemplo: Bajo Acoplamiento
Propuesta Solución DOSPropuesta Solución DOS
Alta CohesiónAlta Cohesión
BENEFICIOBENEFICIO
Mejoran la claridad del Mejoran la claridad del DiseñoDiseño
Simplificación del cambioSimplificación del cambio Genera bajo acoplamientoGenera bajo acoplamiento Facilita la reutilizaciónFacilita la reutilización
EjemploEjemplo
Alta CohesiónAlta Cohesión Baja CohesiónBaja Cohesión
Ejemplo: Alta CohesiónEjemplo: Alta Cohesión
Alta CohesiónAlta Cohesión
Ejemplo: Alta CohesiónEjemplo: Alta Cohesión
Baja CohesiónBaja Cohesión
ControladorControlador
Un coordinador... (por caso de Un coordinador... (por caso de uno!)uno!)
Que representa el sistema: Que representa el sistema: FACHADA!FACHADA!
Que representa un rol Que representa un rol activo: TAREAS!activo: TAREAS!
Un manejador artificial: Un manejador artificial: SESSION!SESSION!
BENEFICIOBENEFICIO
Mayor potencial de los Mayor potencial de los Componentes reutilizablesComponentes reutilizables
EjemploEjemplo
Opciones de ControladorOpciones de Controlador Solución DeseableSolución Deseable No muy buena SoluciónNo muy buena Solución
Ejemplo: ControladorEjemplo: Controlador
Opciones de ControladorOpciones de Controlador
Ejemplo: ControladorEjemplo: Controlador
Solución DeseableSolución Deseable
Ejemplo: ControladorEjemplo: Controlador
No muy buena SoluciónNo muy buena Solución
FachadaFachada
EjemploEjemplo
FachadaFachada
Patrones GRASPPatrones GRASP