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ů#
| Prvek | Notace | Co znamená |
|---|---|---|
| Asociace | Tyhle dvě třídy o sobě vědí. Výchozí volba a správná odpověď mnohem častěji než ty pod ní. | |
| Generalizace | Prázdný trojúhelník u rodiče. Potomek je druhem rodiče a může zastoupit všude tam, kde se čeká rodič. | |
| Realizace | Přerušovaná čára, prázdný trojúhelník u rozhraní. Třída poskytuje to, co rozhraní deklaruje, bez dědění stavu. | |
| Kompozice | Vyplněný kosočtverec u celku. Část patří právě jednomu celku a maže se spolu s ním. | |
| Agregace | Prázdný kosočtverec u celku. Část může být sdílená a celek přežije. Jiný formální význam nenese. | |
| Závislost | Př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í. |
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.
| Prvek | Notace | Co znamená |
|---|---|---|
| Třída | Order | Obyč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řída | AbstractOrder | Jmé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» Printable | Smlouva 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» Status | Pevná 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» Money | Hodnota 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.
| Prvek | Notace | Co znamená |
|---|---|---|
| Veřejný | + name: String | Viditelný pro všechno. To, čím členy rozhraní vždy jsou. |
| Privátní | - id: UUID | Viditelný jen uvnitř třídy. Na většině návrhových diagramů výchozí. |
| Chráněný | # state: Status | Viditelný pro třídu a její podtypy. |
| Balíčkový | ~ cache: Map | Viditelný uvnitř vlastnícího balíčku. V praxi vzácný. |
| Statický | podtržené | Patří klasifikátoru, ne instanci. |
| Abstraktní | kurzíva | Tří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.
| Prvek | Notace | Co znamená |
|---|---|---|
| Navigovatelnost | Otevř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 | + placedBy | Jak 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ásobnost | 0..* | 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 | - - - Enrolment | Tří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í asociace | ◇ | Prá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.
| Prvek | Notace | Co 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é
- 01Zdobený konec je ten, na kterém záleží: trojúhelník u rodiče, kosočtverec u celku, šipka u používaného.
- 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.
- 03Vyplněný kosočtverec znamená smazání spolu s celkem; prázdný sdílení a přežití.
- 04Násobnost popisuje třídu, které se dotýká, takže ji čtěte směrem ke konci, na kterém sedí.
- 05Prázdná násobnost znamená neurčeno, ne jeden - je to mezera v diagramu.
- 06Úvodní lomítko je odvozené, složené závorky jsou omezení a podtržené jméno je instance, ne třída.
- 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
- 01Co je UML?
- 02Symboly UML
- 03Výběr diagramu
- 04Diagramy tříd
- 05Příklady diagramů tříd
- 06Jak nakreslit diagram tříd
- 07Symboly diagramu tříd
- 08Sekvenční diagramy
- 09Příklady sekvenčních diagramů
- 10Jak nakreslit sekvenční diagram
- 11Diagramy případů užití
- 12Příklady případů užití
- 13Diagramy aktivit
- 14Příklady aktivit
- 15Stavové diagramy
- 16Příklady stavových diagramů
- 17Diagramy komponent
- 18Příklady komponent
- 19Kreslení diagramu komponent
- 20Symboly komponent
- 21Diagramy nasazení
- 22Příklady nasazení
- 23Diagramy objektů
- 24Diagramy balíků
- 25Diagramy složené struktury
- 26Komunikační diagramy
- 27Sekvenční vs komunikační
- 28Časové diagramy
- 29Diagramy přehledu interakcí
- 30Diagramy profilů
- 31UML pomocí AI
- 32Příklad e-shopu
- 33Příklad banky
- 34Příklad mikroslužeb
- 35Příklad AWS
Související články
Diagramy struktury
Diagramy struktury
Diagramy struktury
Přehled notace
Přehled notace
Diagramy chování