IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

4. diel - UML - Doménový model

V predchádzajúcom cvičení, Riešené úlohy k 1.-2. lekciu UML, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.

V minulej lekcii, Riešené úlohy k 1.-2. lekciu UML , sme dokončili Use Case diagram. Dostávame sa k tzv. Doménovému modelu. Doménový model sa vytvára spolu s Use Case diagramom v počiatočnej fáze vývoja softvéru. Jedná sa o formu class diagramu, teda diagramu tried. Asi nemusím zmieňovať, že systém bude programovaný objektovo a preto bude aj tak navrhuje. Základná entitou je trieda.

Triedy v doménovom modeli sú však značne zjednodušené, neobsahujú metódy a majú len dôležité atribúty. Názvy tried, atribútov a ďalšie identifikátory môžeme písať s diakritikou. Doménový model je teda akýsi náčrt základných entít systému a vzťahov medzi nimi. Je platformovo nezávislý (nie je určený pre konkrétny programovací jazyk) a atribúty nemajú dátové typy.

Pri tvorbe doménového modelu vychádzame zo zadania klienta. Z neho identifikujeme kľúčové entity a vzťahy medzi nimi. Tieto entity zakreslíme do modelu ako triedy.

Grafická notácie triedy je obdĺžnik rozdelený vodorovne na 3 časti.

Notácie triedy v doménovom diagrame - UML

V prvej je zapísané meno triedy, v druhej sú jej atribúty a v tretej časti nájdeme metódy. Pre doménový model budeme uvádzať len zjednodušenú notáciu s názvom triedy a atribúty. Kompletné triedu si predstavíme nabudúce, u Class diagramu.

Triedy sú medzi sebou prepojené pomocou vzťahov.

Vzťahy

UML ponúka niekoľko druhov vzťahov, tie základné si vymenujeme.

Asociácie (Association)

Asociácia určuje základný vzťah medzi dvoma entitami. Tie môžu existovať nezávisle na sebe. Zakresľujú ju ako jednoduchú plnú čiaru.

Príklad jednoduché asociácie medzi 2mi entitami môže byť Auto a Vodič. Vzťah by sa znázornil takto:

UML notácie vzťahu asociácie medzi triedami v doménovom diagrame - UML

Ako štandard je smer na obe strany, teda že prvý entita má odkaz na druhú a naopak druhá na prvý. Toto správanie môžeme zmeniť pridaním jednoduchej šípky, ktorá smer špecifikuje a spôsobí, že odkaz si uchováva iba tá inštancie, z ktorej smeruje šípka.

Je možné vytvoriť asociáciu aj medzi 3mi triedami, ale tým sa nebudeme zaoberať.

Agregácie (Aggregation)

Agregácia reprezentuje vzťah typu celok - časť. Zakresľujú ju ako plnú čiaru, zakončenou na jednej strane prázdnym kosoštvorcom. Ten je umiestnený pri tej entity, ktorá reprezentuje celok (napr. Sekcia s článkami). Z hľadiska implementácie je to tak entita, ktorá drží kolekciu prvkov. Entita reprezentujúci časť môže existovať sama o sebe a byť súčasťou aj iných kolekcií.

Príkladom agregácie môže byť už spomínaná sekcia, obsahujúca články. Čísla na konci väzby znamenajú tzv. Multiplicitu, presnejšie, že sekcia obsahuje ľubovoľný počet článkov a článok patrí aspoň do 1 sekcie.

UML notácie vzťahu agregácie medzi triedami v doménovom diagrame - UML

Multiplicitě sa ešte budeme ďalej venovať.

Kompozície (Composition)

Kompozícia je podobná agregáciu, avšak reprezentuje silnejší vzťah. Entita časti nemá bez celku zmysel. Ak zanikne celok, zanikajú automaticky i jeho časti.

Kompozíciu zakresľujú rovnako ako agregáciu, kosoštvorec je však plný. U entity reprezentujúci celok musí byť multiplicita vždy 1. Táto väzba býva mätúce a odporučil by som sa jej skôr vyhýbať a nahradiť ju agregáciou.

Príkladom môže byť Objednávka a Položka objednávky. Kým článok z minulého príkladu dáva bez sekcie ešte nejaký zmysel, položka objednávky bez objednávky zmysel nedáva. Preto je tu použitá kompozícia.

UML notácie vzťahu kompozície medzi triedami v doménovom diagrame - UML

Generalizácia (Generalization)

Posledným vzťahom, ktorý si tu uvedieme, je generazilizace. Z hľadiska implementácie sa jedná o dedičnosť. Jedna entita dedia vlastnosti a správanie iné. S touto väzbou sme sa už stretli u Use Case diagramu.

Generalizácia zakresľujú ako plnú čiaru, zakončenou na jednej strane prázdnu uzavretú šípkou (alebo ak chcete trojuholníkom). Šípka je na strane entity, z ktorej sa dedia.

Príkladom môže byť trieda Tvar, z ktorej dedia triedy Štvorec a Kruh.

UML notácie vzťahu generalizácie medzi triedami v doménovom diagrame - UML

Multiplicita

Vráťme sa ešte k multiplicitě (čiže násobnosti). Multiplicitu môžeme uviesť u väzieb asociácie, agregácie a kompozície (tu iba z jednej strany).

Vráťme sa k príkladu sekcia - článok:

Multiplicitu tu čítame takto: Sekcia môže mať ľubovoľný počet článkov (to poznáme podľa hviezdičky pri triede článok). Článok patrí do 1 až ľubovoľne sekcií (to poznáme podľa 1 .. * u Sekcia). Poďme si teraz uviesť jednotlivé možné zápisy multiplicity:

  • 1 (číslo) - Označuje konkrétnu hodnotu (tu práve 1).
  • *** (Hviezdička)** - Označuje ľubovoľný počet (teda i 0). Namiesto hviezdičky môžeme v niektorých materiáloch nájsť symbol N.
  • 1 .. * (interval) - Pomocou 2 bodiek môžeme označiť interval. Do neho vkladáme nám už známe symboly, napr .: 2..6 alebo 1 .. * alebo 0..1.

Zápisy môžeme dokonca aj zlučovať, napr. Nasledovne: 1, 2, 3, 7 .. *. Tento zápis označuje multiplicitu 1, 2, 3 alebo 7 a viac.

Pokiaľ nie je multiplicita uvedená, označuje to predvolenú hodnotu 1.

Príklad

Pokračujme v našom návrhu ITnetwork, zamyslime sa nad základnými entitami a prepoj je vzťahy. Mohli by sme dospieť k podobnému výsledku (uviedol som aj atribúty, čo však nie je vôbec nutné):

Doménový model redakčného systému v UML - UML

Všimnite si, že v doménovom diagrame väzby ešte dodatočne popisujeme, v Class diagrame to už spravidla nerobíme. Vyplnená šípka označuje smer, v ktorom čítame popisok väzby, napr. Redaktor píše článok. Mohol by tu byť obrátený smer šípky a opis "bol napísaný", aj keď to neznie tak prirodzene.

Nabudúce, v lekcii UML - Class diagram , sa pozrieme na Class diagram.


 

Predchádzajúci článok
Riešené úlohy k 1.-2. lekciu UML
Všetky články v sekcii
UML
Preskočiť článok
(neodporúčame)
UML - Class diagram
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
8 hlasov
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity