LoginSignup
9
10

More than 5 years have passed since last update.

[状態マシン図] Any Stateパターン

Posted at

これはFM-AMラジオの状態マシン図である。

radio2.png

on 状態のサブ状態では、FMとAMが切り替えられるようになっていて、FM状態のときにevAMが起きるとAM状態に、AM状態のときにevFMが起きると FM状態に遷移する。また、on状態のサブ状態には、浅い履歴疑似状態が設定されていて、初めて入ったときはFMが、2回目以降入ったときは、前回選ばれていたほうの音源が鳴る。

そのFM-AMラジオに機能拡張の仕様変更が着た。これは4つの音源を切り替えられるCDラジオの状態マシン図である。

radio4.png

on 状態は、コンポジット状態であり、そのサブ状態には、FM、CD、AM、および、TVの4つの状態があり、on状態であれば、それぞれに対応する4つのイベントがいつ起きても、その状態に直接遷移する。たとえば、evCD が起きれば、FM、AM、TVいずれからでも、CD状態に遷移する。

このような場合、状態が4つ、イベントが4つあるので、遷移が4 x 3=12本となり、とても見にくいモデルとなってしまう。そんなときに次のモデルのように描くと、すっきり描くことができる。

radio4_anystate.png

on状態を起点とする遷移を書くと、それはon状態であればいつでも、という意味になる。on状態のときはどこであっても、evFMがあれば、FM状態に遷移する。

これをAny Stateパターンと言う。 リアルタイムUMLワークショップという本の中で、ブルースダグラスさんが命名している。

リアルタイムUMLワークショップ [大型本]
ブルース・ダグラス (著), 鈴木 尚志 (翻訳)
http://www.amazon.co.jp/dp/4798121118/

このように、Any Stateパターンを使うと、12本の遷移を4本で済ませることができる。

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10