UML stavové diagramy
Jeden objekt, každý stav, ve kterém může být, a každá událost, která s ním mezi nimi pohne. Diagram, který z otázky "dá se zachycená platba stornovat?" udělá místo hádky něco, na co jde ukázat.
9 min čteníUML 2.5.115 z 35
Krátká odpověď
- Popis přechodu je spouštěč [stráž] / účinek a všechny tři části jsou volitelné. Většina zmatku okolo stavových automatů je zmatek v tom jednom řádku.
- Vstupní akce proběhne při každé cestě do stavu, účinek přechodu jen u jednoho přechodu. Rozepisovat tentýž účinek po přechodech je právě to, čím se kopie rozejdou.
- Složený stav vyjímá společný odchod: přechod nakreslíte jednou z jeho okraje místo jednou z každého podstavu uvnitř.
- H se vrátí do naposledy aktivního podstavu, H s hvězdičkou do poslední vnořené konfigurace na každé úrovni. Je to notace pro pokračuj tam, kde jsme skončili.
01Co ukazuje#
Stavový diagram popisuje život jedné věci. Ne proces, ne interakci - jeden objekt nebo jednu komponentu a stavy, kterými prochází od vzniku po zánik.
Jeho síla je v negativním prostoru. Diagram výše kreslí šest přechodů. Všechno ostatní je tím zakázané: platba ve stavu Refunded se nemůže vrátit do Captured, platbu ve Failed nelze zachytit a platbu v Pending nelze vrátit. V diagramu tříd tahle omezení žijí v textu nebo v ničí hlavě. Tady jsou tím obrázkem.
02Stavy a přechody#
| Prvek | Notace | Co znamená |
|---|---|---|
| Počáteční pseudostav | vyplněný disk | Kde objekt začíná. Není to stav - nic tu nesetrvá; odcházející přechod se spustí okamžitě. |
| Stav | zaoblený obdélník | Podmínka, ve které objekt setrvává, dokud na něco čeká. Pojmenovaný přídavným jménem nebo příčestím: Authorized, ne Authorizing it. |
| Přechod | šipka s popisem | Pohyb mezi stavy vyvolaný událostí. Popsaný jako spouštěč [stráž] / efekt. |
| Koncový stav | kroužek kolem disku | Život objektu končí. Za tím už nic není. |
| Složený stav | stav obsahující stavy | Seskupuje podstavy. Přechod ven ze složeného stavu platí pro každý stav uvnitř. |
| Historie | zakroužkované H | Opětovný vstup do složeného stavu pokračuje v tom podstavu, ve kterém byl naposledy, ne v jeho počátečním. |
03Kam patří chování#
Chování může viset na přechodu nebo na stavu a správná volba odstraní spoustu duplicity.
- Efekt na přechodu - píše se za lomítko. Proběhne jednou, při tom konkrétním pohybu. Použijte ho, když chování patří té cestě.
entry / …- proběhne při každém vstupu do stavu, kterýmkoli přechodem. Pokud tři šipky do stavuCapturedvšechny potřebují zapsat účetní položku, je to jedna akceentry, ne tři efekty.exit / …- proběhne při každém opuštění stavu, kterýmkoli přechodem.do / …- běží nepřetržitě po dobu setrvání ve stavu a při jeho opuštění se přeruší. Tahle je pro dlouho běžící práci.
Pravidlo palce: pokud je chování o bytí ve stavu, použijte entry/do/exit. Pokud je o konkrétní cestě mezi dvěma stavy, dejte ho na přechod.
04Složené stavy a historie#
Skutečné životní cykly si vypěstují běžný případ: několik stavů, které na jednu událost reagují stejně. Platbu ve stavu Pending, Authorized i Captured lze zrušit a kreslit tři samostatné šipky cancel do stavu Cancelled je šum.
Řeší to složený stav. Zabalte ty tři do obklopujícího stavu s názvem Active a nakreslete jeden přechod cancel ven z Active. Platí pro kterýkoli podstav je právě aktuální. Tři šipky se změní na jednu a přidání čtvrtého podstavu později nic nestojí.
Pseudostav historie - zakroužkované H - řeší obnovení. Bez něj opětovný vstup do složeného stavu začne v jeho počátečním podstavu. S ním se stroj vrátí do podstavu, ve kterém byl při odchodu. Mělká historie (H) si pamatuje jednu úroveň; hluboká historie (H*) si pamatuje celé vnoření. Tohle chcete u čehokoli, co jde pozastavit.
05Kdy takový nakreslit#
Sáhněte po něm, když
- Entita má pole se stavem a pravidla o tom, které změny jsou povolené
- Objednávka, platba, předplatné, tiket, schvalování dokumentu - cokoli se životním cyklem
- Protokol nebo zařízení s režimy, kde nelegální přechody způsobí skutečnou škodu
- Chystáte se napsat enum se stavy a chcete mít nejdřív správné přechody
Sáhněte po něčem jiném, když
- Objekt má dva stavy - stačí věta
- Popisujete proces přes několik objektů; použijte diagram aktivit
- Stavy jsou ve skutečnosti jen kroky, které vždy následují po sobě v pořadí
- Zajímavé je, kdo koho volá, ne v jakém stavu co je
Stavový diagram se mapuje téměř přímo do kódu, což je u UML nezvyklé. Stavy se stanou enumem, přechody tabulkou a stráže podmínkami u každého záznamu. Nakreslit ho jako první a implementovat podle něj je jedno z mála míst, kde modelování přímočaře šetří čas a nejen dokumentuje.
06Časté chyby#
- Stavy pojmenované jako činnosti.
Authorizingnaznačuje probíhající práci; pokud tam objekt čeká, pojmenujte podmínku -Authorized,Awaiting capture. - Modelování procesu místo objektu.Pokud jsou vaše „stavy“ kroky, které vykonávají různí lidé, chcete diagram aktivit.
- Přechody bez spouštěče. Legální - spustí se, když skončí činnost
dodaného stavu - ale obvykle je to znak, že chybí událost. - Žádný koncový stav a žádné vysvětlení. Buď objekt opravdu žije navždy, nebo se na koncový stav zapomnělo. Stává se obojí; zamýšlené je jen jedno.
- Opakování téhož přechodu z každého stavu. Právě na to je složený stav.
Po jednom řádku na každé
- 01Jeden objekt, jeho stavy a události, které s ním pohybují. Ne proces.
- 02Přechody, které nenakreslíte, jsou tím omezením, kvůli kterému diagram existuje.
- 03Popisy přechodů znějí spouštěč [stráž] / efekt a každá část je volitelná.
- 04Akce entry, exit a do patří stavu; efekty patří jednomu přechodu.
- 05Složené stavy sbalí událost sdílenou několika podstavy do jedné šipky.
- 06Pseudostavy historie pokračují tam, kde stroj skončil, místo restartu.
07Časté dotazy#
Jaký je formát popisu přechodu v UML?
Spouštěč, pak stráž v hranatých závorkách, pak účinek za lomítkem. Spouštěč je událost, která může přechod vyvolat, stráž je podmínka, která musí platit, aby se vyvolal, a účinek je to, co se přitom stane. Všechny tři jsou volitelné, takže popis může být jen název události nebo jen stráž.
Jaký je rozdíl mezi vstupní akcí a účinkem přechodu?
Vstupní akce proběhne vždy při vstupu do stavu, kterýmkoli přechodem. Účinek přechodu proběhne jen u toho jednoho přechodu. Patří-li stejné chování ke každé cestě do stavu, je to vstupní akce - a rozepsat ho po jednotlivých přechodech je právě to, čím se kopie od sebe vzdálí.
Co je složený stav?
Stav obsahující vlastní stavový automat. Takto vyjmete skupinu stavů, které sdílejí stejný odchozí přechod: nakreslíte ho jednou z okraje složeného stavu místo jednou z každého podstavu.
Co znamená symbol H ve stavovém automatu?
Je to pseudostav historie. Mělká historie, H, se vrátí do naposledy aktivního podstavu složeného stavu; hluboká historie, H s hvězdičkou, se vrátí do poslední vnořené konfigurace na každé úrovni. Je to notace pro pokračuj tam, kde jsme skončili.
Kdy použít stavový automat místo diagramu aktivit?
Když je předmětem životní cyklus jednoho objektu a otázka zní, co se může stát dál. Stavový automat je soustředěný na věc a stavy, ve kterých může být; diagram aktivit je soustředěný na proces a kroky, kterými prochází.
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
Základy
Diagramy chování
Diagramy struktury
Diagramy chování
Diagramy chování
Diagramy chování