![]() |
Messages |
Výměna zpráv mezi časovými osami znamená, že se v účastnícím se elementu spustí chování. Běh (execution occurence) tohoto chování je znázorněn podélným obdélníkem na časové ose. Začátek a konec běhu chování je dáno výskytem událostí (event occurences). Jinými slovy odeslání zprávy způsobí začátek běhu chování a přijmutí návratové zprávy značí konec běhu chování.
Přenesení zprávy je zobrazeno šipkou.
V UML je definováno několik různých zpráv, přičemž rozdílnost je i v notaci.
![]() |
Příklad: Notace pro předávání zpráv |
Synchronní zpráva: volající čeká na návrat z volaného chování. Zobrazuje se nepřerušovanou linkou s uzavřenou šipkou. Tento návrat je signalizován návratovou zprávou. Ta je zobrazena čárkovanou linkou s otevřenou šipkou.
Asynchronní zpráva: volající nečeká na návrat z volaného chování, ale bez skrupulí pokračuje ve svém běhu. Zobrazuje se nepřerušovanou linkou s otevřenou šipkou.
Ztracená zpráva: je zobrazena nepřerušovanou linkou s otevřenou šipkou vedoucí do plného kolečka, které není spojeno s žádnou časovou osou. Odesílatel ztracené zprávy je známý, příjemce však nikoliv.
Nalezená zpráva: je zobrazena nepřerušovanou linkou s otevřenou šipkou vedoucí z plného kolečka, které není spojeno s žádnou časovou osou. Odesílatel ztracené zprávy není známý, příjemce však ano.
Vytvářející zpráva: je zpráva, která vytvoří novou instanci. Je zobrazována přerušovanou otevřenou šipkou, která ukazuje do obdélníku čáry života objektu.
Ztracené a nalezené zprávy hrají specifickou roli v sekvencích interakce. Jedna událost daného typu chybí: příjem v případě ztracené zprávy a odeslání v případě nalezené zprávy.
Vlastní zpráva je pak zobrazena u šipky. Syntaxe je následující:
[atribut =] název [(parametry)][: návratová hodnota]|‘*‘
Atribut je lokální proměnná interakce nebo instance časové osy. Atribut je používán pouze pro syn-chronní zprávy s návratovou hodnotou.
Název je název volané zprávy nebo odeslaného signálu. Odesílání signálu je vždy asynchronní.
Parametry je seznam hodnot parametrů oddělených čárkou. Tyto parametry jsou zprávou přenášeny. Syntaxe parametrů je následující:
[parametr=]hodnota
Nebo
Atribut=výstupní parametr[: výstupní hodnota]
Nebo
‘-‘
Pomlčka se používá v případě, že hodnota je neznámá nebo když v dané interakci nemá žádný význam.
Notace s výstupním parametrem je používána pro parametry typu out, inout a return.
Název parametru může být použit volitelně pro lepší čitelnost diagramu.
Příklady:
vypiš (8, 12, -, „Ahoj“)
čistáMzda = spočtiČistouMzdu (hrubáMzda = 24500, početDětí = 2, -, -, -)
Namísto zprávy lze uvést hvězdičku, což je zástupný znak pro libovolnou zprávu.
Podobně jako je možnost objekt vytvořit (object construction), tak jej lze i zrušit (object destruction). Zrušení objektu je zobrazeno křížkem na konci časové osy.
Kniha [ocup-cg] říká, že v UML se mluví o speciální události typu Stop (viz třída Stop jakožto specializace třídy EventOccurence). Opět jsem proti tomuto tvrzení. Jednak nejde o třídu Stop, ale o třídu DestructionEvent a jednak jeden o specializaci třídy EventOccurence, ale Event. Zde však již kniha napůl chlapácky přiznává, že při zkoušce se namísto třídy Stop může mluvit o třídě DestructionEvent. Jak uvádí, je to totéž, v návrhu UML 2.0 se totiž pracovalo s tímto názvem.
![]() |
Příklad: Zrušení objektu |
Odeslání, stejně tak jako příjem zprávy, je událost (viz metamodel pro zprávy). Tyto události jsou používány k definování sémantiky interakce, která může být popsána dvěma množinami.
Třída GeneralOrdering
V knize GC se dále popisuje třída GeneralOrdering, ale ta dle současného seznamu není součástí zkoušky.
Třída GeneralOrdering slouží k ovlivnění pořadí událostí. Jedná se o vztah mezi dvěma událostmi, které jsou takto vloženy do sekvence. Tato vazba je zobrazena tečkovanou linkou s černým trojúhelníčkem uprostřed této linky, který určuje směr mezi dvěma událostmi. Směr trojúhelníku je od dřívější k následující události.
![]() |
Příklad: General Ordering |
Třída StateInvariant
Výměna zpráv může způsobit změnu stavu objektu, což lze zaznamenat pomocí tvz. state invariant. Třída StateInvariant je zobrazena stavem na časové ose nebo přímo omezením nebo omezením v poznámkové notaci.
![]() |
Příklad: Invarianty |
State invariant je vyhodnocen těsně před výskytem další události. State invariant musí být pro sekvenci platný.
Žádné komentáře:
Okomentovat