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.

Porty (Ports)

Metatřídy Portu

Třída EncapsulatedClassifier

Třída EncapsulatedClassifier rozšiřuje možnosti strukturovaného klasifikátoru o možnost vlastnit porty.

Třída Port

Port je speciální vlastnost (property) klasifikátoru a je styčným komunikačním bodem mezi klasifikátorem a jeho okolím nebo mezi klasifikátorem (či jeho chováním) a vnitřní částí klasifikátoru. Jinými slovy požadavky nejsou adresovány klasifikátoru, ale portu, který tento požadavek předá dál. Podobně to funguje i opačným směrem. Pokud instance klasifikátoru něco potřebuje, komunikuje s okolním světem pomocí portu.

V případě, že port adresuje požadavek nikoliv své vlastnosti, ale „svému“ klasifikátoru (tedy tomu, které jej vlastní), hovoříme o chovacím portu (behavioral port) – viz atribut isBehavior třídy Port v diagramu.

To, že port je vlastnost (property) klasifikátoru, mimo jiné znamená, že nemůže implementovat žádné rozhraní. Pokud tedy port nějaká rozhraní poskytuje, musí tato být implementována klasifikátorem, ke kterému port náleží, případně nadtřídou tohoto klasifikátoru.

Všimněte si také, že třída ConnectableElement je výchozí třídou portu, což nám umožňuje spojit port s konektorem.

Atribut isService třídy Port nám říká, zda port poskytuje své služby navenek (výchozí stav) nebo se jedná o soukromý port.

Notace třídy Port

Port se kreslí na hranici klasifikátoru jako čtverec. K němu se dává doplňující řetězec:

jméno portu: typ portu násobnost

Zobrazení všech tří částí může být potlačeno. V knize [ocup-cg] se píše, že pokud je atribut isService = False, pak zmíněný čtverec nepřekrývá okraj klasifikátoru, ale pouze k němu zevnitř doléhá. Nicméně tato informace ve standardu uvedena není.

Pokud port není spojen s žádnou částí klasifikátoru, ale s klasifikátorem přímo, zobrazujeme elipsou uvnitř klasifikátoru spojenou s portem.

Rozhraní, které port poskytuje nebo vyžaduje, zakreslujeme klasickou lízátkovou notací známou z rozhraní. Toto rozhraní je uvedeno u portu. V následujícím příkladu tedy Rozhraní C není poskytováno portem, ale přímo třídou A.
Příklad: Notace portu

Příklad: Notace portu

Vyvolání akcí, triggery, proměnné

Action Specific to Composite Structures

Třída InvocationAction

Vyvolání akce (invocation action) je akce, která může zavolat chování dostupné přes port. Tímto chováním je operace nebo chování (např. stavový stroj). Protože toto vyvolání se může udít na portu, balík InvocationActions rozšiřuje třídu InvocationAction o tuto možnost. Pokud dojde k vyvolání akce pomocí portu, pak se v zápisu použije navíc řetězec via <portname>.

Více se o akcích budeme bavit v kapitole o akcích, po přečtení příslušné kapitoly se sem vraťte.

Třída Trigger

Podobně jako vyvolání akce, tak k použití portu může dojít díky triggeru. Opět jde o rozšíření metamodelu (balík Communication). V zápise se navíc použije řetězec «from» <portname>. Opět, mrkněte sem, až se více dozvíte o stavových diagramech.

Příklad notace Triggeru na přechodu mezi stavy

Třída Variable

Poslední třídou, kterou zde zmíním, je třída Variable, které rozšiřuje model strukturovaných aktivit (balík StructuredActivites) o možnost mít proměnnou jako připojitelný element (connectable element).

Poznámka ke knize [ocup-cg]

V knize je pro úroveň Intermediate popisována i spolupráce (třídy Collaboration a CollaborationUse), ale znalost těchto dvou tříd je požadována až na úrovni Advanced.

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