Archyno
UMLPřehled notace

Symboly UML diagramu tříd

Každá šipka, kosočtverec a přerušovaná čára, kterou diagram tříd může nést, nakreslená vedle svého významu - stránka, kterou si necháte otevřenou při kontrole značky.

11 min čteníUML 2.5.17 z 35

Krátká odpověď

  • Ozdobený konec čáry je ten, který nese význam: trojúhelník ukazuje na rodiče, kosočtverec sedí na vlastnícím celku a otevřená šipka míří na to, co se používá.
  • Plná čára s dutým trojúhelníkem je generalizace, přerušovaná je realizace. První dědí strukturu i chování, druhá jen slibuje operace.
  • Násobnost popisuje třídu, u které je napsaná - 0..* u Order tedy znamená mnoho objednávek, ne mnoho zákazníků.
  • Na krabicích: kurzíva znamená abstraktní, lomené závorky klíčové slovo nebo stereotyp, úvodní lomítko odvozený atribut a složené závorky omezení, které má podle modelu platit.

01Šest vztahů#

PrvekNotaceCo znamená
AsociaceTyhle dvě třídy o sobě vědí. Výchozí volba a správná odpověď mnohem častěji než ty pod ní.
GeneralizacePrázdný trojúhelník u rodiče. Potomek je druhem rodiče a může zastoupit všude tam, kde se čeká rodič.
RealizacePřerušovaná čára, prázdný trojúhelník u rozhraní. Třída poskytuje to, co rozhraní deklaruje, bez dědění stavu.
KompoziceVyplněný kosočtverec u celku. Část patří právě jednomu celku a maže se spolu s ním.
AgregacePrázdný kosočtverec u celku. Část může být sdílená a celek přežije. Jiný formální význam nenese.
ZávislostPřerušovaná otevřená šipka. Jedna třída používá druhou, aniž by na ni držela referenci - parametr, návratový typ, statické volání.
UML diagram tříd ukazující naráz každý druh vztahu. Order generalizuje z AbstractOrder, realizuje rozhraní Printable, je složený z OrderLine, agreguje Tag, je asociovaný s Customer a závisí na PriceService.
Každý druh vztahu, který diagram tříd unese, na jednom obrázku, aby šly čáry přímo porovnat.

Pravidlo, díky kterému se to zapamatuje, zní: zdobený konec je ten, na kterém záleží - trojúhelník ukazuje na obecnější klasifikátor, kosočtverec sedí na vlastnícím celku a otevřená šipka ukazuje na to, co se používá. Pokud si zapamatujete, který konec nese značku, význam si obvykle odvodíte.

02Samotné boxy#

Polovina značek na diagramu tříd je na čarách a druhá polovina na boxech, a právě tu druhou lidé přeskakují. Obdélník se jménem je třída; všechno níže mění, čím ten obdélník tvrdí, že je, a čtenář, který ten rozdíl nezná, přečte rozhraní jako třídu a diví se, proč nemá atributy.

PrvekNotaceCo znamená
TřídaOrderObyčejný obdélník se vzpřímeným jménem. Výchozí volba a jediná z těchto, která nepotřebuje žádné označení.
Abstraktní třídaAbstractOrderJméno kurzívou. Nejde instanciovat - existuje proto, aby se z ní generalizovalo. Tam, kde kurzíva nepřežije - a na tabuli nepřežije nikdy - se píše {abstract} pod jméno.
Rozhraní«interface» PrintableSmlouva s operacemi a bez stavu. Třídy se k němu dostávají realizací - přerušovanou čarou s prázdným trojúhelníkem - nikdy generalizací.
Výčet«enumeration» StatusPevná množina literálů, vypsaných po jednom na řádek v přihrádce pod jménem: DRAFT, PLACED, SHIPPED. Bez značek viditelnosti - literály jsou vždy veřejné.
Datový typ«dataType» MoneyHodnota bez identity: dvě instance se stejnými čísly jsou tatáž věc. «primitive» je tatáž myšlenka pro vestavěné typy.
Aktivní třída‖ Scheduler ‖Dvojité svislé čáry po stranách. Objekt vlastní vlastní vlákno řízení místo toho, aby čekal na zavolání - proces, démon, konzument fronty.

