UPOZORNĚNÍ

Zkoušky OCUP Fundamental a OCUP Intermediate již není možné absolvovat. Nově jsou k dispozici OCUP 2 Foundation a OCUP 2 Intermediate. Texty uvedené na těchto neodpovídají plně novým zkouškám. Aktuální text najdete na nových stránkách.

Testy znalostí UML

Chcete si kdykoliv před, při nebo po čtení těchto stránek udělat test znalostí UML? Máte možnost absolvovat takový, který připravil autor těchto stránek. Vše podstatné najdete na http://www.kurzy-uml.cz.

Akce vyvolávající chování (Invocation Actions)

Metamodel: Basic Actions

Metamodel: Basic Pins

Třída Action je základní abstraktní třída, ze které vycházejí všechny ostatní akce. Běh akce může být nějaká transformace nebo zpracování dat v modelovaném systému. Kontext (viz asociace s třídou Kernel::Clasiffier) je klasifikátor, který vlastní chování, jehož částí je daná akce.

Notace akce je obdélník se zaoblenými rohy, vstupní (třída InputPin) a výstupní (třída OutputPin) piny reprezentují setříděnou množinu vstupních, resp. výstupních parametrů akce.

Metamodel: Basic Invocation Actions

Třída InvocationAction je abstraktní třída pro akce, které vyvolají chování nebo operace, nebo to jsou akce, které objektům posílají zprávy. Tato třída vlastní vstupní a výstupní piny (vstupní nazývá argumenty (argument)).

Další abstraktní třídou je CallAction. Jde o přípravu pro konkrétní třídy vyvolávající chování nebo operaci přímo. Toto volání může dle hodnoty atributu isSynchronous synchronní (výchozí hodnota) nebo asynchronní. Výstupní piny pak pojmenovává jako výsledek (result). Výstupní piny nelze použít pro asynchronní volání. Počet a pořadí vstupních pinů (argumentů) musí odpovídat pořadí a počtu parametrů volaného chování či chovací vlastnosti. Stejně tak musí odpovídat typ a násobnost argumentů.

Třída CallBehaviorAction je již první konkrétní specializací třídy CallAction. Tato akce vyvolá chování (např. stavový automat nebo aktivitu) napřímo bez nutnosti obcházet to např. přes použití operace (ostatně k tomu slouží akce popsaná dále).

Notace třídy CallBehaviorAction vychází z třídy Action. Uvnitř zakulaceného obdélníku je pak uveden název chování, které je voláno. V případě, že jde o aktivitu (BasicActivities::Activity), je navíc ještě zobrazena vlevo dole „vidlička“, která symbolisuje hierarchickou strukturu.


Třída CallOperationAction má za úkol vyvolat chovací operaci (viz asociace s třídou Kernel::Operation). Tou může být např. metoda některé třídy. Akce dostane ve vstupním pinu objekt, který danou operaci vlastní. Notace opět vychází z obdélníku se zakulacenými rohy. Uvnitř je uveden název operace. Volitelně pod ním v závorce je uveden klasifikátor následovaný dvěma dvojtečkami a případně názvem operace, pokud jsme pro akci zvolili jiný název (viz příklad).



Popsané třídy CallBehaviorAction a CallOperationAction volají chování resp. operaci přímo. Naproti tomu následující tři akce se chovají jinak. Chování je vyvoláno nepřímo tím, že objekt přijme signál nebo objekt. Volající přitom neumí rozlišit typ chování, za to je zodpovědný příjemce zprávy resp. objektu.

Třída SendSignalAction na základě vstupních pinů vytvoří instanci třídy Communication::Signal a předá ji danému příjemci. Příjemce signálu je identifikován pomocí vstupního pinu (viz asociační konec nazvaný target). Přenos signálu je vždy asynchronní. Notace signálu je vidět na následujícím obrázku.



Metamodel: Intermediate Invocation Actions

Pokud chceme poslat zprávu velkému množství příjemců, využijeme třídu BroadcastSignalAction. Objekt, který zprávu nakonec přijme, UML nespecifikuje. Notace odpovídá třídě Action.

Poslední třídou, kterou zmíním, je SendObjectAction. Chová se stejně jako SendSignalAction se dvěma rozdíly: jednak přenášený objekt nemusí být signál a jednak objekt není vytvářen akcí, ale je předán akci přes vstupní pin. Notace je stejná jako u třídy Action. Pokud však všechny vysílané objekty jsou signály, pak lze použít notace třídy SendSignalAction. Pozor ale na možné zmatení čtenáře: z notace pak nebude jasné, zda vysílaný objekt je nutné vytvořit nebo je do akce předán vstupním pinem.

Žádné komentáře:

Okomentovat

Líbila se vám právě přečtená kapitola?

Líbil se vám článek? Přinesl vám užitek? Pokud ano, můžete mi zaslat pár drobných, čímž jednak dáte najevo, že se vám tu opravdu líbilo, a jednak mi ukážete, že má práce není zbytečná. Informace o darovací platbě zde.