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.

Rozhraní (Interfaces)

Contents of Interfaces package
Třída Interface
Rozhraní (třída Interface) je specializace třídy Classifier, který deklaruje množinu souvisejících vlastností (features) a pravidel. Pravidla jsou ve formě omezení (constraints): pre- a post-condition.


Rozhraní nespecifikuje pouze metody, ale i atributy.

Rozhraní má stejnou notaci jako klasifikátor, pouze má navíc uvedeno klíčové slovo «interface».

Rozhraní je potomek klasifikátoru, což mj. znamená, že může být asociováno s jiným rozhraním či třídami.

V UML se rozlišuje mezi rozhraním, které klasifikátor nabízí (supplied interface) a které se požaduje (required interface), resp. je elementem požadováno.

Implementační třída musí implementovat nejen vlastnosti (features) rozhraní, ale i vlastnosti všech předchůdců implementovaného rozhraní. Implementovat se musí všechny metody a atributy (im-plementační třída tyto atributy musí poskytovat).

Poskytované rozhraní (supplied interface) je rozhraní, které klasifikátor implementuje. V notaci lze značit „lízátkem“ a názvem rozhraní uvedeným nad kolečkem.
Příklad: Lízátko

Vyžadované rozhraní: značí se půlkruhem a říká, že jde o klasifikátor, který pro svoji činnost vyžaduje jiný klasifikátor implementující dané rozhraní.
Příklad: Lízátko

Tip pro lepší zapamatování notace s lízátkem: Ten, kdo má lízátko, není žádný sobec a rád se rozdělí. Lízátko poskytne ostatním, tedy jde o poskytovatele rozhraní (supplied interface). Pak je to někdo, kdo by rád po lízátku chňapnul, to je klasifikátor, který rozhraní-lízátko vyžaduje. Proto v notaci si to můžeme představit jako pařátek natahující se po lízátku.

Další možnou notací je využití závislostí:

Příklad: Rozhraní pomocí závislostí

Rozdíl mezi „lízátkovou notací“ a té s realizační šipkou je ten, že v první jmenované vidíme pouze název rozhraní, kdežto v druhé jmenované jsou vidět i jednotlivé vlastnosti (features) rozhraní.

Lízátková notace je vhodná pro redukci čar v diagramu.

Rozhraní je klasifikátor, tudíž lze na něj implementovat generalizaci.

Klasifikátor může implementovat libovolné množství rozhraní.

Z rozhraní nelze dělat instance.

Viditelnost všech vlastností (features) rozhraní je public.

Příklad:
Mějme dvě rozhraní. Jedno nazvané Auto, které poskytuje to základní, co by auto mělo dělat. Od toho je pak odvozené pomocí generalizace Luxusní auto, které má minibar a možnost lůžkové úpravy, pokud se nabere nějaká ta pěkná stopařka. Řidič k takovému autu je samozřejmostí.

Příklad: Auta a uživatelé

A nyní máme dvě třídy, které implementují každá jiné rozhraní. Třída Škoda Favorit implementuje rozhraní Auto. K tomu je také možné přiřadit lufťáka (třída Víkendový řidič). Pokud by bylo třeba, pak tento Víkendový řidič může sednout i do Lexusu, neboť rozhraní LuxusníAuto je potomkem rozhraní Auto (pouze tento sváteční řidič nebude umět využít všech páček a čudlíků, které Lexus nabízí).

Dále máme třídu Lexus, která implementuje všechny vlastnosti (features) rozhraní LuxusníAuto, ale samozřejmě i rozhraní Auto. K tomu je možné „dodat“ pouze schopného řídícího pracovníka (možná někdo znáte pejorativní synonymum manažer). Ten by do Favorita rozhodně nemohl sednout.

Příklad: Auta a uživatelé (pokračování)


Třída InterfaceRealization

Třída InterfaceRealization je specializace třídy Depencency::Realization. Jde o závislost mezi klasifikátorem a rozhraním. Říká, že klasifikátor splňuje pravidla rozhraní (implementuje vlastnosti (features) rozhraní). Šipka vede od klasifikátoru k rozhraní.

V návrhu UML 2.x se mluvilo o třídě Implementation, která nakonec byla přejmenována na InterfaceRealization.

V UML není přesně řečeno, která notace pro realizaci rozhraní se má používat. Naskytují se dvě, více intuitivní je ta s přerušovanou linkou a „generalizační“ šipkou na konci.
Příklad: Notace realizace rozhraní

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