- Partimos de encontrar los conceptos de nuestro dominio de problema y así efectuar un modelo conceptual donde identificamos las clases que surgen del negocio (nuestros objs. de negocio) y sus asociaciones.
- Luego deberíamos obtener diag. de secuencia del sistema (basados en nuestros CU) donde determinemos los eventos y operaciones del sistema
- En este punto sería importante obtener los "contratos" de los CU, donde se responderá: que hacen las operaciones del sistema?. Mediante la descripción de las postcondiciones de los contratos podemos describir cómo cambia el sistema tras cada operación; esta descripción se realiza en términos de : creación y destrucc. de objetos, asociac. formadas y canceladas y modificac. de atributos.
Conocer
- los datos privados encapsulados
- los objetos relacionados
- las cosas que puedan derivarse ó calcular
Hacer
- algo el mismo: crear un obj. ó hacer un cálculo
- iniciar una acción en otros objs.
- controlar y coordinar actividades en otros objs.
Para asignar responsabilidad a nuestros objs. , hablemos de 3 patrones Grasp: Experto en información, Creador y Controlador. (es.wikipedia.org/wiki/Grasp)
experto en informac.: asignar la resp. a la clase que tiene la informac. necesaria para realizarla. Esto debe hacerse sin generar nuevos acoplamientos, manteniendo la cohesión alta.
creador: asignar a la clase B la resp. de crear un obj. de la clase A si se cumple que:
- B agrega objs. de A
- B contiene objs. de A
- B registra objs. de A
- B usa objs. de A cercanamente (directa)
- B tiene los datos de inicialización que se pasan a un obj. A cuando es creado
Debemos agregar que muy a menudo la creación de un obj. es de alta complejidad, por lo que sería aconsejable delegar la creación a clases auxiliares llamadas "Fábricas" (factorys)
controlador: asignar la resp. de recibir ó gestionar un mensaje de evento del sistema a una clase que:
- represente el sistema global ó subsistema (Fachada)
- represente un escenario de CU en el que tiene lugar el evento (controladora de CU ó sesión)
Tener en cuenta que un controlador debería delegar en otros objs. el trabajo que se necesita hacer, sólo coordina y controla la actividad (compuesta de varias tareas).
Seguimos en el próximo....
No hay comentarios:
Publicar un comentario