Archyno
UMLDiagramy štruktúry

UML diagramy tried

Diagram štruktúry, ktorý nesie väčšinu slovníka UML: typy, ich atribúty a operácie a šesť druhov čiar, ktoré ich spájajú. Naučte sa poriadne tento a ďalších šesť diagramov štruktúry vás bude stáť takmer nič.

11 min čítaniaUML 2.5.14 z 35

Krátka odpoveď

  • Agregácia aj kompozícia znamenajú má. Jediný rozdiel je, či časti prežijú celok: prázdny kosoštvorec áno, plný nie.
  • Generalizácia je plná čiara s prázdnym trojuholníkom, realizácia prerušovaná s tým istým trojuholníkom. Plná je je druhom, prerušovaná napĺňa zmluvu.
  • Násobnosť stojí na konci asociácie, nie uprostred: 1, 0..1, 1..* a samotná hviezdička ako skratka za 0..*.
  • Diagram tried modeluje typy so správaním, ER diagram uložené dáta. Jedna doména má často oboje a nemusia si zodpovedať prvok po prvku.
UML diagram tried platobnej domény. Merchant je asociovaný s Payment v pomere jedna k mnohým. Payment je zložený z jedného Money a nula či viacerých Refund a je asociovaný s jedným rozhraním PaymentMethod, ktoré realizujú Card aj BankTransfer.
Diagram tried platobnej domény. Každá značka na ňom je vysvetlená nižšie a tá istá doména sa objavuje v každom ďalšom článku tejto série.

01Ako čítať box#

Trieda je obdĺžnik s najviac tromi oddielmi nad sebou. Povinný je len prvý.

  • Názov. Meno typu, na stred a tučne. Ak je trieda abstraktná, názov je kurzívou. Kľúčové slovo vo francúzskych úvodzovkách nad ním - «interface», «enumeration» - zúži, o aký druh klasifikátora ide.
  • Atribúty. Jeden na riadok, zapísaný ako viditeľnosť názov: Typ [násobnosť] = predvolená hodnota. Všetko okrem názvu je voliteľné.
  • Operácie. Jedna na riadok, zapísaná ako viditeľnosť názov(parametre): NávratovýTyp.

Úvodný symbol pri každom člene je jeho viditeľnosť: + verejný, - súkromný, # chránený a ~ balíkový. Podčiarknutý člen je statický - patrí triede, nie inštancii.

02Šesť čiar#

Takmer celý význam diagramu tried je v čiarach a stojí za to zapamätať si len šesť. Koniec, ktorý nesie ozdobu, je v každom prípade podstatný.

PrvokNotáciaČo znamená
AsociáciaŠtrukturálne prepojenie. Inštancie jednej vedia o inštanciách druhej. Násobnosť na každom konci hovorí koľko.
Smerovaná asociáciaTo isté, ale navigovateľné len v smere šípky. Payment sa dostane k svojmu PaymentMethod; metóda sa späť nedostane.
AgregáciaVzťah celok-časť, kde časť prežije celok. Prázdny kosoštvorec sedí pri celku.
KompozíciaVzťah celok-časť, kde časť zanikne s celkom. Vyplnený kosoštvorec pri celku. Časť má práve jedného vlastníka.
GeneralizáciaDedičnosť. Prázdny trojuholník mieri na rodiča. Čítajte to ako „je druhom“.
RealizáciaImplementácia rozhrania. Prerušovaná čiara, prázdny trojuholník pri rozhraní.
ZávislosťNajslabšie prepojenie: jedna používa druhú, typicky ako parameter alebo lokálnu premennú. Používajte striedmo, inak skončí každá trieda spojená s každou.

Plné čiary bez trojuholníka sú štrukturálne; prerušované čiary sú vždy slabšie než plné.

03Násobnosť#

Číslo na konci čiary hovorí, koľko inštancií sa zúčastňuje. Sedí na vzdialenejšom konci od triedy, ktorú obmedzuje, a to ľudí mýli: pri čítaní Merchant 1 —— 0..* Payment znamená 0..* vedľa Payment, že jeden obchodník má nula alebo viac platieb.

  • 1 - práve jedna. Predvolená hodnota, keď nie je napísané nič, hoci napísať ju je jasnejšie.
  • 0..1 - voliteľná. Toto je notácia pre referenciu, ktorá môže byť prázdna.
  • * alebo 0..* - ľubovoľný počet vrátane nuly.
  • 1..* - aspoň jedna. Zmysluplné a často zabudnuté obmedzenie.
  • 2..4 - explicitný rozsah.

Násobnosť je najlacnejšou výhrou v presnosti v celej notácii. „Môže to byť prázdne?“ a „môže ich byť viac než jedna?“ sú tie dve otázky, ktoré na návrhovom review vyplavia skutočné nezhody, a odpoveď sa zapíše tromi znakmi.

04Asociácia, agregácia, kompozícia#

Tieto tri sú ten istý tvar vzťahu v troch silách a rozdiel je o životnom cykle, nie o tom, ako silno spolu tie dve veci súvisia.

Dva porovnané diagramy. Vľavo má Payment vyplnený kosoštvorec smerom k Money s popisom kompozícia: Money nemôže existovať bez Payment. Vpravo má Team prázdny kosoštvorec smerom k Person s popisom agregácia: Person prežije Team.
Testom je zmazanie. Vľavo kompozícia: zničte celok a časť zanikne s ním. Vpravo agregácia: časť pokračuje ďalej.

Obyčajná asociácia netvrdí o vlastníctve nič. Dve veci sú prepojené. To je všetko a je to správna predvoľba.

