title: Communication Diagram
text: # Communication Diagram
  
  Un Communication Diagram (o Collaboration Diagram come era chiamato nelle specifiche dell'Unified Modeling Language 1.x) è un diagramma previsto da Unified Modeling Language 2 per descrivere l'interazione fra più partecipanti alla realizzazione di una certa funzionalità. Insieme al Sequence Diagram fa parte dei cosiddetti diagrammi di interazione (Interaction diagrams), che sono spesso utilizzati per specificare come collaborano i vari componenti del software.
  
  ## Componenti
  
  I componenti più importanti del diagramma sono i Partecipanti (o Oggetti come era consuetudine chiamarli nelle versioni del linguaggio precedenti alla 2) e i Messaggi. I messaggi sono scambi di informazione fra due partecipanti e possono essere sincroni o asincroni a seconda se il chiamante resti bloccato in attesa della risposta al messaggio oppure prosegua la sua elaborazione in parallelo al partecipante che ha ricevuto il messaggio.
  
  I messaggi sono numerati, al fine di comprendere la loro sequenza temporale. Peraltro, l'aspetto temporale dell'interazione è più facilmente rappresentata facendo ricorso ad un Sequence Diagram. La numerazione può essere semplice (1, 2, 3 ...) oppure decimale nidificata (1, 1.1, 1.1.1, ... 2 ...). La numerazione decimale nidificata è quella più aderente allo standard ed ha il pregio che consente di risolvere un'ambiguità nella sequenza temporale nel caso di deleghe interne, ossia di messaggi che un oggetto invia a se stesso. Tuttavia, in caso di nidificazione profonda, questo tipo di numerazione perde in leggibilità, e per questo motivo nella pratica si utilizza spesso la numerazione semplice.
  
  ## Diagramma
  
  Ecco un esempio con numerazione semplice.
  
  Lo stesso esempio con numerazione decimale nidificata.
  
  