Está en la página 1de 16

Diagramas de Colaboración

Un diagrama de colaboración es una forma alternativa


al diagrama de secuencia de mostrar un escenario. Este
tipo de diagrama muestra las interacciones entre
objetos organizadas entorno a los objetos y los enlaces
entre ellos.
Los diagramas de secuencia proporcionan una forma
de ver el escenario en un orden temporal - qué pasa
primero, qué pasa después -. Los clientes entienden
fácilmente este tipo de diagramas, por lo que resultan
útiles en las primeras fases de análisis. Por contra los
diagramas de colaboración proporcionan la
representación principal de un escenario, ya que las
colaboraciones se organizan entorno a los enlaces de
unos objetos con otros. Este tipo de diagramas se
utilizan más frecuentemente en la fase de dise no, es
decir, cuando estamos dise nando la implementación de
las relaciones. Se toma como ejemplo el caso de uso
PedirProducto (fig. 4.4) ya descrito como diagrama de
secuencia.

  
Figura: Ejemplo diagrama de colaboración
A diferencia de otras notaciones que muestran tanto el
estado y el comportamiento de la clase en el diagrama
de clases, UML separa el comportamiento de las clases
en los diagramas de colaboración. Los diagramas de
clase de UML no incluyen flujo de mensajes entre
clases, es por ésto que los diagramas de colaboración se
deben crear en paralelo con los diagramas de clases.
Aunque se puede indicar el orden del flujo de mensajes
en un diagrama de colaboración numerando los
mensajes, no se suele hacer, ya que para este propósito
son mejores los diagramas de secuencia.
A continuación se enumeran los conceptos
fundamentales de un diagrama de colaboración:
 Objeto: Se representa con un rectángulo que contiene el nombre y la clase del
objeto en un formato nombreObjeto : nombreClase.
 Enlaces: Un enlace es una instancia de una asociación en un diagrama de clases.
Se representa como una línea continua que une a dos objetos, acompa nada por
un número que indica el orden dentro de la interacción. Pueden darse varios
niveles de subíndices para indicar anidamiento de operaciones. Se pueden
utilizar estereotipos para indicar si el objeto que recibe el mensaje es un atributo,
un parámetro de un mensaje anterior, si es un objeto local o global.
 Flujo de mensajes: Expresa el envío de un mensaje. Se representa mediante una
flecha dirigida cerca de un enlace.
 Marcadores de creación y destrucción de objetos: Puede mostrarse en la
gráfica qué objetos son creados y destruidos, agregando una restricción con la
palabra new o delete respectivamente.
 Objeto compuesto: Es una representación alternativa de un objeto y sus
atributos. En esta representación se muestran los objetos contenidos dentro del
rectángulo que representa al objeto que los contiene. Un ejemplo es el objeto
Window (figura 4.5).

  

Figura 4.5: Ejemplo de objeto compuesto

 Patrón de dise no: Un diagrama de colaboración puede especificar un contrato


entre objetos, parte esencial para la descripción de un patrón de dise no. Este
diagrama contiene todos los elementos citados de un diagrama de colaboración,
dejando libres posiblemente los tipos exactos de algunos objetos o con nombres
genéricos para los mensajes. Una ``instanciación'' del patrón se representa como
una elipse unida mediante flechas punteadas a los objetos o clases que participan
realmente en el patrón. Estas flechas pueden tener roles, indicando cuál es el
papel de cada elemento dentro del patrón. Por ejemplo, una instanciación del
patrón Observer se representa en la figura 4.6.
  

Figura: Diagrama de Colaboración que


describe un patrón

 Contexto: Un contexto es una vista de uno o más elementos dentro del modelo
que colaboran en el desarrollo de una acción. Se usa para separar los demás
elementos en el modelo de este problema en particular y darle énfasis. Puede
mostrar sólo los detalles relevantes de las clases u objetos que contiene, para
resaltar su utilidad. Un ejemplo es la definición del tipo CashRegister (figura
4.7).

  

Figura 4.7: Ejemplo de un contexto

Se representa como un contexto un tipo CashRegister y se muestran los detalles


relevantes de Product, Item y Sale para este tipo. Las relaciones de las clases con
otras no visibles dentro del contexto pueden omitirse o conectarse al borde del
contexto.

 Objeto activo: Un objeto activo es el que contiene su propio flujo de control, a


diferencia de un objeto pasivo que encapsula datos y sólo reacciona al enviarle
mensajes. Un objeto activo se representa con un rectángulo de bordes gruesos.
Puede contener otros objetos pasivos o activos. Se presenta un ejemplo en la
figura 4.8 en el contexto de una producción en línea robotizada. Se tiene un ente
Factory Manager, un ente robot y un ente oven, tres objetos activos que
interactúan para desarrollar su tarea.

  

