2.5.3 Colaboraciones

Los objetos necesitan colaborar 

Se requieren objetos para realizar la conducta especificada en los escenarios de los casos de uso. Los objetos deben colaborar en conjunto para implantar la conducta deseada del sistema.

El mecanismo mediante el cual los objetos se comunican es conocido como envío y recepción de mensajes.


Los objetos interactúan a través de mensajes

Un mensaje puede definirse como:

  • Un mensaje es la especificación de una comunicación entre objetos que contiene la información suficiente para activar una operación del objeto receptor.
  • Un mensaje dice cómo un objeto le solicita a otro la ejecución de una operación.

Los mensajes son los mecanismos que permiten a los objetos interactuar entre sí. Un mensaje invoca la operación de un objeto receptor. Cuando esta operación concluye, el flujo de control es devuelto al objeto invocante.


¿Qué es un diagrama de interacción?

Un diagrama de interacción muestra la interacción, que consiste en un conjunto de objetos y sus relaciones, incluyendo los mensajes que se envían entre sí. Tanto los diagramas de secuencia como los de colaboración, son considerados diagramas de interacción.

Los diagramas de interacción son utilizados para modelar los aspectos dinámicos de un sistema, llegando incluso a utilizarse para modelar cada flujo de ejecución de los casos de uso.

Estos diagramas comúnmente contienen objetos, ligas y mensajes.


¿Qué es un diagrama de secuencia?

Un diagrama de secuencia describe un patrón de interacción entre objetos, manteniendo un orden cronológico. Muestra los objetos participantes en la interacción, junto con sus líneas de vida y los mensajes que se envían entre sí.

El uso más frecuente de un diagrama de secuencia es para demostrar las realizaciones de casos de uso. Es frecuente tener un diagrama de secuencia por cada flujo de ejecución de cada caso de uso.

Estos diagramas son de particular importancia para los diseñadores debido a que clarifican los roles que desempeñan los objetos dentro de los flujos de ejecución, determinando sus responsabilidades e interfaces.

 

Contenido de un diagrama de secuencia

Objetos

Un objeto es representado a través de una línea vertical denominada “línea de vida”. Esta línea de vida representa la existencia de un objeto en un momento en particular. Un símbolo de objeto es dibujado al inicio de la línea y muestra el nombre del objeto y la clase a la que pertenece, separados por dos puntos y subrayados.

nombreObjeto:nombreClase

Actores

Normalmente una instancia de actor es representada a través de una línea debida dentro del diagrama, funge como el iniciador de la interacción. Si en un diagrama hay más de un actor, es conveniente mantenerlos en los extremos del diagrama.

Mensajes

Un mensaje es la comunicación entre objetos que permite la invocación deuna operación en el objeto receptor.

En un diagrama de secuencia, un mensaje se muestra a través de una flecha horizontal, que va del objeto emisor al objeto receptor. En el caso de un mensaje que dirija un objeto a sí mismo, la flecha sale y regresa a la misma línea de vida.

La flecha de un mensaje es etiqueada con su nombre y lista de parámetros. También se puede etiquetar con un número que indique la secuencia de ejecución.

Foco de control

El foco de control es un rectángulo delgado que está sobre la línea de vida de un objeto y muestra el periodo de tiempo que utiliza el objeto para realizar una acción. La parte superior de este rectángulo, está alineada con el inicio de la acción, mientras que la parte final está alineada con el término de la operación.

 

¿Qué es un diagrama de colaboración?

Un diagrama de colaboración muestra cómo los objetos interactúan entre sí para realizar la conducta de un caso de uso particular. Al igual que los diagramas de secuencia, estos diagramas son utilizados por los diseñadores para definir y clarificar los roles que los objetos desempeñan durante la ejecución de uno de los flujos de un caso de uso. Son una fuente primaria de información para determinar las responsabilidades e interfaces de una clase. Conforme al número de objetos y mensajes se incrementan, este diagrama llega a ser difícil de entender. Es también difícil mostrar información adicional, como la secuencia de los mensajes en el tiempo, puntos de decisión o alguna otra información no estructurada.

 

Ejemplo: Diagrama de colaboración

Un diagrama de colaboración puede tener objetos e instancias de actores, junto con ligas y mensajes que describen cómo se relacionan entre sí e interactúan.

El diagrama describe qué sucede en los objetos participantes, en términos de cómo los objetos se comunican a través del envío y recepción de mensajes.

 

Contenido de un diagrama de secuencia: Ligas y mensajes

Una liga es la relación entre objetos a través de la cual los mensajes son enviados. En los diagramas de colaboración una liga se muestra como una línea sólida entre dos objetos. Para que un objeto pueda enviar un mensaje a otro, debe existir una liga entre ambos. Al lado de una liga aparecen flechas, junto con los mensajes que un objeto emisor envía a uno receptor. Si un objeto se envía un mensaje a sí mismo, esto se debe modelar como una línea que inicia y termina en el mismo objeto, junto con una flecha de mensaje asociada.

 

Similitudes entre diagramas de secuencia y colaboración

Las similitudes entre diagramas de secuencia y colaboración son:

  • En la equivalencia semántica se puede convertir un diagrama en el otro sin perdida de información.
  • Modelan los aspectos dinámicos de un sistema.
  • Modelan los escenarios de un caso de uso.

 

Diferencias entre diagramas de colaboración y secuencia

Diagramas de colaboración:

  • Muestran relaciones adicionalmente a la interacción.
  • Más aptos para visualizar patrones de colaboración entre objetos.
  • Más aptos para visualizar todos los efectos de un objeto determinado.
  • Fáciles de utilizar en sesiones de lluvia de ideas.

Diagramas de secuencia:

  • Muestran explícitamente la secuencia de mensajes.
  • Más aptos para visualizar el flujo completo.
  • Más aptos para especificaciones de sistemas de tiempo real y escenarios complejos.