Archyno
UMLDiagramy správania

UML stavové diagramy

Jeden objekt, každý stav, v ktorom môže byť, a každá udalosť, ktorá ním medzi nimi pohne. Diagram, ktorý z otázky "dá sa zachytená platba stornovať?" spraví namiesto hádky niečo, na čo sa dá ukázať.

9 min čítaniaUML 2.5.115 z 35

Krátka odpoveď

  • Popis prechodu je spúšťač [stráž] / účinok a všetky tri časti sú voliteľné. Väčšina zmätku okolo stavových automatov je zmätok v tom jednom riadku.
  • Vstupná akcia prebehne pri každej ceste do stavu, účinok prechodu len pri jednom prechode. Rozpisovať ten istý účinok na prechody je práve to, čím sa kópie rozídu.
  • Zložený stav vyníma spoločný odchod: prechod nakreslíte raz z jeho okraja namiesto raz z každého podstavu vnútri.
  • H sa vráti do naposledy aktívneho podstavu, H s hviezdičkou do poslednej vnorenej konfigurácie na každej úrovni. Je to notácia pre pokračuj tam, kde sme skončili.
UML stavový diagram platby. Z počiatočného pseudostavu vstupuje platba do stavu Pending. Pri autorizácii s dostatkom prostriedkov prejde do Authorized, pri zamietnutej autorizácii do Failed. Z Authorized ju zachytenie posunie do Captured a zrušenie do Voided. Z Captured ju vrátenie posunie do Refunded, ktorý dosiahne koncový stav.
Životný cyklus platby. Nakreslený je každý legálny pohyb; každý pohyb, ktorý nakreslený nie je, je zakázaný, a práve to je skutočný obsah diagramu.

01Čo ukazuje#

Stavový diagram popisuje život jednej veci. Nie proces, nie interakciu - jeden objekt alebo jeden komponent a stavy, ktorými prechádza od vzniku po zánik.

Jeho sila je v negatívnom priestore. Diagram vyššie kreslí šesť prechodov. Všetko ostatné je tým zakázané: platba v stave Refunded sa nemôže vrátiť do Captured, platbu v Failed nemožno zachytiť a platbu v Pending nemožno vrátiť. V diagrame tried tieto obmedzenia žijú v texte alebo v ničej hlave. Tu sú tým obrázkom.

02Stavy a prechody#

PrvokNotáciaČo znamená
Počiatočný pseudostavvyplnený diskKde objekt začína. Nie je to stav - nič tu nezotrvá; odchádzajúci prechod sa spustí okamžite.
Stavzaoblený obdĺžnikPodmienka, v ktorej objekt zotrváva, kým na niečo čaká. Pomenovaný prídavným menom alebo príčastím: Authorized, nie Authorizing it.
Prechodšípka s popisomPohyb medzi stavmi vyvolaný udalosťou. Popísaný ako spúšťač [stráž] / efekt.
Koncový stavkrúžok okolo diskuŽivot objektu končí. Za tým už nič nie je.
Zložený stavstav obsahujúci stavyZoskupuje podstavy. Prechod von zo zloženého stavu platí pre každý stav vnútri.
Históriazakrúžkované HOpätovný vstup do zloženého stavu pokračuje v tom podstave, v ktorom bol naposledy, nie v jeho počiatočnom.
Dva stavy spojené prechodom s popisom authorize, otvorená hranatá zátvorka funds ok zatvorená zátvorka, lomka reserve funds. Poznámka vysvetľuje, že tie časti sú spúšťač, stráž a efekt.
Popis prechodu má tri voliteľné časti. Spúšťač je udalosť, stráž je podmienka a efekt je to, čo sa cestou stane.

03Kam patrí správanie#

Správanie môže visieť na prechode alebo na stave a správna voľba odstráni veľa duplicity.

  • Efekt na prechode - píše sa za lomku. Prebehne raz, pri tom konkrétnom pohybe. Použite ho, keď správanie patrí tej ceste.
  • entry / … - prebehne pri každom vstupe do stavu, ktorýmkoľvek prechodom. Ak tri šípky do stavu Captured všetky potrebujú zapísať účtovnú položku, je to jedna akcia entry, nie tri efekty.
  • exit / … - prebehne pri každom opustení stavu, ktorýmkoľvek prechodom.
  • do / … - beží nepretržite počas zotrvania v stave a pri jeho opustení sa preruší. Toto je tá pre dlho bežiacu prácu.

Pravidlo palca: ak je správanie o bytí v stave, použite entry/do/exit. Ak je o konkrétnej ceste medzi dvoma stavmi, dajte ho na prechod.

04Zložené stavy a história#

Skutočné životné cykly si vypestujú bežný prípad: viacero stavov, ktoré na jednu udalosť reagujú rovnako. Platbu v stave Pending, Authorized aj Captured možno zrušiť a kresliť tri samostatné šípky cancel do stavu Cancelled je šum.

Rieši to zložený stav. Zabaľte tie tri do obklopujúceho stavu s názvom Active a nakreslite jeden prechod cancel von z Active. Platí pre ktorýkoľvek podstav je práve aktuálny. Tri šípky sa zmenia na jednu a pridanie štvrtého podstavu neskôr nič nestojí.

