State Machine Diagram & Statechart Diagram v UML
Co je schรฉma stรกtnรญho stroje?
Stavovรฝ diagram se pouลพรญvajรญ k zachycenรญ chovรกnรญ softwarovรฉho systรฉmu. Diagramy UML State machine lze pouลพรญt k modelovรกnรญ chovรกnรญ tลรญdy, subsystรฉmu, balรญฤku nebo dokonce celรฉho systรฉmu. Nazรฝvรก se takรฉ stavovรฝ diagram nebo diagram pลechodu stavu.
Co je stavovรฝ diagram?
Stavovรฉ diagramy nรกm poskytujรญ efektivnรญ zpลฏsob, jak modelovat interakce nebo komunikaci, ke kterรฝm dochรกzรญ v rรกmci externรญch entit a systรฉmu. Tyto diagramy se pouลพรญvajรญ k modelovรกnรญ systรฉmu zaloลพenรฉho na udรกlostech. Stav objektu je ลรญzen pomocรญ udรกlosti. Stavovรฉ diagramy se pouลพรญvajรญ k popisu rลฏznรฝch stavลฏ entity v aplikaฤnรญm systรฉmu.
V UML existujรญ celkem dva typy diagramลฏ stavovรฉho stroje:
1. Behavioral State Machine Diagram
- Zachycuje chovรกnรญ entity pลรญtomnรฉ v systรฉmu.
- Pouลพรญvรก se k reprezentaci konkrรฉtnรญ implementace prvku.
- Chovรกnรญ systรฉmu lze modelovat pomocรญ diagramu stavovรฉho stroje v OOAD.
2. Protokol Stavovรฉ schรฉma stroje
- Tyto diagramy se pouลพรญvajรญ k zachycenรญ chovรกnรญ protokolu.
- Pลedstavuje, jak se zmฤnรญ stav protokolu tรฝkajรญcรญ se udรกlosti. Pลedstavuje takรฉ odpovรญdajรญcรญ zmฤny v systรฉmu.
- Nepลedstavujรญ konkrรฉtnรญ implementaci prvku.
Proฤ State Machine Diagram?
Stavovรฝ diagram se pouลพรญvรก k zachycenรญ dynamickรฉho aspektu systรฉmu. Diagramy stavovรฝch strojลฏ se pouลพรญvajรญ k reprezentaci chovรกnรญ aplikace. Objekt prochรกzรญ bฤhem svรฉ ลพivotnosti rลฏznรฝmi stavy. ลฝivotnost objektu zลฏstรกvรก, dokud nenรญ program ukonฤen. Objekt pลechรกzรญ z vรญce stavลฏ v zรกvislosti na udรกlosti, kterรก nastane v objektu. Kaลพdรฝ stav pลedstavuje nฤjakรฉ jedineฤnรฉ informace o objektu.
Stavovรฉ diagramy se pouลพรญvajรญ k nรกvrhu interaktivnรญch systรฉmลฏ, kterรฉ reagujรญ na vnitลnรญ nebo vnฤjลกรญ udรกlosti. Stavovรฝ diagram v UML vizualizuje tok provรกdฤnรญ z jednoho stavu do jinรฉho stavu objektu.
Pลedstavuje stav objektu od vytvoลenรญ objektu aลพ do zniฤenรญ nebo ukonฤenรญ objektu.
Primรกrnรญm รบฤelem stavovรฉho diagramu je modelovat interaktivnรญ systรฉmy a definovat kaลพdรฝ stav objektu. Stavovรฉ diagramy jsou navrลพeny tak, aby zachycovaly dynamickรฉ chovรกnรญ aplikaฤnรญho systรฉmu. Tyto diagramy se pouลพรญvajรญ k reprezentaci rลฏznรฝch stavลฏ systรฉmu a entit v systรฉmu.
Zรกpis a symbol pro schรฉma stรกtnรญho stroje (diagram stรกtnรญho schรฉmatu)
Nรกsledujรญ rลฏznรฉ zรกpisy, kterรฉ se pouลพรญvajรญ v celรฉm diagramu stavovรฉho diagramu. Vลกechny tyto zรกpisy, kdyลพ jsou kombinovรกny, tvoลรญ jeden diagram.

