Archyno
UMLDiagramy chování

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.
UML stavový diagram platby. Z počátečního pseudostavu vstupuje platba do stavu Pending. Při autorizaci s dostatkem prostředků přejde do Authorized, při zamítnuté autorizaci do Failed. Z Authorized ji zachycení posune do Captured a zrušení do Voided. Z Captured ji vrácení posune do Refunded, který dosáhne koncového stavu.
Životní cyklus platby. Nakreslený je každý legální pohyb; každý pohyb, který nakreslený není, je zakázaný, a právě to je skutečný obsah diagramu.

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#

PrvekNotaceCo znamená
Počáteční pseudostavvyplněný diskKde objekt začíná. Není to stav - nic tu nesetrvá; odcházející přechod se spustí okamžitě.
Stavzaoblený obdélníkPodmí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 popisemPohyb mezi stavy vyvolaný událostí. Popsaný jako spouštěč [stráž] / efekt.
Koncový stavkroužek kolem diskuŽivot objektu končí. Za tím už nic není.
Složený stavstav obsahující stavySeskupuje podstavy. Přechod ven ze složeného stavu platí pro každý stav uvnitř.
Historiezakroužkované HOpětovný vstup do složeného stavu pokračuje v tom podstavu, ve kterém byl naposledy, ne v jeho počátečním.
Dva stavy spojené přechodem s popisem authorize, otevřená hranatá závorka funds ok zavřená závorka, lomítko reserve funds. Poznámka vysvětluje, že ty části jsou spouštěč, stráž a efekt.
Popis přechodu má tři volitelné části. Spouštěč je událost, stráž je podmínka a efekt je to, co se cestou stane.

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ří cestě.
  • entry / … - proběhne při každém vstupu do stavu, kterýmkoli přechodem. Pokud tři šipky do stavu Captured všechny potřebují zapsat účetní položku, je to jedna akce entry, 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#

  1. Stavy pojmenované jako činnosti. Authorizing naznačuje probíhající práci; pokud tam objekt čeká, pojmenujte podmínku - Authorized, Awaiting capture.
  2. Modelování procesu místo objektu.Pokud jsou vaše „stavy“ kroky, které vykonávají různí lidé, chcete diagram aktivit.
  3. Přechody bez spouštěče. Legální - spustí se, když skončí činnost do daného stavu - ale obvykle je to znak, že chybí událost.
  4. Žá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.
  5. 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é

  1. 01Jeden objekt, jeho stavy a události, které s ním pohybují. Ne proces.
  2. 02Přechody, které nenakreslíte, jsou tím omezením, kvůli kterému diagram existuje.
  3. 03Popisy přechodů znějí spouštěč [stráž] / efekt a každá část je volitelná.
  4. 04Akce entry, exit a do patří stavu; efekty patří jednomu přechodu.
  5. 05Složené stavy sbalí událost sdílenou několika podstavy do jedné šipky.
  6. 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

Související články

Všechny články