• このエントリーをはてなブックマークに追加

前回、ステート・パターンをRubyで実装してみた。

これを機に、ステート・マシンもちゃんと実装まで学んでおこうとおもう。

スポンサードリンク

ステート・マシンとは

ステート・マシンとは、システムの振る舞いの仕組み。

ステートマシン図とは、それをUML記法で表したもの。

ステート・マシンの構成要素

ステート・マシンの構成要素は以下のとおり。

  • 状態(State) ・・・なんて定義してよいやら。
  • 遷移(Transition)・・・ひとつの状態から別の状態へ移行すること

遷移はさらに以下の3つに分解できる。

  • イベント(Event) ・・・遷移のきっかけ、トリが
  • ガード(guard) ・・・遷移するための条件(true/false)
  • アクション(Action) ・・・遷移時の動作

以下のように記述する。

Event[Guard]/Action

また、状態に関係する動作をアクティビティという。アクションは遷移に関係する。

do/Activity

UML図

以下のようなステート・マシンをRubyで実装する。

rubytk_state_machine.png

前回は自分のステータスをもとに振る舞いを変更したけれども、 今回は、別プロセスの状態によって、振る舞いを変えるようにしてみる。

rubytk_state_sequence.png

実装