7/23/2019 Unidad 2E Metodologia Con POO
1/41
1
Unidad IIDiseo de Solucin
Diseo de Objetos conResponsabilidad
Parte 5
7/23/2019 Unidad 2E Metodologia Con POO
2/41
2
Patrones GRASPSon patrones de principios generales para asignar
responsabilidades
Los primeros cinco patrones son:
Experto en Informacin (Experto)Creador
Alta Cohesin
Bajo AcoplamientoControlador
7/23/2019 Unidad 2E Metodologia Con POO
3/41
3
Patrn: Experto
(Experto en Informacin)Problema: Cul es el principio general para
asignar responsabilidades a los objetos?
Solucin: asignar una responsabilidad al expertoen la informacin, es decir, la clase que tiene lainformacin necesaria para realizar esa
responsabilidad
7/23/2019 Unidad 2E Metodologia Con POO
4/41
4
Patrn: Experto
Ejemplo de AplicacinResponsabilidad:Conocer el total de la venta
1. Iniciar la asignacin de responsabilidadesestableciendo claramente la responsabilidad
Quin debera ser el responsable de conocer el
total de una venta?2. Determinar que informacin se necesita para
determinar el total
1. Conocer todas las instancias de LineaDeVenta2. Sumar los subtotales de cada lnea de venta
7/23/2019 Unidad 2E Metodologia Con POO
5/41
5
Patrn: Experto
Ejemplo de Aplicacin3. Siguiendo el patrn Experto en informacin
buscar las clases de objetos que contengan lainformacin necesaria para determinar el total
Observar el Modelo del Dominio o el Modelo deDiseoSi hay clases relevantes en el Modelo de Diseo,observar primero ah
Sino, observar el Modelo del Dominio
7/23/2019 Unidad 2E Metodologia Con POO
6/41
6
Patrn: Experto
Ejemplo de AplicacinAl iniciar el trabajo de diseo, el Modelo de
Diseo (Diagrama de Clases) es mnimo,por lo que se buscan los Expertos enInformacin en el Modelo del Dominio
7/23/2019 Unidad 2E Metodologia Con POO
7/41
7
7/23/2019 Unidad 2E Metodologia Con POO
8/41
8
Patrn: Experto
Ejemplo de AplicacinVenta contiene todas sus lneas de venta, por
lo tanto, la clase Venta es adecuada para estaresponsabilidad
Venta es un experto en informacin para el
trabajo
7/23/2019 Unidad 2E Metodologia Con POO
9/41
9
Patrn: Experto
Ejemplo de Aplicacin4. Agregar una clase de SW al modelo de diseo
con el mismo nombre Venta, y se le asigna laresponsabilidad de conocer su total (getTotal)
7/23/2019 Unidad 2E Metodologia Con POO
10/41
10
Patrn: Experto
Ejemplo de AplicacinQu informacin se necesita para obtener el
subtotal de cada lnea de venta?LineaDeVenta.cantidadEspecificacionDelProducto.precio
LineaDeVenta conoce su cantidad y laespecificacin del producto asociada
Siguiendo el patrn Experto en Informacin,
LineaDeVenta debera determinar el subtotal
7/23/2019 Unidad 2E Metodologia Con POO
11/41
11
Patrn: Experto
Ejemplo de Aplicacin
En un diagrama de interaccin,Venta necesita enviar unmensaje getSubtotal a cada
una de sus lneas de venta ysumar el resultado
*
7/23/2019 Unidad 2E Metodologia Con POO
12/41
12
Patrn: Experto
Ejemplo de AplicacinQu informacin necesita conocer
LineaDeVenta para proporcionar el subtotal?Su cantidad
El precio del producto
EspecificacionDelProducto es el Experto en
Informacin que proporciona su precio
Se le debe enviar un mensaje solicitando su precio
7/23/2019 Unidad 2E Metodologia Con POO
13/41
13
Patrn: Experto
Ejemplo de Aplicacin
*
7/23/2019 Unidad 2E Metodologia Con POO
14/41
14
Patrn: Experto
Ejemplo de AplicacinResponsabilidad: Conocer el total de una venta
Clases de diseo y responsabilidades asignadas alelaborar el diagrama de interaccin
Venta: conocer el total de la ventaLineaDeVenta: conocer el subtotal de la lnea deventa
EspecificacionDelProducto: conocer el precio delartculo
Principio aplicado:Experto en Informacin
7/23/2019 Unidad 2E Metodologia Con POO
15/41
15
Patrn: CreadorProblema: Quin debera ser el responsable de lacreacin de una nueva instancia de alguna clase?
Solucin: asignar a la clase B la responsabilidad
de crear instancias de la clase A si se cumple unoo ms de los casos siguientes:B agrega objetos de A
B contiene objetos de AB registra objetos de A
B utiliza ms estrechamente objetos de A
7/23/2019 Unidad 2E Metodologia Con POO
16/41
16
Patrn: Creador
Ejemplo de AplicacinB tiene los datos de inicializacin que se pasarn a unobjeto A cuando sea creado (B es un Experto con
respecto a la creacin de A)B es creador de objetos de A
Ejemplo: Quin debera crear una LineaDeVenta?
1. Siguiendo el patrn creador, buscar clases queagregan, contienen, registran, etc.; objetos de la
LineaDeVenta
7/23/2019 Unidad 2E Metodologia Con POO
17/41
17
Patrn: Creador
Ejemplo de Aplicacin
Venta contiene (agrega) muchos objetos de
LineaDeVenta
7/23/2019 Unidad 2E Metodologia Con POO
18/41
18
Patrn: Creador
Ejemplo de Aplicacin2. Disear interacciones
7/23/2019 Unidad 2E Metodologia Con POO
19/41
19
Patrn: Bajo AcoplamientoProblema: Cmo soportar bajas dependencias,bajo impacto del cambio e incremento de lareutilizacin?
Solucin: Asignar una responsabilidad de maneraque el acoplamiento permanezca bajo
7/23/2019 Unidad 2E Metodologia Con POO
20/41
20
AcoplamientoConceptoEs una medida de la fuerza con que un elemento est
conectado a, tiene conocimiento de, confa en, otros
elementos
Tipos
Bajo (o dbil) acoplamiento no depende de demasiadosotros elementos (clases, subsistemas, sistemas, etc.)
Alto (o fuerte) acoplamiento confa en muchas otrasclases. Problemas que surgen:
Cambios a clases relacionadas fuerzan cambios locales Difciles de entender de manera aislada
Difciles de reutilizar puesto que su uso requiere lapresencia adicional de las clases de las que depende
7/23/2019 Unidad 2E Metodologia Con POO
21/41
21
Patrn: Bajo Acoplamiento
Ejemplo de AplicacinResponsabilidad: crear una instancia de Pagoyasociarla con la Venta
Qu clase debera ser la responsable de esto?Patrn Creador sugiere que sea Registro, ya queRegistroregistra un Pago.
1 Opcin: Registro acopla Pago
7/23/2019 Unidad 2E Metodologia Con POO
22/41
22
Patrn: Bajo Acoplamiento
Ejemplo de AplicacinAsignar a Registrola responsabilidad anterior,acopla la clase Registrocon el conocimiento de la
clase Pago.
Solucin alternativa:Ambos casos asumen que la Ventadebe acoplarse alconocimiento del Pago
2. Opcin, Registrono acopla el conocimiento delPago
7/23/2019 Unidad 2E Metodologia Con POO
23/41
23
2. Opcin: Registro no acopla Pago
7/23/2019 Unidad 2E Metodologia Con POO
24/41
24
Patrn: Alta CohesinProblema: Cmo mantener la complejidadmanejable?
Solucin: Asignar una responsabilidad de manera
que la cohesin permanezca alta
Cohesin funcional: es una medida de la fuerza
con la que se relacionan y del grado defocalizacin de las responsabilidades de unelemento
7/23/2019 Unidad 2E Metodologia Con POO
25/41
25
Patrn: Alta CohesinClase con Baja Cohesin: hace muchas cosas norelacionadas, o demasiado trabajo
Clase con Alta Cohesin: tiene responsabilidades
altamente relacionadas, y no hace gran cantidadde trabajo.
7/23/2019 Unidad 2E Metodologia Con POO
26/41
26
Alta Cohesin.
Ejemplo de AplicacinResponsabilidad: crear una instancia de
Pagoy asociarla con la Venta
Qu clase debera ser la responsable de
esto?
Patrn Creador sugiere que sea Registro, yaque Registroregistra un Pago.
7/23/2019 Unidad 2E Metodologia Con POO
27/41
27
Alta Cohesin.
Ejemplo de Aplicacin
7/23/2019 Unidad 2E Metodologia Con POO
28/41
28
Alta Cohesin.
Ejemplo de AplicacinLa asignacin de responsabilidad anterior sita laresponsabilidad de realizar un pago en el Registro
Si el sistema posee 50 operaciones, todas recibidas
por Registro, y hace todo el trabajo relacionada concada una, se convertir en un objeto saturado y sincohesin.
Crear pago no hace el Registrocohesivo, pero sesobrecargar incrementalmente con tareas y llegar
a perder cohesin
7/23/2019 Unidad 2E Metodologia Con POO
29/41
29
Alta Cohesin.
Ejemplo de AplicacinSolucin alternativa:
Responsabilidad asignada a la clase Venta
Soporta Alta Cohesin y Bajo Acoplamiento
7/23/2019 Unidad 2E Metodologia Con POO
30/41
30
Diferentes grados de
cohesin funcionalMuy baja cohesin:
Una clase es responsable de muchas cosas en reasfuncionales muy diferentes
Ejemplo: Interfaz_BDR_RPC, responsable de acceso aDB y administrar las llamadas de procedimiento
remotosBaja cohesin:
Una clase tienen la responsabilidad de una tarea
compleja en un rea funcionalEjemplo: Interfaz_BDR, implementa muchas mtodosrelacionados pero similares
7/23/2019 Unidad 2E Metodologia Con POO
31/41
31
Diferentes grados de
cohesin funcionalAlta cohesin:
Una clase tiene una responsabilidad moderada en un
rea funcional y colabora con otras clases para llevar acabo las tareas
Ejemplo: Interfaz_BDRinteracta con todas las clasespersistentes
Moderada cohesin:Una clase tiene responsabilidades ligeras y nicas enunas pocas reas diferentes que estn lgicamente
relacionadas con el concepto de la clase, pero no entreellas
Ejemplo: Compaa, responsable de conocer a susempleados y conocer su informacin financiera
7/23/2019 Unidad 2E Metodologia Con POO
32/41
32
Patrn: ControladorProblema: Quin debe ser el responsable degestionar un evento de entrada al sistema?
Nota: Los elementos de la interfaz de usuario,
como por ej. Ventana, Applet, Vista,Documento; no abordan las tareas relacionadascon los eventos del sistema, slo reciben loseventos y los delegan a un Controlador
7/23/2019 Unidad 2E Metodologia Con POO
33/41
33
Patrn: ControladorSolucin: Asignar la responsabilidad de recibir omanejar un mensaje de evento del sistema a unaclase que representa una de las siguientesopciones:
El sistema global, dispositivo o subsistema (Controlador
de Fachada)Un escenario de caso de uso en el que tiene lugar elevento del sistema, se denomina con el nombre del
caso de uso, por ej. ProcesarVentaManejador,(Controlador de sesin o caso de uso)
7/23/2019 Unidad 2E Metodologia Con POO
34/41
34
Patrn: ControladorControlador: Objeto que no pertenece a la interfazde usuario, responsable de recibir o manejar unevento del sistema.
Quin debera ser el responsable de los eventosde este sistema?
C t l d
7/23/2019 Unidad 2E Metodologia Con POO
35/41
35
Controlador.
Ejemplo de Aplicacin- representa el sistema
global, dispositivo o
subsistema
Registro, SistemaCDV
- representa un receptor
o manejador de todoslos eventos del sistema
de un escenario de caso
de uso
ProcesarVentaManejador,
ProcesarVentaSesion
C t l d
7/23/2019 Unidad 2E Metodologia Con POO
36/41
36
Controlador.
Ejemplo de Aplicacin
C t l d
7/23/2019 Unidad 2E Metodologia Con POO
37/41
37
Controlador.
Ejemplo de AplicacinDos alternativas posibles son:
P d i ti
7/23/2019 Unidad 2E Metodologia Con POO
38/41
38
Puede existir
uno o mscontroladores
7/23/2019 Unidad 2E Metodologia Con POO
39/41
39
Detalle demtodos/operaciones
Controlador Saturado
7/23/2019 Unidad 2E Metodologia Con POO
40/41
40
Controlador Saturado
(demasiadas responsabilidades)Opciones para evitar un controlador saturado:1. Agregar ms controladores, por ej.:
1. RealizarReservaManejador
2. GestionarHorariosManejador
3. GestionarTarifasManejador
2. Disear un controlador que delegue la responsabilidadde cumplir las tareas a otros objetos
Controlador
7/23/2019 Unidad 2E Metodologia Con POO
41/41
41
Controlador.
Ejemplo de Aplicacin