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.

Hrany neboli též toky (třídy ControlFlow a ObjectFlow)

Flows

Třída ActivityEdge

ActivityEdge je abstraktní třída pro směrové spojení dvou uzlů aktivity: zdroje (source) a cíle (target). Hrana může řídit tok tokenu. Zdroj i cíl musí být z téže aktivity, jako je hrana.

Flows

Každá hrana má jednu podmínku nazvanou jako guard, přičemž výchozí hodnota je true. Tato podmínka je vyhodnocována za běhu a říká, zda token může být hranou přenesen. Nejčastěji se používá při rozhodování. guard je především součástí zkoušky Intermediate a Advanced, více se tedy zde nemá cenu rozepisovat.

Notace

Používá se otevřená šipka. Pokud má hrana název, je umístěna poblíž šipky.
Příklad: Tok
Příklad: Tok se jménem
Příklad: Tok s "hlídačem" (guard)
Hrana také může být zobrazena pomocí konektorů. Ty se používají se ke grafickému přerušení hrany (tj. pouze v notaci, ne sémanticky!). Obecně mohou usnadnit čtení diagramu, ale o tom já pochybuji. Nutné je, aby se vyskytovali v páru.
Příklad: Konektory
Třída ControlFlow

Řídící tok pouze předává token z jedné akce do jiné. Nepřenáší žádná data ani objekty.

Notace je stejná jako u třídy ActivityEdge.

Třída ObjectFlow

Objektový tok kromě tokenu může předávat z jedné akce do jiné i data či objekty.

Objektové toky nemusí mít akci na obou koncích. Objekt přenášený z jedné akce do další musí být kompatibilní mezi oběma akcemi.

Notace

Notace je popsána u třídy Pin.

Předávání tokenu řídícími a objektovými hranami

Řídící tok (Control Flow) pouze přenáší token z jednoho uzlu do dalšího. V případě, že akce má více vstupních hran, tak čeká, až doputuje token ze všech vstupních hran. Až poté je předáno řízení akci (přesněji je popsáno výše u akce). Říkáme tomu implicitní synchronizace.
Řídící tok

Tok objektu (Object flow) je veden nikoliv mezi akcemi, ale mezi tzv. piny (někteří autoři mají tendenci překládat slovo pin, já se do toho pouštět nehodlám. Rozhodně však nejde o zkratku). Kromě tokenu je po hraně přenášen i objekt.

Důležité je to, že pin se rozhodně nechová jako akce a jakmile dostane token, předává jej dál. Následující obrázek se sice velmi podobá předchozímu, ale to jen díky tomu, že např. akce X má dva vstupní piny a tedy se čeká na token a objekt z obou příchozích hran. Stejně tak z akce Y odcházení dva objekty pěkně společně.

Tok objektů: AND
Ovšem následující obrázek je značně nejednoznačný. Akce X je totiž spuštěna ihned po příchodu tokenu po jedné a hraně. A je spuštěna podruhé, jakmile dostane token i z druhé hrany.

Podobná situace nastává s tokem z akce Y. Z akce Y totiž vypluje objekt rozzářený jako sluníčko na jarním nebi, ale nikde není definováno, po které hraně se pustí dál. Lze to částečně řešit použitím podmínek hran (guard) či explicitním uvedením rozhodování.

Oba případy značně znečitelňují obrázek. Je proto doporučeno (mnou a mnoha dalšími, ne však standardem) se tomuto vyvarovat a vědět proč.

Tok objektů: OR

Žá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.