11

11

[状態マシン図] さまざまなメカスイッチ

2013.11.11(23:59)

メカスイッチ自体も状態マシンと考えることができる。いろいろなメカスイッチを考えてみよう。
まずは、静的構造、クラス図から。
switch_class.png
  • スイッチにはボタンが1つ以上ある。

このスイッチの、動的なふるまい、状態マシン図をいろいろ見てみる。

スイッチ1
switch10.png
  • ボタンは1つだけ
  • ボタンはいつでも押せる
  • ボタンを押しても、スイッチの状態は変化しない

スイッチ2
switch20.png
  • いつでもONボタン、OFFボタンが押せる。なので、ONボタンを連打できる。
  • ONボタンを押しても、OFFボタンを押してもスイッチの状態が変化しない。

スイッチ3
switch30.png
  • 最初にON状態かOFF状態かが決まっていてそこから開始する。
  • ON状態のときにしか、OFFにできない。
  • OFF状態のときにしか、ONにできない。

スイッチ4(その1)
switch41.png
  • 開始時に弱、中、強のいずれかだったらそこから開始、それ以外は停止
  • 弱ボタン、中ボタン、強ボタン、OFFボタンはいつでも押せる。
  • 停止状態のときには、弱ボタン、中ボタン、強ボタンが押せる。OFFボタンは無視される。
  • OFFボタンを押すと、弱も中も強も(たとえ2つ以上でも)解除される。
  • 弱状態のときは、弱ボタンを無視する。(弱状態を抜けない)
  • 弱状態のときに、強ボタンを押すと、弱は解除されて強の状態になる。

スイッチ4(その2)
switch42.png
  • スイッチ4(その1)をサブ状態と Any State パターンで書きなおしたもの。
  • 遷移がまとめられており、見やすい。
  • 弱状態のときに弱ボタンが押された場合は、
    弱状態の中でイベントが消費されるので、弱状態を脱出しない。
  • 設計をスイッチ4(その2)でおこなって、
    テストをスイッチ4(その1)でおこなうことは、意味があるかもしれない。
  • 弱の中、中の中、強の中がある理由は、以下の記事の後半を参照。
    http://saltheads.blog134.fc2.com/blog-entry-129.html

おまけ。
fan.png
スイッチ4の実写真。気づいていましたよね。

参考文献
プロフィール

島敏博

Shima Toshihiro 島敏博
信州アルプスハイランド在住。HaskellとElixirが好き。組み込みソフトウェアアーキテクト、C++プログラマ、山歩き、美術館巡り、和食食べ歩き、日本赤十字社救急法指導員、インデックス投資、クラシック音楽、SESSAME会員、状態マシン設計、モデル駆動開発、ソフトウェアプロダクトライン、Rubyist、実践ビジネス英語

■ ツイッター
http://twitter.com/saltheads
■ Facebook
http://www.facebook.com/saltheads
■ Qiita
http://qiita.com/saltheads

印刷する場合は、ブラウザの印刷メニューではなく、このページの上から3cmくらいの青いところにある、「印刷」を押してみてください。少しうまく印刷できます。まだ完全ではないのですが、これで勘弁してください。


カテゴリ
最新記事
月別アーカイブ
最新コメント
検索フォーム
リンク
sessame
RSSリンクの表示