Figura 4.8: Ejemplo de objetos activos

Los mensajes entre objetos pasivos se denotan mediante una flecha completa,
mientras que los mensajes entre objetos activos se denotan con una media
flecha. Los hilos de ejecución se denotan con las letras A y B antes del número
de orden del mensaje. La sincronización entre hilos se muestra mediante un ``/''
y el nuevo número de orden. Por ejemplo en A2, B2 / 2: completed (job).
Diagrama de colaboración
De Wikipedia, la enciclopedia libre
Saltar a navegación, búsqueda

Esencialmente es un diagrama que muestra interacciones organizadas alrededor de los


roles. A diferencia de los diagramas de secuencia, los diagramas de comunicación
muestran explícitamente las relaciones de los roles. Por otra parte, un diagrama de
comunicación no muestra el tiempo como una dimensión aparte, por lo que resulta
necesario etiquetar con números de secuencia tanto la secuencia de mensajes como los
hilos concurrentes.

 Muestra cómo las instancias específicas de las clases trabajan juntas para conseguir un
objetivo común.
 Implementa las asociaciones del diagrama de clases mediante el paso de mensajes de
un objeto a otro. Dicha implementación es llamada "enlace".

Un diagrama de comunicación es también un diagrama de clases que contiene roles de


clasificador y roles de asociación en lugar de sólo clasificadores y asociaciones. Los
roles de clasificador y los de asociación describen la configuración de los objetos y de
los enlaces que pueden ocurrir cuando se ejecuta una instancia de la comunicación.
Cuando se instancia una comunicación, los objetos están ligados a los roles de
clasificador y los enlaces a los roles de asociación. El rol de asociación puede ser
desempeñado por varios tipos de enlaces temporales, tales como argumentos de
procedimiento o variables locales del procedimiento. Los símbolos de enlace pueden
llevar estereotipos para indicar enlaces temporales.

Contenido
[ocultar]

 1 Usos
 2 Tipos

 3 Mensajes

 4 Flujos

Usos [editar]

Un uso de un diagrama de comunicación es mostrar la implementación de una


operación. La comunicación muestra los parámetros y las variables locales de la
operación, así como asociaciones más permanentes. Cuando se implementa el
comportamiento, la secuencia de los mensajes corresponde a la estructura de llamadas
anidadas y el paso de señales del programa.
Un diagrama de secuencia muestra secuencias en el tiempo como dimensión
geométrica, pero las relaciones son implícitas. Un diagrama de comunicación muestra
relaciones entre roles geométricamente y relaciona los mensajes con las relaciones, pero
las secuencias temporales están menos claras.

Tipos [editar]

Es útil marcar los objetos en cuatro grupos: los que existen con la interacción entera; los
creados durante la interacción (restricción {new}); los destruidos durante la interacción
(restricción {destroyed}); y los que se crean y se destruyen durante la interacción
(restricción {transient}).

Aunque las comunicaciones muestran directamente la implementación de una


operación, pueden también mostrar la realización de una clase entera. En este uso,
muestran el contexto necesario para implementar todas las operaciones de una clase.
Esto permite que el modelador vea los roles múltiples que los objetos pueden
desempeñar en varias operaciones.

Mensajes [editar]

Los mensajes se muestran como flechas etiquetadas unidas a los enlaces. Cada mensaje
tiene un número de secuencia, una lista opcional de mensajes precedentes, una
condición opcional de guarda, un nombre y una lista de argumentos y un nombre de
valor de retorno opcional. El nombre de serie incluye el nombre (opcional) de un hilo.
Todos los mensajes del mismo hilo se ordenan secuencialmente. Los mensajes de
diversos hilos son concurrentes a menos que haya una dependencia secuencial explícita.

Flujos [editar]

Generalmente, un diagrama de comunicación contiene un símbolo para un objeto


durante una operación completa. Sin embargo, a veces, un objeto contiene diferentes
estados que se deban hacer explícitos. Por ejemplo, un objeto pudo cambiar de
localización o sus asociaciones pudieron diferenciarse.

Los diferentes símbolos de objeto que representan un objeto se pueden conectar usando
flujos "become" o "conversion". Un flujo "become" es una transición, a partir de un
estado de un objeto a otro. Se dibuja como una flecha de línea discontinua con el
estereotipo "become" o "conversión" y puede ser etiquetado con un número de serie
para mostrar cuando ocurre. Un flujo de conversión también se utiliza para mostrar la
migración de un objeto a partir de una localización a otra distinta para otro lugar.

Diagramas de colaboración