Formy boxů. Všechno kromě první je klíčové slovo nebo změna řezu písma, a právě proto se dají tak snadno přečíst bez povšimnutí.

Rozhraní má i druhou, menší notaci, která nestojí žádný box: lízátko - kroužek na tyčce - nakreslené na klasifikátoru, který ho poskytuje, a k němu patřící objímka, otevřený půlkruh, na tom, který ho potřebuje. Zatlačte je do sebe a máte kuličku s objímkou, ze které jsou postaveny diagramy komponent. Říká přesně to, co přerušovaný trojúhelník, na desetině místa, a je to správná volba ve chvíli, kdy má diagram víc než zhruba tři rozhraní.

03Uvnitř boxu: viditelnost, typy a násobnost#

Box třídy je pruh se jménem a pod ním až dvě přihrádky: atributy, pak operace. Obě jsou nepovinné a box, který je jen jméno, je zcela legální - a na diagramu o vztazích je obvykle tou správnou volbou.

PrvekNotaceCo znamená
Veřejný+ name: StringViditelný pro všechno. To, čím členy rozhraní vždy jsou.
Privátní- id: UUIDViditelný jen uvnitř třídy. Na většině návrhových diagramů výchozí.
Chráněný# state: StatusViditelný pro třídu a její podtypy.
Balíčkový~ cache: MapViditelný uvnitř vlastnícího balíčku. V praxi vzácný.
StatickýpodtrženéPatří klasifikátoru, ne instanci.
AbstraktníkurzívaTřída nebo operace nemá implementaci. Tam, kde by kurzíva nepřežila tabuli, se často píše «abstract».

Násobnost se píše na konci vztahu a syntaxe je malá: 1 právě jeden, 0..1 nepovinný, * nebo 0..* libovolný počet včetně nuly, 1..* alespoň jeden a 2..5 skutečný rozsah. Chybějící násobnost znamená neurčeno, ne jeden - a proto je nechat ji prázdnou mezerou, ne výchozí hodnotou.

Operace se píše + place(customer: Customer, at: Instant): Order - viditelnost, jméno, parametry s typy a za dvojtečkou návratový typ. Dvě ozdoby se objevují dost často na to, abyste je poznali: parametr může nést směr, jako v out receipt: Receipt, a atribut může nést výchozí hodnotu, jako v - status: Status = DRAFT. Ani jedno není povinné a doménový model bývá lepší bez obojího.

04Konce čáry: šipky, role a kvalifikátory#

Vztah nese význam na obou koncích a téměř všechno, co se na diagramu tříd při revizi ukáže jako špatné, je na konci, ne uprostřed. Čára říká, že dvě třídy jsou spojené; konce říkají, kdo se umí dostat ke komu, kolika, v jakém pořadí a pod jakým jménem.

