Diagram tříd
Author
Albert FloresObrá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.
Základní definice
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. +more Diagram tříd může být také použit pro modelování dat.
Části diagramu
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
+more|vlevo|rám|170x170pixelů'>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. 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
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 "+". +more Ty zde nejsou náhodně. Označují viditelnost jednotlivých částí diagramu. Pro přehled, co který znak znamená, poslouží následující tabulka.
. Public Private Protected Derived Package
Vztahy
Nedílnou součástí jsou jednotlivé vztahy dle UML, které propojují jednotlivé instance (třídy) v diagramu.
Mohutnost (Multiplicity)
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. +more Mohutnost vztahu udává, kolik instancí jedné třídy může být svázáno s instancí třídy druhé.
Pro upřesnění si uvedeme pár příkladů.
style":"text-align:center;"}" |0 | 0. +more1 | 1 | 0. | 1. |
---|---|---|---|---|
style":"text-align:center;"}" |Žá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í |
Vztahy na úrovni instance
Závislost (Dependency)
Závislost je vztah mezi závislými a nezávislými prvky modelu. Je vytvořena mezi dvěma prvky. +more Pokud dojde ke změně definice jednoho prvku (server nebo cíl), mohou se změny projevit i na straně druhé (dále jen klient nebo zdroj). Tato asociace je jednosměrná.
Asociace (Association)
Dalším ze vztahů je asociace. Ta představuje statický vztah sdílené mezi objekty dvou tříd. +more 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řazena 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ší. +more Například, třída, je spojena s rovinou třídy obousměrně.
Agregace (Aggregation)
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). +more 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í. 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)
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. +more 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. 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
Dědičnost (Generalization)
Obrázek 7 - Příklad dědičnosti v diagramu tříd. +more 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. +more 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)
Realizace je vztah mezi zdrojovou (mateřskou) třídou a její realizací dceřinou třídou. Nejčastěji je to vztah mezi rozhraním a třídou. +more Ve chvíli kdy jsou tyto 2 třídy 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)
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ý.