La segunda forma del diagrama de interacción es el diagrama de colaboración.

En los diagramas de colaboración, los objetos ejemplo se muestran como iconos. Las
flechas indican, como en los diagramas de secuencia, los mensajes enviados dentro del
caso de uso dado. Sin embargo, en esta ocasión la secuencia se indica numerando los
mensajes.
El numerar los mensajes dificulta más ver la secuencia que poner las líneas verticales en
la página. Por otra parte, la disposición espacial del diagrama permite mostrar otras
cosas mejor. Se puede mostrar cómo se vinculan entre ellos los objetos y emplear la
disposición para sobre poner paquetes u otra información.

Se puede usar alguno de los diversos esquemas de numeración para los diagramas de
colaboración. El más simple se ilustra en la Figura 6-4. Otro enfoque comprende un
esquema de numeración decimal, el cual aparece en la Figura 6-5.

En el pasado, el esquema más utilizado era el de la numeración simple. El UML utiliza


el esquema decimal, pues hace evidente qué operación llama a otra y cuál es esa otra,
aunque pueda ser más difícil apreciar la secuencia general.

Figura 6-4:Diagrama de colaboración con numeración simple

Sin importar el tipo de esquema de enumeración que se utilice, se puede añadir el


mismo tipo de control de información que se mostraría en un diagrama de secuencia.

En las Figuras 6-4 y 6-5 se pueden apreciar las distintas formas del esquema de
nombrado de objetos en UML. Tal esquema adopta la forma de nombreObjeto :
NombreClase, donde se puede omitir el nombre del objeto o el de la clase. Obsérvese
que, si se omite el nombre del objeto, hay que conservar los dos puntos (:), para que
quede claro que es el nombre de la clase y no el del objeto. Así, el nombre "Línea
Macallan : Línea de pedidos" indica una instancia de Línea de pedidos llamada Línea
Macallan (debo decir que éste es un pedido que yo apreciaría de modo particular).
Acostumbro a nombrar objetos con el estilo de Smalltalk que empleé en los diagramas
de secuencia (este esquema es válido en UML, pues "unObjeto" es un nombre
perfectamente correcto para un objeto).

Figura 6-5: Diagrama de colaboración con numeración decimal

*II.5.2 Diagrama de Colaboración


Un Diagrama de Colaboración muestra una interacción organizada basándose en los objetos que toman parte en la
interacción y los enlaces entre los mismos (en cuanto a la interacción se refiere). A diferencia de los Diagramas de
Secuencia, los Diagramas de Colaboración muestran las relaciones entre los roles de los objetos. La secuencia de los
mensajes y los flujos de ejecución concurrentes deben determinarse explícitamente mediante números de secuencia.
En cuanto a la representación, un Diagrama de Colaboración muestra a una serie de objetos con los enlaces entre los
mismos, y con los mensajes que se intercambian dichos objetos. Los mensajes son flechas que van junto al enlace por
el que “circulan”, y con el nombre del mensaje y los parámetros (si los tiene) entre paréntesis. Cada mensaje lleva un
número de secuencia que denota cuál es el mensaje que le precede, excepto el mensaje que inicia el diagrama, que no
lleva número de secuencia. Se pueden indicar alternativas con condiciones entre corchetes (por ejemplo 3
[condición_de_test] : nombre_de_método() ), tal y como aparece en el ejemplo de la Figura 19. También se puede
mostrar el anidamiento de mensajes con números de secuencia como 2.1, que significa que el mensaje con número de
secuencia 2 no acaba de ejecutarse hasta que no se han ejecutado todos los 2. x .

Diagrama de colaboración
Enfatiza la organización estructural de los objetos que envían y reciben
mensajes. Gráficamente, es una colección de vértices y arcos.

Para hacer un diagrama de secuencia


 Colocar los objetos que participan en la interacción en la parte de arriba
del diagrama, a través del eje de las X.

 Colocar los objetos que inician la interacción a la izquierda y los objetos


más subordinados a la derecha.

 Colocar los mensajes que estos objetos envían y reciben junto al eje de
las Y, en orden de incremento de tiempo de arriba hacia abajo.

 Existe la línea de vida del objeto, que representa la existencia de un


objeto en un período de tiempo.

 Existe el foco de control, que muestra el período de tiempo en el que el


objeto se encuentra representando una acción

Para hacer un diagrama de colaboración

 Colocar los objetos que participan en la interacción como los vértices en


una gráfica.

 Interpretar las ligas que conectan a estos objetos como los arcos de la
gráfica.

 Adornar estas ligas con los mensajes que los objetos envían y reciben.

 Establecer una ruta, para indicar como un objeto es ligado a otro.