PrvekNotaceCo znamená
NavigovatelnostOtevřená šipka na jednom konci: tenhle konec je dosažitelný z druhého a o cestě zpět se netvrdí nic. Order drží Customer; zda si zákazník umí vypsat své objednávky, je samostatná otázka.
NenavigovatelnéMalý křížek na konci. Výslovně nedosažitelné tím směrem - což je mnohem silnější tvrzení než nechat konec holý, a vyplatí se ho udělat na tom jednom či dvou místech modelu, kde jde o skutečné návrhové rozhodnutí.
Jméno role+ placedByJak se tenhle konec jmenuje z druhé strany. Nezbytné ve chvíli, kdy se třída vztahuje sama k sobě - manager a reports na dvou koncích mezi Employee a Employee - a užitečné vždy, když samotný název třídy neřekne, k čemu ta reference je.
Násobnost0..*Kolik objektů sedí na tomhle konci na jeden na druhém. Čtěte ji směrem ke konci, na kterém je napsaná: 1 u Customer a 0..* u Order znamená jeden zákazník, libovolný počet objednávek.
Řetězec vlastností{ordered}Ve složených závorkách vedle násobnosti. {ordered} znamená, že pořadí je součástí významu, {unique}, že duplikáty nemohou nastat - dohromady jsou rozdílem mezi seznamem, množinou a multimnožinou.
Kvalifikátor[ isbn ]Malý box na zdrojovém konci držící klíč. Mění 0..* na 0..1: knihovna má mnoho knih, ale knihovna kvalifikovaná ISBN má nejvýš jednu.
Asociační třída- - - EnrolmentTřída připojená přerušovanou čarou ke středu asociace, která drží atributy patřící dvojici, ne kterékoli straně - známka, datum zápisu, cena v době objednávky.
N-ární asociacePrázdný kosočtverec uprostřed a tři či více čar z něj. Legální, vzácné a téměř vždy srozumitelnější překreslené jako třída se třemi asociacemi - což z toho stejně udělá databáze.

Všechno, co jde napsat na konec čáry. Násobnost čtěte směrem ke konci, na kterém sedí - právě tahle konvence způsobí víc špatně přečtených diagramů než šipky.

05Poznámky, omezení a odvozené členy#

Poslední skupina značek je ta, která nese pravidla, jež kresba z boxů a čar sama vyjádřit neumí. Diagram tříd je struktura a polovina toho, co ví doménový expert, je podmínka na té struktuře - součet, který nikdy nesmí být záporný, dvojice vztahů, z nichž smí být vyplněn právě jeden.

PrvekNotaceCo znamená
Poznámka⎒ komentářObdélník s ohnutým rohem, připojený obyčejnou přerušovanou čarou k tomu, o čem je. Volný text: předpoklad, otevřená otázka, odkaz na ticket, ze kterého třída vznikla.
Omezení{total >= 0}Složené závorky, kdekoli omezení platí - uvnitř poznámky, vedle atributu, na konci asociace. Tvrzení, o kterém model říká, že platí vždy, v jakémkoli jazyce, který se čte jasně; OCL, pokud se model bude kontrolovat strojově, a běžný jazyk, pokud se bude číst.
Odvozený/ age: IntegerÚvodní lomítko. Hodnota se počítá z jiných místo toho, aby se ukládala - což je přesně ta informace, kterou potřebuje generátor schématu i recenzent kódu, a přesně ta, kterou lidé vynechávají.
Jen pro čtení{readOnly}Nastaveno při vytvoření a pak už nikdy. Na konci asociace je to rozdíl mezi referencí, kterou smíte přepnout, a tou, kterou nesmíte.
Xor{xor}Napsané na přerušované čáře mezi dvěma asociacemi: pro kterýkoli objekt smí být vyplněná právě jedna z nich. Faktura jde osobě nebo firmě, nikdy oběma.
Množina generalizací{complete, disjoint}Vedle skupiny generalizací sdílejících jednoho rodiče. complete znamená, že podtypy pokrývají každý případ, disjoint, že nic nemůže být dvěma z nich najednou. Ty čtyři kombinace jsou čtyři opravdu různé modely.

Jedna konvence mimo tuhle tabulku stojí za poznání, protože vypadá jako diagram tříd a není jím: podtržené jméno ve tvaru order1: Order je instance a diagram z takových je diagram objektů - tatáž notace ukazující jeden okamžik místo každého možného. Podtržení uvnitř boxu třídy znamená něco úplně jiného a je to statická značka z tabulky přihrádek výše.

06Lomené závorky a zbytek#

Text v lomených závorkách - «interface», «enumeration», «entity» - je stereotyp: rozšíření standardního slovníku, které říká, jakým druhem věci tenhle klasifikátor je nad rámec toho, že je „třída“. Několik jich definuje samotné UML; zbytek pochází z profilu, což je mechanismus, jak si vymyslet vlastní, aniž byste opustili jazyk.

