Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

5. diel - UML - Class diagram

V predchádzajúcom kvíze, Kvíz - Use Case diagram a doménový model v UML, sme si overili nadobudnuté skúsenosti z predchádzajúcich lekcií.

Dnes si ukážeme nejaké ďalšie väzby a vytvoríme si diagram tried.

Class diagram

Diagram tried je diagram implementácie. To je rozdiel oproti doménovému modelu, ktorý bol skôr náčrt systému. Class diagram je už naostro, musí byť úplný a keď ho programátor prepíše do kódu, kód musí fungovať. Budeme tu teda mať všetky triedy, ktoré aplikácia bude obsahovať. Triedy budú mať všetky atribúty a tiež metódy. Diagram je platformovo závislý, teda špecifický pre určitý programovací jazyk. Okrem iného to znamená, že sa v identifikátoroch už nevyskytuje diakritika, atribúty majú dátové typy špecifické pre daný jazyk a podobne.

Význam diagramu

Class diagram je návod pre programátora, ktorý by už nemal s naším diagramom riešiť žiadne zásadné otázky ani problémy, jeho práca by mala byť (možno bohužiaľ :) ) rutinná. Návrh systému majú na starosti skúsení programátori a analytici. Vďaka návrhu sa potom samotné programovanie môže odovzdať aj menej skúseným programátorom, ktorí sú často lacnejší. Diagram tried je dobré vytvoriť však aj v prípade, že systém píšeme len pre seba, donúti nás to najprv premýšľať v kontexte celého systému a až potom programovať. Nestane sa nám, že napíšeme polovicu systému a potom zistíme, že to takto nebude fungovať. Zložitejšie informačné systémy už nemožno vytvárať bez návrhu a aj práca v tíme sa bez kvalitného návrhu nezaobíde. Diagram nám do budúcnosti poslúži aj ako dokumentácia.

Ukážme si ešte raz grafickú notáciu triedy v UML, teraz už kompletnú:

Trieda v UML diagrame - UML

V prvej časti obdĺžnika je opäť názov triedy.

V druhej časti sú prítomné atribúty s dátovými typmi. Pred každým atribútom je uvedený modifikátor prístupu. Máme 4 možnosti:

  • - (mínus) - Privátny atribút (private).
  • + (plus) - Verejný atribút (public).
  • # (hash kríž) - Protected atribút (protected).
  • ~ (tilda) - Atribút viditeľný v rámci balíka (package).

Význam prvých 3 určite poznáme z objektovo orientovaného programovania, package atribút je atribút viditeľný v rámci celého balíčka tried (teda menného priestoru).

Medzi názov atribútu a dátový typ píšeme dvojbodku.

Metódy sú v poslednom obdĺžniku zapisované podobne. Je možné špecifikovať ešte niekoľko symbolov, ale to sa v praxi príliš nepoužíva a preto sa tým nebudeme zaoberať.

Vzťahy

Oproti doménovému modelu tu môžeme použiť ešte ďalšie 2 vzťahy.

Realizácia (Realization)

Vzťah realizácie je medzi interface a triedou, ktorá tento interface implementuje. Trieda reprezentujúca interface má tzv. stereotyp. Ten sa píše do dvojitých špicatých zátvoriek, rovnako ako to je pri väzbe <<include>> v use case diagrame. Stereotyp umožňuje zmeniť význam určitého prvku v diagrame, teraz meníme triedu na interface. Trieda implementujúca interface je k interface pripojená väzbou podobnou dedičnosti, len čiara je vykreslená ako prerušovaná:

Realizácia interface v UML diagrame - UML

Asociačná trieda (Association class)

Asociačná trieda je trieda, ktorá sprostredkováva vzťah medzi 2 entitami. Výhodou je to, že môže vzťahu dodať nejaké atribúty. Často sa uvádza príklad tried Person a Tour, kedy asociačná trieda Participation priraďuje person na tour a pridáva čas arrival a departure. Ďalším príkladom je Person a Hotel, kedy v hoteli nie je pevne stanovený čas ubytovania a objednáva si ho konkrétna osoba. Podobná trieda by mohla byť ešte napr. medzi zamestnancom a firmou, kde by definovala plat zamestnanca. Ďalším využitím môže byť možnosť takto vytvoriť väzbu M:N, podobne, ako to funguje pri databázach. Asociačná trieda by teda držala kolekciu referencií. Použitie asociačnej triedy môže byť trochu zavádzajúce a pokiaľ si nie ste istí, tak sa jej radšej vyhnite:

Asociačná trieda v UML diagrame - UML

Príklad class diagramu

Prejdime k príkladu a vytvorme si class diagram ITnetwork. Budeme samozrejme vychádzať z predošlého doménového modelu.

Vopred upozorňujem, že príklad je veľmi zjednodušený, návrh nie je ideálny a nectí MVC architektúru, ako je pri webových aplikáciách zvykom:

Príklad class diagramu, diagramu tried v UML - UML

Vidíme, že oproti doménovému modelu tu máme úplne novú triedu System. Tá drží inštancie aktuálneho článku a aktuálneho užívateľa. Ďalej drží kolekcie articles, members a sections. Doménový model iba mapoval dôležité entity z hľadiska business zadania a teda ani nepremýšľal nad tým, ako systém bude vo vnútri fungovať. Počet tried sa teda prakticky vždy s prechodom od doménového modelu ku class diagramu zvýši.

Inštancia systému sa vytvára s každou HTTP požiadavkou, ako nám hovorí poznámka k triede naľavo. Za povšimnutie stojí aj výpočtový typ ArticleState, ktorý je tu zakreslený ako trieda a výpočtový typ je z neho vytvorený pomocou stereotypu <<enumerable>>. Zvyšok sme si už popísali, takže si diagram prezrite. Ako je to pri všetkých diagramoch, je to jeden z možných spôsobov, ako systém navrhnúť, možností je však nespočetne a aj tých správnych je mnoho.

V nasledujúcom cvičení, Riešené úlohy k 4.-5. lekcii UML, si precvičíme nadobudnuté skúsenosti z predchádzajúcich lekcií.


 

Predchádzajúci článok
Kvíz - Use Case diagram a doménový model v UML
Všetky články v sekcii
UML
Preskočiť článok
(neodporúčame)
Riešené úlohy k 4.-5. lekcii UML
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
208 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