Collaboration diagram - diagram spolupráce

Diagram spolupráce a sekvenční diagram (sequence diagram) patří do skupiny interakčních diagramů (interaction diagrams).
Tyto dva diagramy jsou téměř izomorfní - tj. dají se převádět z jednoho tvaru na druhý (často i automatizovaně). Použití diagramu spolupráce bývá vhodnější v těch případech, kde chceme zdůraznit strukturální aspekty spolupráce, tj. kdo s kým komunikuje - jsou méně vhodné pro zdůraznění časových souvislostí interakcí.

Objekty si mohou posílat zprávy. Diagram spolupráce ukazuje objekty a spojení a zprávy, které si objekty posílají :

jednoduchý diagram spolupráce, 3 kB

Jedná se o diagram spolupráce odvozený z našeho jednoduchého sekvenčního diagramu viz kapitola sekvenční diagram

  • objekt se zobrazuje stejně, jako v objektovém diagramu (ovšem bez hodnot a atributů)
  • mezi objekty jsou spojení (link) vniklé jako instancí asociací
  • zpráva je zakreslena jako šipka s popisem podobně jako v sekvenčním diagramu :
    • zde jednoduchá zpráva se zobrazuje plnou šipkou a má syntaxi sevenčníVýraz návratováHodnota := (argument1, argument2, ....)
    • sevenčníVýraz určuje pořadí, v jakém jsou zprávy posílány : pozor, není to jen prosté pořadové číslo, ale je v něm vyjádřeno i zanoření
    • návratováHodnota není povinná
    • návratováHodnota může být v návratové zprávě : zobrazuje se čárkovnou šipkou)
V diagramu je znázorněna tato sekvence :
  1. objekt Obj1 je hned na počátku aktivován (má focus) a poslal zprávu Zprava1() objektu Obj2 - Obj1 přeruší zpracování a čeká, až Obj2 odpoví na Zprava1()
  2. Obj2 získává focus a spustí vlastní metodu
  3. v jistém bodě zpracování posílá Obj2 zprávu Zprava2() do Obj3 - Obj2 začíná čekat na odpověď od Obj3
  4. Obj3 získává focus (a spouští metodu)
  5. Obj3 dokončí své zpracování, pak vrátí peška do Obj2
  6. Obj2 pokračuje v práci, a posílá další zrávu do Obj3
  7. až Obj3 dokončí zpracování, tak vrátí řízení zpět do Obj2
  8. Obj2 pokračuje v práci a až skončí, tak vrátí řízení do Obj1

Další diagram spolupráce je odvozen od našeho druhého sekvenčního diagramu z kapitoly sekvenční diagram, který zobrazuje některé složitější konstrukce : složitější diagram spolupráce, 3 kB

  • iterace : iterace je zde popsána stejně jako v sekvenčním diagramu : v iteračním výrazu *[dokud má host hlad] : hvězdička označuje iteraci, v hranatých závorkách je podmínka
  • asynchronní zpráva : viz sekvenční diagram
  • vytvoření objektu je vyznačeno stereotypem <<create>> u zprávy a stereotypem <<new>> u vytvořeného objektu
  • uvolnění objektu je označeno stereotypem <<destroy>> u zprávy
  • podmínka [má peníze] : viz sekvenční diagram
  • další standardní stereotyp je <<transient>> : instance či spojení je během interakce vytvořena a následně uvolněna (tj. rovná se <<new>> a <<destroy>>)

Náměty na další studium

  • větvení
  • aktivní objekty
  • násobné objekty
  • volání sebe sama (self delegation)
  • stavy objektu