Archyno
UMLDiagramy struktury

Jak nakreslit UML diagram tříd

Pět kroků v pořadí, které funguje: najděte podstatná jména, nakreslete čáry, rozhodněte násobnosti, pak atributy a nakonec operace - a skončete, když diagram odpovídá na otázku.

7 min čteníUML 2.5.16 z 35

Krátká odpověď

  • Třídy, pak vztahy, pak násobnosti, pak atributy a nakonec operace. Atributy vypadají jako začátek a jsou tím nejhorším.
  • Podstatné jméno se stane třídou, když má identitu, měnící se stav a vlastní životnost. Barva nebo částka je atribut.
  • Hotový je tehdy, když odpovídá na otázku, kvůli které vznikl, a každý vztah na něm nese násobnost.
  • Ne tehdy, když jsou na něm všechny třídy, a ne tehdy, když jsou vyjmenované všechny atributy - do obou stavů se diagram dostane, aniž by na cokoli odpovídal.
Raný UML diagram tříd se čtyřmi třídami a bez atributů. Patient je v asociaci s Appointment, Appointment je v asociaci s Doctor a Appointment je v asociaci s Prescription.
Po druhém kroku. Čtyři podstatná jména a tři čáry, žádné atributy - a už teď se to vyplatí někomu ukázat.

01Krok jedna a dva: podstatná jména, pak čáry#

Krok jedna je zapsat, jak se doména popisuje nahlas, a podtrhnout podstatná jména."Pacient si domluví termín u lékaře a lékař může vystavit předpis" dá hned čtyři kandidáty. Nechte si ty, které mají tři vlastnosti: identitu (dva z nich se dají rozlišit), stav, který se v čase mění, a vlastní životnost. Podstatné jméno, které neprojde ani jednou - barva, částka, stav - je atributem něčeho jiného.

Krok dva je jedna čára na každou větu, kterou o doméně umíte říct. Ne na databázový join a ne na volání metody: čára znamená, že ty dvě třídy o sobě vědí v byznysovém smyslu. Diagram výše je tam, kde to končí, a už teď se vyplatí položit ho před někoho, kdo doménu zná, protože spor, který chcete, je o tom, jestli předpis patří k termínu, nebo k pacientovi - a ten spor je dostupný teď, dřív než se napsal jediný atribut.

02Krok tři: násobnosti, dřív než cokoli jiného#

Každá čára dostane na obou koncích číslo dřív, než se přidá jediný atribut. Tohle je krok, který lidé vynechávají, a ten, který se vyplatí, protože násobnost je rozhodnutí o tom, co systém připouští, a atribut je detail, který z toho vyplývá.

Každý konec přečtěte jako větu a řekněte ji nahlas. "Jeden pacient má nula nebo víc termínů" - v pořádku. "Jeden termín má přesně jednoho pacienta" - v pořádku, a vyplatí se to ověřit, protože ordinace, která někdy objedná celou rodinu, vám právě řekla opak. Tři otázky, které si položte na každém konci, jsou: může to být nula, může to být víc než jeden a mění se to ve špatný den?

Pak vyberte druh vztahu a agonizovat se vyplatí jen nad dvěma rozhodnutími. Maže se část spolu s celkem - pokud ano, kompozice. Drží něco rodičovský typ, aniž by mu záleželo na podtypu - pokud ano, generalizace. Všechno ostatní je obyčejná asociace a vypracované příklady ukazují oba ty soudy v akci.

03Kroky čtyři a pět: atributy, operace a zastavení#

Tentýž UML diagram tříd dokončený. Patient má id, name a dateOfBirth a je v asociaci s nula nebo více Appointment. Doctor má id, name a specialty a je v asociaci s nula nebo více Appointment. Appointment má startsAt, duration a status, nabízí operace book a cancel a je složený z nula nebo více Prescription.
Tentýž model v pátém kroku. Všimněte si kompozice: předpis nepřežije svůj termín.

Atributy přicházejí čtvrté a každý musí mít zdroj. Pokud neumíte říct, odkud hodnota pochází - z formuláře, z jiného systému, z výpočtu - je to dohad, a dohady jsou to, co způsobí, že model přestane sedět na věc, kterou popisuje. Typy se vyplatí psát: startsAt: Instant vyřeší spor, který startsAt: Date nechává otevřený.

Operace přicházejí páté a většina tříd nedostane žádnou. Operace patří na třídu tehdy, když to chování opravdu potřebuje její vlastní stav - cancel() potřebuje stav termínu, takže tam patří. Cokoli, co na svou práci potřebuje tři další objekty, je služba, a dát to sem je způsob, jakým se doménový model tiše změní na diagram kódu místo diagramu domény.

Pak zastavte. Dokončený diagram výše má čtyři třídy a odpovídá na otázku; přidat Clinic, Room, Invoice a Insurer by ho udělalo úplnějším a méně užitečným. Pokud je potřeba odpovědět na druhou otázku, nakreslete nad tímtéž modelem druhý pohled - na to pohledy jsou.

Po jednom řádku na každé

  1. 01Podstatná jména s identitou, měnícím se stavem a vlastní životností se stanou třídami. Zbytek jsou atributy.
  2. 02Čáry kreslete dřív než atributy a ukažte tu ošklivou verzi - je to ta, kterou lidé opravují.
  3. 03Násobnosti rozhodněte třetí, nahlas, s otázkou, jestli každý konec může být nula nebo víc než jeden.
  4. 04Každý atribut potřebuje zdroj. Typy vyřeší spory, které názvy nechávají otevřené.
  5. 05Zastavte, když je otázka zodpovězená, ne když je systém celý nakreslený.

04Časté dotazy#

Jak se rozhodnout, co se stane třídou?

Vezměte podstatná jména z toho, jak se doména popisuje nahlas, a nechte ta, která mají identitu, měnící se stav a vlastní životnost. Podstatné jméno, které je vždy jen hodnotou něčeho jiného, jako barva nebo částka, je atribut, ne třída.

V jakém pořadí kreslit diagram tříd?

Třídy, pak vztahy, pak násobnosti, pak atributy a nakonec operace. Atributy se zdají být samozřejmým začátkem a jsou tím nejhorším, protože právě je nejdřív zahodíte, když vás vztahy donutí přehodnotit, co kam patří.

Kdy je diagram tříd hotový?

Když odpovídá na otázku, kvůli které vznikl, a každý vztah na něm nese násobnost. Ne tehdy, když jsou na něm všechny třídy systému, a ne tehdy, když jsou vyjmenované všechny atributy - do obou těchto stavů se diagram dokáže dostat, aniž by na cokoli odpovídal.

V této sérii

Související články

Všechny články