Archyno
UMLDiagramy struktury

Příklady UML diagramů tříd

Dvě domény pořádně namodelované a zdůvodnění každé čáry na nich - knihovna, která potřebuje dědičnost, a košík, který potřebuje kompozici.

6 min čteníUML 2.5.15 z 35

Krátká odpověď

  • Dvě domény pokryjí každý druh vztahu, který budete kreslit: knihovna, která potřebuje dědičnost, a košík, který potřebuje kompozici.
  • Diagram je pohled na model, ne model. Pohled, který obsahuje každou třídu, neodpovídá na nic.
  • Pět až dvanáct tříd. Nad dvanáct se vztahy začnou křížit a pozornost jde na sledování čar místo domény.
  • Nakreslete třídy, o kterých je aktuální otázka, a zbylých dvě stě nechte v modelu, kde je nástroj stále najde.
UML diagram tříd knihovny. LibraryItem je abstraktní třída s title a id; Book i DVD ji generalizují. Member je v asociaci s Loan, jeden k nule nebo více, a Loan je v asociaci s právě jedním LibraryItem.
Knihovna. Abstraktní základ nese to, co má každá položka; podtypy nesou to, co mají jen ony.

01Knihovna, kde si dědičnost zaslouží místo#

Diagram výše se vyplatí číst vztah po vztahu. Book a DVD generalizují LibraryItem, což se kreslí jako dutý trojúhelník mířící na rodiče - a důvod kreslit to takhle, a ne jako dvě nesouvisející třídy se zduplikovanými atributy, je asociace pod tím. Loan míří na právě jeden LibraryItem, a protože míří na abstraktního rodiče, umí půjčit kterýkoli podtyp, aniž by věděl který.

To je celý test dědičnosti v doménovém modelu: ne "působí ty dvě věci podobně", ale je někde v modelu něco, co chce držet jednu nebo druhou, aniž by mu záleželo která. Pokud není, dvě samostatné třídy jsou menší a poctivější odpověď.

Všimněte si násobností na asociaci Member - Loan: 1 k 0..*. Člen bez výpůjček je člen; výpůjčka bez člena je chyba. Ta asymetrie je skutečným faktem o doméně a je uvedená na čáře, ne ponechaná na komentář. Článek o diagramu tříd pokrývá, jak se každý z těch symbolů kreslí.

02Košík, kde si místo zaslouží kompozice#

UML diagram tříd nákupního košíku. Basket je složený z jedné nebo více BasketLine a každá BasketLine je v asociaci s právě jedním Product. Basket je v asociaci s jedním rozhraním PricingRule, které realizují PercentageOff i BuyOneGetOne.
Košík. Plný kosočtverec říká, že položka nepřežije košík, na kterém je.

Tenhle neobsahuje žádnou dědičnost, a právě o to jde při jeho ukázání vedle knihovny. Má místo toho kompozici a rozhraní, a každé je tam z důvodu, na který ten druhý diagram neměl využití.

Plný kosočtverec mezi Basket a BasketLine je tvrzení: smažte košík a položky jdou s ním, protože položka košíku je sama o sobě bezvýznamná. Porovnejte to s obyčejnou asociací z BasketLine na Product, kde produkt položku zjevně přežije - tentýž tvar vztahu, dvě rozdílné životnosti, a notace je odlišuje.

PricingRule je bod rozšíření. Jsou nakreslené dvě realizace, protože jedna realizace není abstrakce, je to třída s krokem navíc - a ve chvíli, kdy jsou dvě, je přidání třetí akce novou třídou, ne novou větví v existující metodě.

03Jak kterýkoli z nich přečíst za třicet vteřin#

Oba diagramy se odvděčí za totéž pořadí čtení, a není zleva doprava. Začněte násobnostmi, protože ty jsou rozhodnutími: říkají, co systém připouští, a nejhůř se později mění. Pak čtěte kosočtverce, které říkají, co se maže s čím. Pak trojúhelníky, které říkají, co může zastoupit co. Atributy naposled, a jen ty, o kterých pochybujete.

Diagram, který tohle čtení přežije, se vyplatí si nechat. Ten, kde jsou násobnosti prázdné, není hotový, ať vypisuje kolik chce atributů - a to je zdaleka nejčastější stav, ve kterém diagram tříd najdete.

Po jednom řádku na každé

  1. 01Dědičnost kreslete tehdy, když něco v modelu drží rodičovský typ bez ohledu na to, který podtyp má.
  2. 02Kompozici použijte, když se část maže s celkem, a jinak obyčejnou asociaci.
  3. 03Rozhraní s jednou realizací je třída s kroky navíc; dvě z něj udělají bod rozšíření.
  4. 04Násobnosti jsou rozhodnutí na diagramu. Prázdné znamenají, že diagram není hotový.
  5. 05Pět až dvanáct tříd na diagram. Pohled, který drží všechno, neodpovídá na nic.

Dál: jak nakreslit jeden od nuly a reference symbolů na ověření značky, kterou si nejste jistí.

04Časté dotazy#

Jaký je dobrý příklad UML diagramu tříd?

Takový, který se dá přečíst jedním pohledem a je zároveň dost úplný na to, aby se o něm dalo diskutovat. Knihovna s abstraktní třídou LibraryItem a dvěma podtypy ukáže dědičnost; košík složený ze svých položek ukáže kompozici. Společně pokryjí každý druh vztahu, který budete kreslit.

Má diagram tříd zobrazit každou třídu systému?

Ne. Diagram je pohled na model, ne samotný model, a pohled, který obsahuje všechno, neodpovídá na nic. Nakreslete třídy, o kterých je aktuální otázka, a zbylých dvě stě nechte v modelu, kde je nástroj stále najde.

Kolik tříd patří na jeden diagram tříd?

Pět až zhruba dvanáct. Pod pět obvykle ještě není řečeno dost na to, aby se vyplatilo kreslit; nad dvanáct se vztahy začnou křížit a čtenář utrácí pozornost za sledování čar místo pochopení domény.

V této sérii

Související články

Všechny články