Pseudostav histórie - zakrúžkované H - rieši obnovenie. Bez neho opätovný vstup do zloženého stavu začne v jeho počiatočnom podstave. S ním sa stroj vráti do podstavu, v ktorom bol pri odchode. Plytká história (H) si pamätá jednu úroveň; hlboká história (H*) si pamätá celé vnorenie. Toto chcete pri čomkoľvek, čo sa dá pozastaviť.

05Kedy taký nakresliť#

Siahnite po ňom, keď

  • Entita má pole so stavom a pravidlá o tom, ktoré zmeny sú povolené
  • Objednávka, platba, predplatné, tiket, schvaľovanie dokumentu - čokoľvek so životným cyklom
  • Protokol alebo zariadenie s režimami, kde nelegálne prechody spôsobia skutočnú škodu
  • Chystáte sa napísať enum so stavmi a chcete mať najprv správne prechody

Siahnite po niečom inom, keď

  • Objekt má dva stavy - stačí veta
  • Popisujete proces cez viacero objektov; použite diagram aktivít
  • Stavy sú v skutočnosti len kroky, ktoré vždy nasledujú po sebe v poradí
  • Zaujímavé je, kto koho volá, nie v akom stave čo je

Stavový diagram sa mapuje takmer priamo do kódu, čo je pri UML nezvyčajné. Stavy sa stanú enumom, prechody tabuľkou a stráže podmienkami na každom zázname. Nakresliť ho ako prvý a implementovať podľa neho je jedno z mála miest, kde modelovanie priamočiaro šetrí čas a nielen dokumentuje.

06Časté chyby#

  1. Stavy pomenované ako činnosti. Authorizing naznačuje prebiehajúcu prácu; ak tam objekt čaká, pomenujte podmienku - Authorized, Awaiting capture.
  2. Modelovanie procesu namiesto objektu.Ak sú vaše „stavy“ krokmi, ktoré vykonávajú rôzni ľudia, chcete diagram aktivít.
  3. Prechody bez spúšťača. Legálne - spustia sa, keď skončí činnosť do daného stavu - ale zvyčajne je to znak, že chýba udalosť.
  4. Žiadny koncový stav a žiadne vysvetlenie. Buď objekt naozaj žije navždy, alebo sa na koncový stav zabudlo. Stáva sa oboje; zamýšľané je len jedno.
  5. Opakovanie toho istého prechodu z každého stavu. Práve na to je zložený stav.

Po jednom riadku na každé

  1. 01Jeden objekt, jeho stavy a udalosti, ktoré ním pohybujú. Nie proces.
  2. 02Prechody, ktoré nenakreslíte, sú tým obmedzením, kvôli ktorému diagram existuje.
  3. 03Popisy prechodov znejú spúšťač [stráž] / efekt a každá časť je voliteľná.
  4. 04Akcie entry, exit a do patria stavu; efekty patria jednému prechodu.
  5. 05Zložené stavy zbalia udalosť zdieľanú viacerými podstavmi do jednej šípky.
  6. 06Pseudostavy histórie pokračujú tam, kde stroj skončil, namiesto reštartu.

07Časté otázky#

Aký je formát popisu prechodu v UML?

Spúšťač, potom stráž v hranatých zátvorkách, potom účinok za lomkou. Spúšťač je udalosť, ktorá môže prechod vyvolať, stráž je podmienka, ktorá musí platiť, aby sa vyvolal, a účinok je to, čo sa pritom stane. Všetky tri sú voliteľné, takže popis môže byť len názov udalosti alebo len stráž.

Aký je rozdiel medzi vstupnou akciou a účinkom prechodu?

Vstupná akcia prebehne vždy pri vstupe do stavu, ktorýmkoľvek prechodom. Účinok prechodu prebehne len pri tom jednom prechode. Ak to isté správanie patrí ku každej ceste do stavu, je to vstupná akcia - a rozpísať ho na jednotlivé prechody je práve to, čím sa kópie od seba vzdialia.

Čo je zložený stav?

Stav obsahujúci vlastný stavový automat. Takto vyňmete skupinu stavov, ktoré zdieľajú ten istý odchádzajúci prechod: nakreslíte ho raz z okraja zloženého stavu namiesto raz z každého podstavu.

Čo znamená symbol H v stavovom automate?

Je to pseudostav histórie. Plytká história, H, sa vráti do naposledy aktívneho podstavu zloženého stavu; hlboká história, H s hviezdičkou, sa vráti do poslednej vnorenej konfigurácie na každej úrovni. Je to notácia pre pokračuj tam, kde sme skončili.

Kedy použiť stavový automat namiesto diagramu aktivít?

Keď je predmetom životný cyklus jedného objektu a otázka znie, čo sa môže stať ďalej. Stavový automat je sústredený na vec a stavy, v ktorých môže byť; diagram aktivít je sústredený na proces a kroky, ktorými prechádza.

V tejto sérii

Súvisiace články

Všetky články