Asignación de responsabilidades de los objetos

A continuación se debe asignar al diagrama de colaboración las responsabilidades de los objetos, para ello se sabe que en el contexto donde se deben considerar estas responsabilidades siempre es durante la creación de estos diagramas.

Para hacerlo existe un conjunto de patrones de asignación de responsabilidades de los objetos llamado GRASP de las siglas General Responsability Assignment Software Pattern, éstos constituyen un apoyo para la enseñanza y el entendimiento del diseño de objetos.

Un patrón es una descripción de un problema y su solución, es decir, es la pareja del problema y su solución, con un nombre aplicable a otros contextos y con la sugerencia respectiva en caso de utilizarse en situaciones nuevas.

El objetivo de los patrones intenta codificar el conocimiento, las expresiones y los principios ya existentes.

Los cinco patrones de GRASP son los siguientes:

Experto en Información: Expresa la intuición común de que los objetos hacen las cosas relacionadas con la información que tienen.

El experto asigna una responsabilidad a la clase que tiene la información para realizarla.

El cumplimiento de esta responsabilidad requiere de información dispersa por diferentes clases de objetos, por lo que será necesario el apoyo de varios expertos que colaboran en la tarea.

Creador: Asigna a la clase B la responsabilidad de crear una instancia de la clase A si se cumple u no o más de los casos: B agrega objetos a A, B contiene objetos de A, B registra instancias de objetos de A, B utiliza objetos de A, B tiene datos de inicialización que se pasarán al objeto A.

Este patrón tiene la intención de encontrar un creador que necesite conectarse al objeto creado, favoreciendo al bajo acoplamiento.

Bajo Acoplamiento: El acoplamiento es una medida de la fuerza con que un elemento depende de otros elementos (clases, subsistemas, sistemas, etc.) puede ser su relación o su conocimiento.

El objetivo es evitar que los cambios efectuados a una clase no tengan efectos en otras, facilite la comprensión de clases y facilite la reutilización de las mismas.

La intención del patrón es manejar un bajo acoplamiento en las decisiones de diseño.

Alta Cohesión: La cohesión es una medida de la fuerza con la que se relacionan las responsabilidades de un elemento, un elemento que tiene responsabilidades altamente relacionadas y que no hace gran cantidad de trabajo, tiene alta cohesión.

Una clase de baja cohesión es difícil de entender, de reutilizar, de mantener y son afectadas por los cambios. La intención del patrón es manejar una alta cohesión en las decisiones de diseño.

Controlador: Asigna la responsabilidad de recibir o de manejar un mensaje del sistema a una clase que representa el sistema en global, o un escenario de
caso de uso en el que tiene lugar el evento del sistema. La intención del patrón es guiar para identificar los eventos del sistema.

Para ejemplificar tenemos los siguientes patrones experto s o parejas de problema/solución, considerados en el diagrama de colaboración del cuadro 5.3

Problema: ¿Quién es el responsable de calcular el total de la ven ta?

Solución: Debe examinarse el Modelo conceptual.

Problema: ¿Qué información se requiere para calcular el total?

Solución: Hay que conocer todas las instancias ventas Línea De Producto de una venta, la suma de sus subtotales.

Con estos elementos, se puede asignar responsabilidades a las clases involucradas como venta, venta Línea de Producto y Especificación de Producto como sigue:

Clase-responsabilidad

Que visto en el diagrama de colaboración sería de la siguiente forma:

Asignación de responsabilidades en diagrama de colaboración

Fuente: Apuntes de Informática V de la FCA de la UNAM