Sequence diagram - sekvenční diagram

Sekvenční diagram spolu s diagramem spolupráce (collaboration 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í sekvenčního diagramu bývá vhodnější v těch případech, kde jsou důležité časové souvislosti interakcí.

Objekty si mohou posílat zprávy. Sekvenční diagram zobrazuje jejich časovou posloupnost :

jednoduchý sekvenční diagram, 6 kB

Jedná se o jednoduchý sekvenční diagram. Časová osa je svislá (čas běží zhora dolů), na vodorvoné ose jsou rozmístěny objekty :

  • objekt se zobrazuje stejně, jako v objektovém diagramu (ovšem bez hodnot a atributů)
  • čára života (lifeline) ukazuje, kdy objekt žije - v tomto diagramu všchny objekty existovaly už před posláním první zprávy, a dále existují po dokončení sekvenčního diagramu (resp. nevíme, kdy který objekt zanikne nebo nás to v tuto chvíli nezajímá)
  • aktivita objektu (focus of control) ukazuje, kdy je který objekt aktivní
  • zpráva :
    • zde jednoduchá zpráva se zobrazuje plnou šipkou a má syntaxi návratováHodnota := (argument1, argument2, ....)
    • návratováHodnota není povinná
    • návratováHodnota může být v návratové zprávě : zobrazuje se čárkovnou šipkou (zde má název Return() )
  • POZOR : časová osa nemá měřítko - od délky obdélníku se nedá usuzovat na délky času ani na to, který čas bude delší či kratší
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ší sekvenční diagram ukazuje některé složitější konstrukce : složitější sekvenční diagram, 8 kB

  • popisky lze vkládat vlevo, a ve směru časové osy - jde jen upřesňující/vysvětlucící text či označení bodů na časové ose, které lze pak využít v podmínkách a výrazech
  • iterace : co má být iterováno je uzavřeno v obdélníku, iterační výraz je pod obdélníkem (zde *[dokud má host hlad] : hvězdička označuje iteraci, v hranatých závorkách je podmínka
  • asynchronní zpráva je vyjádřena (prostou) šipkou: po zaslání této zprávy klient pokračuje dále ve zpracování (nemusí čekat, až server vrátí focus zpět), vlastně dojde k vytvoření nového vlákna
  • vytvoření objektu je vyznačeno pozicí objektu (není umístěn nahoře, ale jeho čára života začíná níže na časové ose) a tím, že zpráva (v jejímž důsledku objěkt vznikl) vede přímo k objektu (namísto do jeho lifeline)
  • uvolnění objektu je označeno křížkem
  • podmínka [má peníze] : zpráva bude poslána jen tehdy, pokud bude podmínka splněna

Náměty na další studium

  • větvení a sloučení
  • aktivní objekty
  • volání sebe sama (self delegation)
  • stavy objektu
  • rekurze
  • zpráva, kde přenos zprávy probíhá dlouho