Diagram tříd

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
Obrázek 1 - Diagram tříd

Diagram tříd popisuje statickou strukturu systému, znázorňuje datové struktury a operace u objektů a souvislosti mezi objekty. Znázorňuje datový model systému od konceptuální úrovně až po implementaci. Datové struktury zařazuje do tříd a zobrazuje vztahy těchto tříd.[1]

Základní definice[editovat | editovat zdroj]

Patří do skupiny UML diagramů a je hlavním stavebním kamenem objektově orientovaného modelování. Používá se jak pro běžné koncepční modelování, tak i k detailnímu modelování či převodu modelů do programového kódu. Diagramy tříd může být také použit pro modelování dat.[2]

Části diagramu[editovat | editovat zdroj]

Diagram tříd kromě datové struktury obsahuje třídy systému, jejich atributy, metody či operace a také vztahy mezi jednotlivými objekty.

Třídy[editovat | editovat zdroj]

Příklad třídy v diagramu tříd.
Obrázek 2 - Jednoduchá třída, ze kterých se skládá diagram tříd.

Základním objektem diagramu tříd jsou pochopitelně třídy. Ty jsou většinou zastoupeny podobnými "boxy", jako jsou na obrázku. Třídy jsou rozděleny do 3 základních částí. Jsou to tyto:

  • V horní části třídy je tučným písmem název celé třídy. Ten by měl začínat velkým písmenem. Pokud by byl název víceslovný je vhodné použít CamelCase.
  • Ve střední části jsou atributy třídy jsou atributy třídy. Ty začínají dle standardů malým písmenem. Opět je zde pří víceslovných názvech použit CamelCase. Atributy jsou vlastně vlastnosti, které tato třída obsahuje. Na vzorovém příkladu na obrázku vlevo jsou to pro entitu zákazník vlastnosti jako adresa, telefon atd.
  • Ve spodní části třídy jsou obsaženy metody a operace, které může tato třída provést. Stejně jako u atributů začínají malým písmenem, podléhají CamelCase a jsou na konci označeny ještě závorkami.



Viditelnost[editovat | editovat zdroj]

Další součástí tříd jsou také symboly, které označují viditelnost jednotlivých částí diagramu a tříd. V příkladu na obrázku 2 jsou u atributů znaky "-" a u metod znaky "+". Ty zde nejsou náhodně. Označují viditelnost jednotlivých částí diagramu. Pro přehled, co který znak znamená, poslouží následující tabulka.[3]

Znaky označující viditelnost
+ - # / ~
Public Private Protected Derived Package

Vztahy[editovat | editovat zdroj]

Nedílnou součástí jsou jednotlivé vztahy dle UML, které propojují jednotlivé instance (třídy) v diagramu.

Mohutnost (Multiplicity)[editovat | editovat zdroj]

Než přejdeme k jednotlivým vztahům mezi instancemi diagramu, je třeba probrat mohutnost vztahů. Ve zkratce můžeme použít tuto definici. Mohutnost vztahu udává, kolik instancí jedné třídy může být svázáno s instancí třídy druhé.[4]

Pro upřesnění si uvedeme pár příkladů.

0 0..1 1 0..* 1..*
Žádná instance (zcela výjimečně) Žádná nebo právě jedna Právě jedna instance Žádná nebo více instancí Jedna nebo více instancí

Abychom shrnuli tuto část. Na obrázku 3 je zobrazen jednoduchý vztah mezi instacemi A a B. Podle definice v této kapitole je tedy jasné, že instance ze třídy A může být svázáno s jednou nebo více instacemi ze třídy B.

Vztah diagramu tříd
Obrázek 3 - Jednoduchý příklad vztahu pro vysvětlení mohutnosti vztahů.

Vztahy na úrovni instance[editovat | editovat zdroj]

Závislost (Dependency)[editovat | editovat zdroj]

Závislost je vztah mezi závislými a nezávislými prvky modelu. Je vytvořena mezi dvěma prvky. Pokud dojde ke změně definice jednoho prvku (server nebo cíl) můžou se změny projevit i na straně druhé (dále jen klient nebo zdroj). Tato asociace je jednosměrná.

Asociace (Association)[editovat | editovat zdroj]

Dalším ze vztahů je asociace. Ta představuje statický vztah sdílené mezi objekty dvou tříd.

Asociace
Obrázek 4 - Jednoduchý příklad asociačního vztahu.

