È possibile mostrare, in un collaboration diagram, il cambio di stato
di un oggetto. Si possono mostrare, inoltre, le condizioni allo stesso
modo in cui esse sono rappresentate all'interno di un sequence diagram.
Nel rettangolo che rappresenta l'oggetto si indica lo stato
dell'oggetto stesso. Al diagramma si aggiunge un altro rettangolo che
rappresenta l'oggetto e indica lo stato modificato. I due rettangoli
vengono quindi uniti con una linea recante un'etichetta con uno
stereotipo.
La condizione va inserita all'interno di una coppia di parentesi quadre
considerato che la condizione deve precedere l'etichetta del messaggio.
La cosa importante è coordinare le condizioni con una numerazione. Per
maggiori chiarimenti su tale costruzione si veda il paragrafo
successivo.
I collaboration diagram permettono anche di modellare la creazione di oggetti; nel processo di creazione di tali oggetti si inserisce uno stereotipo <<create>> al messaggio che si occupa della creazione dell'oggetto.
Ancora, nei collaboration diagrams si possono rappresentare oggetti multipli e visualizzare i risultati restituiti.
La rappresentazione di oggetti multipli viene effettuata tramite uno
stack (una pila) di rettangoli disegnati in sequenza inversa (da destra
a sinistra). Si aggiunge una condizione (circondata da parentesi) e
preceduta da un asterisco per indicare che il messaggio deve giungere a
tutti gli oggetti.
I risultati restituiti sono scritti come espressioni in cui il nome
dell'espressione è preceduto dal valore di ritorno e seguito dai segni
:= . Quindi, si scrivono il nome dell'operazione ed una lista di
possibili attributi che l'operazione può accettare per produrre il
risultato finale.
La parte destra dell'espressione appena descritta viene definita firma del messaggio (message-signature).
In alcune interazioni può accadere che uno specifico oggetto si occupi del controlli del flusso.
Questo oggetto attivo può mandare messaggi ad oggetti passivi ed
interagire a sua volta con altri oggetti attivi. Inoltre, si potrebbe
verificare anche il caso di un oggetto che mandi messaggi soltanto dopo
che parecchi altri messaggi (possibilmente non consecutivi) siano stati
inviati. In altre parole, l'oggetto deve sincronizzare il suo messaggio
con un insieme di altri messaggi.
Il collaboration diagram rappresenta un oggetto attivo allo stesso modo
di come si è visto finora con la differenza che i bordi del rettangolo
sono spessi e in grassetto.
I messaggi sincroni sono preceduti da una lista di messaggi che devono
essere completati prima che il messaggio sincrono possa essere inviato.
Una virgola separa un elemento della lista dall'altro e la lista
termina con una barra.
Vediamo ora di mettere insieme tutti i concetti di cui si è parlato e di definire un collaboration diagram completo.