Agregácia - prázdny kosoštvorec - tvrdí vzťah celok-časť, kde je časť nezávislá. Poctivá rada: agregácia nesie v UML 2.5.1 takmer žiadnu formálnu sémantiku a čitatelia sa nezhodnú, čo z nej vyplýva. Ak si nie ste istí medzi asociáciou a agregáciou, nakreslite asociáciu.

Kompozícia - vyplnený kosoštvorec - je tá, ktorá hovorí niečo silné a overiteľné. Časť patrí práve jednému celku a zaniká s ním. V platobnom modeli existuje Refund len ako súčasť Payment; voľne poletujúce vrátenie neexistuje. To je skutočné obmedzenie, ktoré stojí za zápis, a mapuje sa priamo na kaskádové mazanie alebo vlastnenú kolekciu v kóde.

05Kedy taký nakresliť#

Siahnite po ňom, keď

  • Dohoda na doménovom slovníku s ľuďmi, ktorí kód čítať nebudú
  • Vzťahy majú skutočné obmedzenia - voliteľnosť, kardinalita, vlastníctvo
  • Zaškolenie niekoho do podsystému, ktorého tvar zo stromu súborov zjavný nie je
  • Návrh schémy, API kontraktu alebo čohokoľvek s uloženou štruktúrou

Siahnite po niečom inom, keď

  • Prekresľovali by ste to, čo IDE vygeneruje zo zdrojáku jedným klikom
  • Otázka je o poradí alebo čase - kreslite sekvenčný diagram alebo diagram aktivít
  • Triedy sú čistá inštalatérčina frameworku bez doménového významu
  • Máte chuť dať na jedno plátno každú triedu v systéme

Najužitočnejšie diagramy tried sú v praxi malé. Sedem až dvanásť tried, atribúty na tých, o ktorých sa práve hovorí, a vynechané všade inde, a každá čiara nesie násobnosť. Taký diagram sa na porade prečíta a urovná spory. Diagram tried so sto boxmi je artefakt, nie komunikácia.

06Päť chýb, ktorým sa oplatí vyhnúť#

  1. Šípky mieriace naopak. Generalizácia a realizácia mieria na abstrakciu. Ak máte trojuholník na potomkovi, diagram hovorí opak toho, čo ste mysleli.
  2. Kompozícia použitá pre „silne súvisí“. Vyplnený kosoštvorec je tvrdenie o životnom cykle. Použite ho len vtedy, keď zničenie celku naozaj zničí aj časť.
  3. Žiadne násobnosti. Čiara, ktorá nemá na koncoch nič, zahodila tú najhodnotnejšiu informáciu, akú by diagram mohol niesť.
  4. Miešanie výšok. Doménové triedy a triedy frameworku na jednom plátne. Rozdeľte to; každý diagram má byť čitateľný pre jedno publikum.
  5. Modelovanie každého gettera. Operácie patria na diagram vtedy, keď nesú význam. getName() nenesie.

Ak chcete model tried overiť voči realite, nakreslite jeden objektový diagram - jediný konkrétny snímok inštancií. Násobnosti, ktoré v abstraktnej rovine vyzerali v poriadku, zvyknú padnúť hneď, ako ich skúsite vyplniť skutočnými hodnotami.

Po jednom riadku na každé

  1. 01Tri oddiely: názov, atribúty, operácie. Radšej vynechať než nechať prázdne.
  2. 02Značky viditeľnosti sú + - # ~; podčiarknutie znamená statický, kurzíva v názve abstraktný.
  3. 03Význam nesie šesť čiar; ozdobený koniec je vždy podstatný.
  4. 04Generalizácia a realizácia mieria na abstrakciu.
  5. 05Kompozícia je tvrdenie o životnom cykle - časť zaniká s celkom. Agregácia takmer nič neznamená; radšej obyčajnú asociáciu.
  6. 06Násobnosť je najlacnejšou dostupnou výhrou v presnosti. Dajte ju na každú čiaru.

07Časté otázky#

Aký je rozdiel medzi agregáciou a kompozíciou?

Oboje znamená má, a rozdiel je v tom, čo sa stane, keď celok zanikne. Agregácia, prázdny kosoštvorec, znamená, že časti môžu celok prežiť: zmažte oddelenie a jeho zamestnanci stále existujú. Kompozícia, plný kosoštvorec, znamená, že nemôžu: zmažte objednávku a jej riadky idú s ňou.

Čo znamenajú znaky plus, mínus a mriežka v diagrame tried?

Sú to značky viditeľnosti na atribútoch a operáciách, písané tesne pred názvom člena. Plus je verejný, mínus súkromný, mriežka chránený a vlnovka viditeľný v rámci balíka.

Čo znamená 0..* v UML?

Je to násobnosť a znamená nula alebo viac. Násobnosť stojí na konci asociácie a obmedzuje, koľko inštancií sa na tomto konci môže zúčastniť: 1 je práve jedna, 0..1 je voliteľná, 1..* je jedna alebo viac a samotná hviezdička je skratka za 0..*.

Aký je rozdiel medzi generalizáciou a realizáciou?

Generalizácia je dedičnosť medzi dvoma triedami, kreslená plnou čiarou s prázdnym trojuholníkom. Realizácia je trieda implementujúca rozhranie, kreslená prerušovanou čiarou s rovnakým prázdnym trojuholníkom. Plná znamená je druhom, prerušovaná znamená napĺňa zmluvu.

Čím sa UML diagram tried líši od ER diagramu?

Diagram tried modeluje typy, ktoré majú správanie, takže operácie patria na triedu a popisuje objekty v pamäti. ER diagram modeluje dáta, ktoré systém ukladá, nemá operácie a jeho vzťahy sú obmedzené na to, čo dokáže vynútiť relačná databáza. Jedna doména má často oboje a nemusia si zodpovedať prvok po prvku.

V tejto sérii

Súvisiace články

Všetky články