Poฤรกteฤnรญ stav
Symbol poฤรกteฤnรญho stavu se pouลพรญvรก k oznaฤenรญ zaฤรกtku diagramu stavovรฉho stroje.
Koneฤnรฝ stav
Tento symbol se pouลพรญvรก k oznaฤenรญ konce schรฉmatu stavovรฉho stroje.
Rozhodovacรญ box
Obsahuje podmรญnku. V zรกvislosti na vรฝsledku vyhodnocenรฉho ochrannรฉho stavu se pro provedenรญ programu zvolรญ novรก cesta.
Pลechod
Pลechod je zmฤna jednoho stavu do jinรฉho stavu, ke kterรฉ doลกlo v dลฏsledku nฤjakรฉ udรกlosti. Pลechod zpลฏsobรญ zmฤnu stavu objektu.
State box
Je to specifickรฝ okamลพik v ลพivotnosti pลedmฤtu. Je definovรกn pomocรญ nฤjakรฉ podmรญnky nebo pลรญkazu v tฤle klasifikรกtoru. Pouลพรญvรก se k zobrazenรญ jakรฝchkoli statickรฝch i dynamickรฝch situacรญ.
Oznaฤuje se pomocรญ obdรฉlnรญku s kulatรฝmi rohy. Nรกzev stรกtu je napsรกn uvnitล zaoblenรฉho obdรฉlnรญku.
Nรกzev stรกtu lze takรฉ umรญstit mimo obdรฉlnรญk. To lze provรฉst v pลรญpadฤ sloลพenรฝch nebo submachine stavลฏ. Nรกzev stรกtu lze buฤ umรญstit do obdรฉlnรญku nebo mimo obdรฉlnรญk do tabulkovรฉho rรกmeฤku. Nelze provรกdฤt obojรญ souฤasnฤ.
Stav mลฏลพe bรฝt aktivnรญ nebo neaktivnรญ. Kdyลพ je stav v pracovnรญm reลพimu, je aktivnรญ, jakmile se zastavรญ provรกdฤnรญ a pลejde do jinรฉho stavu, pลedchozรญ stav se stane neaktivnรญm a aktuรกlnรญ stav se stane aktivnรญm.
Typy stรกtu
Unified Modeling Language definuje tลi typy stavลฏ:
- Jednoduchรฝ stav
- Nemajรญ ลพรกdnรฝ substรกt.
- Sloลพenรฝ stav
- Tyto typy stavลฏ mohou mรญt jeden nebo vรญce podstavลฏ.
- Sloลพenรฝ stav se dvฤma nebo vรญce podstavy se nazรฝvรก ortogonรกlnรญ stav.
- Stav samopalu
- Tyto stavy se sรฉmanticky rovnajรญ sloลพenรฝm stavลฏm.
- Na rozdรญl od sloลพenรฉho stavu mลฏลพeme stavy submachine znovu pouลพรญt.
Jak nakreslit stavovรฝ diagram?
Stavovรฉ diagramy se pouลพรญvajรญ k popisu rลฏznรฝch stavลฏ, kterรฝmi objekt prochรกzรญ. Pลechod mezi jednรญm stavem do jinรฉho stavu nastรกvรก kvลฏli nฤjakรฉ spuลกtฤnรฉ udรกlosti. Chcete-li nakreslit stavovรฝ diagram UML, je tลeba identifikovat vลกechny moลพnรฉ stavy jakรฉkoli konkrรฉtnรญ entity.
Jejich รบฤelem UML diagramy je reprezentovat stavy systรฉmu. Stavy hrajรญ zรกsadnรญ roli ve stavovรฝch pลechodovรฝch diagramech. Pลed implementacรญ diagramu musรญ bรฝt nejprve analyzovรกny vลกechny podstatnรฉ objekty, stavy a udรกlosti, kterรฉ zpลฏsobujรญ zmฤny ve stavech.
Pลi kreslenรญ diagramu stavovรฉho diagramu je tลeba vzรญt v รบvahu nรกsledujรญcรญ pravidla:
- Nรกzev pลechodu stavu musรญ bรฝt jedineฤnรฝ.
- Nรกzev stรกtu musรญ bรฝt snadno srozumitelnรฝ a musรญ popisovat chovรกnรญ stรกtu.
- Pokud existuje vรญce objektลฏ, mฤly by bรฝt implementovรกny pouze zรกkladnรญ objekty.
- Pro kaลพdรฝ pลechod a udรกlost musรญ bรฝt uvedena sprรกvnรก jmรฉna.
Kdy pouลพรญt schรฉma stรกtnรญho stroje?
Stavovรฉ diagramy se pouลพรญvajรญ k implementaci reรกlnรฝch pracovnรญch modelลฏ a objektovฤ orientovanรฝch systรฉmลฏ do hloubky. Tyto diagramy se pouลพรญvajรญ k porovnรกnรญ dynamickรฉ a statickรฉ povahy systรฉmu zachycenรญm dynamickรฉho chovรกnรญ systรฉmu.
Stavovรฉ diagramy se pouลพรญvajรญ k zachycenรญ zmฤn v rลฏznรฝch entitรกch systรฉmu od zaฤรกtku do konce. Pouลพรญvajรญ se k analรฝze toho, jak mลฏลพe udรกlost vyvolat zmฤnu ve vรญce stavech systรฉmu.
Pouลพรญvajรญ se stavovรฉ char diagramy:
- Modelovat objekty systรฉmu.
- Modelovat a implementovat interaktivnรญ systรฉmy.
- Chcete-li zobrazit udรกlosti, kterรฉ spouลกtฤjรญ zmฤny ve stavech.
Pลรญklad State Machine
Nรกsledujรญcรญ pลรญklad diagramu stavovรฉho diagramu pลedstavuje proces ovฤลovรกnรญ uลพivatele.
Existujรญ celkem dva stavy a prvnรญ stav znamenรก, ลพe jako prvnรญ je tลeba zadat OTP. Potรฉ se OTP zaลกkrtne v rozhodovacรญm poli, pokud je sprรกvnรฉ, dojde pouze k pลechodu stavu a uลพivatel bude ovฤลen. Pokud je OTP nesprรกvnรฉ, pak se pลechod neuskuteฤnรญ a vrรกtรญ se zpฤt do poฤรกteฤnรญho stavu, dokud uลพivatel nezadรก sprรกvnรฉ OTP, jak je znรกzornฤno ve vรฝลกe uvedenรฉm pลรญkladu schรฉmatu stavovรฉho stroje.
Diagram stavu stroje vs. vรฝvojovรฝ diagram
Nรญลพe jsou uvedeny klรญฤovรฉ rozdรญly mezi stavovรฝm diagramem a vรฝvojovรฝm diagramem
| Schรฉma stรกtnรญho stroje | Vรฝvojovรฝ diagram |
|---|---|
| Pลedstavuje rลฏznรฉ stavy systรฉmu. | Vรฝvojovรฝ diagram znรกzorลuje tok provรกdฤnรญ programu. |
| Stavovรฝ automat mรก koncept WAIT, tj. ฤekรกnรญ na akci nebo udรกlost. | Vรฝvojovรฝ diagram se nezabรฝvรก ฤekรกnรญm na koncept. |
| Stavovรฉ stroje se pouลพรญvajรญ pro ลพivรฝ systรฉm. | Vรฝvojovรฝ diagram zobrazuje vฤtvenรฉ sekvence systรฉmu. |
| Stavovรฝ automat je modelovacรญ diagram. | Vรฝvojovรฝ diagram je sekvenฤnรญ tok nebo DFD diagram. |
| Stavovรฝ automat mลฏลพe zkoumat rลฏznรฉ stavy systรฉmu. | Vรฝvojovรฝ diagram se zabรฝvรก cestami a ลรญzenรญm toku. |
Shrnutรญ
- Stavovรฉ diagramy se takรฉ nazรฝvajรญ diagramy stavovรฝch strojลฏ.
- Tyto diagramy se pouลพรญvajรญ k modelovรกnรญ systรฉmu zaloลพenรฉho na udรกlostech.
- Stav entity je ลรญzen pomocรญ udรกlosti.
- Existujรญ celkem dva typy diagramลฏ stavovรฉho stroje: 1) Stavovรฝ strojovรฝ diagram chovรกnรญ 2) Stavovรฝ strojovรฝ diagram protokolu
- Stavovรฝ diagram se pouลพรญvรก k zachycenรญ dynamickรฉho aspektu systรฉmu.
- Stav je specifickรฝ okamลพik v ลพivotnosti objektu.