Podemos unirle un estereotipo al final de una liga.

 Establecer un número de secuencia, para indicar el orden de tiempo de


un mensaje. Éste debe ser único.

Diagramas de colaboración

Los diagramas de colaboración muestran las interacciones que ocurren entre los objetos
que participan en una situación determinada. Esta es más o menos la misma información
que la mostrada por los diagramas de secuencia, pero destacando la forma en que las
operaciones se producen en el tiempo, mientras que los diagramas de colaboración fijan
el interés en las relaciones entre los objetos y su topología.

En los diagramas de colaboración los mensajes enviados de un objeto a otro se


representan mediante flechas, mostrando el nombre del mensaje, los parámetros y la
secuencia del mensaje. Los diagramas de colaboración están indicados para mostrar una
situación o flujo programa específicos y son unos de los mejores tipos de diagramas
para demostrar o explicar rápidamente un proceso dentro de la lógica del programa.
Umbrello UML Modeller mostrando un diagrama de colaboración

Conceptos básicos en un Diagrama de


Colaboración
Un diagrama de colaboración es una forma de representar interacción entre objetos, alterna al
diagrama de secuencia. A diferencia de los diagramas de secuencia, pueden mostrar el
contexto de la operación (cuáles objetos son atributos, cuáles temporales, ... ) y ciclos en la
ejecución. Se toma como ejemplo el caso de uso PedirProducto ya descrito como diagrama de
secuencia.
Objeto
Un objeto se representa con un rectángulo, que contiene el nombre y la clase del objeto en un
formato nombreObjeto: nombreClase.

Enlaces
Un enlace es una instancia de una asociación en un diagrama de clases. Se representa como
una linea contínua que une a dos objetos. Esta acompañada por un número que indica el
orden dentro de la interacción y por un estereotipo que indica que tipo de objeto recibe el
mensaje. Pueden darse varios niveles de subindices para indicar anidamiento de operaciones.
Los estereotipos indican si el objeto que recibe el mensaje es un atributo (association y se
asume por defecto), un parámetro de un mensaje anterior, si es un objeto local o global.

Flujo de mensajes
Expresa el envío de un mensaje. Se representa mediante una flecha dirigida cercana a un
enlace.

Marcadores de creación y destrucción de objetos


Puede mostrarse en la gráfica cuáles objetos son creados y destruidos, agregando una
restricción con la palabra new o delete, respectivamente, cercana al rectángulo del objeto

Objeto compuesto

Es una representación alternativa de un objeto y sus atributos


Conceptos avanzados en un Diagrama de
Colaboración
Patrón de diseño
Un diagrama de colaboración puede especificar un contrato entre objetos, parte esencial para
la descripción de un patrón de diseño. Este diagrama contiene todos los elementos citados de
un diagrama de colaboración, dejándo libres posiblemente los tipos exactos de algunos
objetos o con nombres genéricos para los mensajes. Una "instanciación" del patrón se
representa como una elipse unida mediante flechas puenteadas a los objetos o clases que
participan realmente en el patrón. Estas flechas pueden tener roles, indicando cuál es el papel
de cada elemento dentro del patrón. Por ejemplo, una instanciación del patrón de observador
puede verse como

Contexto
Un contexto es una vista de uno o más elementos dentro del modelo que colaboran en el
desarrollo de una acción. Se usa para separar los demás elementos en el modelo de este
problema en particular y darle énfasis. Puede mostrar solo los detalles relevantes de las clases
u objetos que contiene, para resaltar su utilidad. Un ejemplo es la definición del siguiente tipo:
Se representa como un contexto un tipo Registro de Dinero y se muestran los detalles
relevantes de Producto, Item y Venta para este tipo. Las relaciones de las clases con
otras no visibles dentro del contexto pueden omitirse o conectarse al borde del contexto.

Objeto activo
Un objeto activo es el que contiene su propio flujo de control, a diferencia de un objeto pasivo
que encapsula datos y solo reacciona al enviarle mensajes. Un objeto activo se representa con
un rectángulo de bordes gruesos. Puede contener otros objetos pasivos o activos. Se presenta
a continuación un ejemplo en el contexto de una producción en línea robotizada. Se tiene un
ente administrador, un robot y un horno (tres objetos activos) que interactúan para desarrollar
su tarea.
Los mensajes entre objetos pasivos se denotan mediante una flecha completa, mientras
que los mensajes entre objetos activos se denotan con una media flecha. Los trheads de
ejecución se denotan con las letras A y B antes del número de orden del mensaje. La
sincronización entre threads se muestra mediante un '/ ' y el nuevo númoer de orden. Por
ejemplo en A2, B2 / 2: completed( job ).

También podría gustarte