Lomené závorky dělají dvě různé věci a specifikace je rozlišuje, ačkoli na papíře je nerozliší nic. «interface» a «enumeration» jsou klíčová slova: jsou součástí UML, mají pevný význam a jsou legální v každém nástroji. «aggregate root» či «pii» jsou stereotypy: váš vlastní slovník, definovaný v profilu, smysluplný jen pro čtenáře, kterému někdo řekl, co znamenají. Obojí se vyplatí používat. Vyplatí se vědět, které z nich jste právě napsali, protože ten druhý druh potřebuje na diagramu legendu a první ne.

Stereotyp může nést i označené hodnoty - {owner = payments-team, retention = 7y} pod stereotypovanou třídou - a takhle model začne držet metadata, která předtím špatně držela tabulka. To je mechanismus, který profil existuje definovat.

Po jednom řádku na každé

  1. 01Zdobený konec je ten, na kterém záleží: trojúhelník u rodiče, kosočtverec u celku, šipka u používaného.
  2. 02Prázdný trojúhelník je generalizace, přerušovaný prázdný trojúhelník realizace - plná čára dědí, přerušovaná jen slibuje.
  3. 03Vyplněný kosočtverec znamená smazání spolu s celkem; prázdný sdílení a přežití.
  4. 04Násobnost popisuje třídu, které se dotýká, takže ji čtěte směrem ke konci, na kterém sedí.
  5. 05Prázdná násobnost znamená neurčeno, ne jeden - je to mezera v diagramu.
  6. 06Úvodní lomítko je odvozené, složené závorky jsou omezení a podtržené jméno je instance, ne třída.
  7. 07Lomené závorky označují buď klíčové slovo UML, nebo váš vlastní stereotyp; vysvětlení na diagramu potřebuje jen ten druhý.

Pokud to všechno chcete vidět na skutečných modelech, přečtěte si rozpracované příklady; pokud vás zajímají důvody za značkami místo značek samotných, tak článek o diagramu tříd.

07Časté dotazy#

Co znamenají šipky v UML diagramu tříd?

Dutý trojúhelník je generalizace a přerušovaný realizace; plný kosočtverec je kompozice a dutý agregace; plná čára je asociace a přerušovaná otevřená šipka závislost. Hlava je v každém případě na obecnějším nebo vlastnícím konci.

Jaký je rozdíl mezi plným a dutým kosočtvercem?

Plný kosočtverec je kompozice, tedy část se maže spolu s celkem a patří právě jednomu celku. Dutý kosočtverec je agregace, tedy část může být sdílená a celek přežije. Agregace v UML 2.5.1 nenese kromě tohoto čtení žádnou formální sémantiku.

Co znamenají plus, minus a mřížka před atributem?

Jsou to značky viditelnosti: plus je veřejné, minus soukromé, mřížka chráněné a vlnovka balíčkové. Patří na návrhový diagram, kde je předmětem struktura kódu, a na doménovém modelu se obvykle vynechávají, protože o byznisu neříkají nic.

Co znamená lomítko před názvem atributu?

Úvodní lomítko označuje atribut jako odvozený: jeho hodnota se počítá z jiných atributů nebo asociací, místo aby se ukládala. Zápis /vek na třídě Osoba, která už drží datum narození, je to, co generátoru schématu řekne, aby nevytvářel sloupec, a recenzentovi, aby nehledal kód, který ho udržuje v souladu.

Jaký je rozdíl mezi klíčovým slovem UML a stereotypem?

Obojí se píše do lomených uvozovek a nejsou to tytéž věci. Klíčové slovo jako interface nebo enumeration je součástí samotného UML a znamená totéž v každém nástroji. Stereotyp jako aggregate root je váš vlastní slovník definovaný v profilu a čtenáři, kterému to nikdo neřekl, neříká nic - takže na diagramu potřebuje legendu, kterou klíčové slovo nepotřebuje.

V této sérii

Související články

Všechny články