前回、ステート・パターンをRubyで実装してみた。
これを機に、ステート・マシンもちゃんと実装まで学んでおこうとおもう。
ステート・マシンとは
ステート・マシンの構成要素
ステート・マシンの構成要素は以下のとおり。
- 状態(State) ・・・なんて定義してよいやら。
- 遷移(Transition)・・・ひとつの状態から別の状態へ移行すること
遷移はさらに以下の3つに分解できる。
- イベント(Event) ・・・遷移のきっかけ、トリが
- ガード(guard) ・・・遷移するための条件(true/false)
- アクション(Action) ・・・遷移時の動作
以下のように記述する。
Event[Guard]/Action
また、状態に関係する動作をアクティビティという。アクションは遷移に関係する。
do/Activity
UML図
以下のようなステート・マシンをRubyで実装する。
前回は自分のステータスをもとに振る舞いを変更したけれども、 今回は、別プロセスの状態によって、振る舞いを変えるようにしてみる。