Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.
IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

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 triedny diagram.

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ý, keď ho programátor prepíše do kódu, kód musí fungovať. Budeme tu mať teda 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, ten 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šie. 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, tentoraz už kompletnú:

Trieda v UML diagrame - UML - UML

V prvej časti obdĺžnika je opäť názov triedy, tentoraz už bez diakritiky.

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 v poslednom obdĺžniku sú 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, iba je čiara vykreslená ako prerušovaná.

Realizácia interface v UML diagrame - UML - 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 Osoba a Zajazd, kedy asociačná trieda Ucast priraďuje osobu na zájazd a dodáva čas príchodu a odchodu. Ďalším príkladom je Osoba a Hotel, kedy v hoteli nie je pevne stanovený čas ubytovania a objednáva si ho konkrétna osoba. Podobná trieda by mohla ešte napr. byť 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 - 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 - 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 článkov, členov a sekcií. 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 k Class diagramu zvýši.

Inštancia systému sa vytvára s každým HTTP požiadavkou, ako nám hovorí poznámka k triede naľavo. Za povšimnutie stojí aj výpočtový typ StavClanku, 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 možný spôsob, ako systém navrhnúť, možností je nespočetne a aj tých správnych je mnoho.

V nasledujúcom cvičení, Riešené úlohy k 4.-5. lekciu 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. lekciu UML
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
9 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