Nejčastějším typem asociace je binární asociace (se dvěma konci). Ta je obvykle reprezentována jako čára. Asociace však může propojit libovolný počet tříd. Asociace se třemi odkazy se nazývá ternární asociace. Samotná asociace může být v grafickém UML vzhledu pojmenována, mít přiřazeny jména rolí, mohutnost, viditelnost či jiné další vlastnosti.

Existují čtyři různé typy sdružení: obousměrný, jednosměrný, agregace (zahrnuje agregaci složení) a reflexivní. Obousměrný i jednosměrný sdružení jsou nejobvyklejší. Například, třída, je spojena s rovinou třídy obousměrně.


Agregace (Aggregation)[editovat | editovat zdroj]

Agregace vyjadřuje slabší vztah mezi objektem a jeho částmi. Objektu reprezentujícímu celek se říká agregační (seskupený) objekt, jeho částem pak konstituční objekty (konstituenty).

Agregace
Obrázek 5 - Příklad agregace v diagramu tříd.

Vlastnosti agregace jsou:

  • Seskupený objekt může existovat bez svých konstitučních objektů.
  • Konstituent může být součástí více seskupení.[4]

V UML jazyce je graficky znázorněna jako nevyplněný diamant.

Příklad: Knihovna má studenty a knihy. Student však může existovat bez knihovny. Vztah mezi studentem a knihovnou je tedy agregace.

Kompozice, složení (Composition)[editovat | editovat zdroj]

Kompozice vyjadřuje silnější vztah mezi objektem a jeho částmi. Objektu reprezentujícímu celek se říká kompozitní (složený) objekt, jeho částem pak komponentní (složkové) objekty.

Kompozice pro diagram tříd.
Obrázek 6 - Příklad kompozice pro diagram tříd.

Vlastnosti kompozice jsou:

  • Složený objekt nemůže existovat bez svých komponent.
  • Komponentní objekt může být součástí pouze jedné kompozice.[4]

V UML jazyce je graficky znázorněna vyplněným diamantem.

Příklad: Faktura se skládá z jedné nebo více položek. V okamžiku, kdy faktura z nějakého důvodu zanikne, jsou nám k ničemu i položky pro tuto fakturu.

Vztahy na úrovni třídy[editovat | editovat zdroj]

Dědičnost (Generalization)[editovat | editovat zdroj]

Dědičnost
Obrázek 7 - Příklad dědičnosti v diagramu tříd.

Dědičnost je hierarchický vztah mezi třídami. Jeden ze dvou příbuzných tříd (podtříd), je považován za specializovaný druh druhého (super typu). V praxi to znamená, že každý případ potomka je také instancí rodičovské třídy.

V UML jazyce je grafický symbol pro dědičnost trojúhelník.

Jako vysvětlující příklad použijeme jednoduchý příklad z biologie.

Lidé jsou podtřídou opic, Ty jsou zase podtřídou savců atd. To znamená, že všechny opice jsou savci, mají jejich vlastnosti atd. Jsou zvláštní podtřídou savců a mají své specifické atributy, ale ty základní, dědí od své rodičovské třídy, tedy savců.

Realizace (Realization)[editovat | editovat zdroj]

Definici realizace můžeme ve zkratce shrnout takto. Nejčastěji je to vztah mezi rozhraním a třídou. Ve chvíli kdy jsou tyto 2 instance propojeny vztahem realizace, označujeme tak fakt, že třída implementuje všechny operace z daného rozhraní.

Realizace může však být také vztah mezi třídami, rozhraní, komponenty a balíčky, které spojuje klientský prvek s prvkem dodavatelským.

Závislost (Dependency)[editovat | editovat zdroj]

Závislost je slabší forma vztahu, která naznačuje, že jedna třída závisí na jiné, protože používá v určitém okamžiku v čase parametr, proměnnou nebo místní proměnnou závislé třídy. Někdy je vztah mezi dvěma třídami velmi slabý.

Reference[editovat | editovat zdroj]

  1. KUČEROVÁ, Helena. Diagram tříd [online]. Praha: Vyšší odborná škola informačních služeb, 2007-03-31, [cit. 2010-12-07]. Dostupné online. (česky) 
  2. www.methodsandtools.com [online]. www.methodsandtools.com, [cit. 2016-06-10]. Dostupné online.  
  3. FAKHROUTDINOV, Kirill. www.uml-diagrams.org [online]. www.uml-diagrams.org, [cit. 2016-06-10]. Dostupné online.  
  4. a b c dudka.cz [online]. dudka.cz, [cit. 2016-06-10]. Dostupné online.