ストラタジーナム メニュー

2006年10月24日火曜日

UML中級講座 第93回 ステートマシーンの拡張

先月末に、新しい街にオフィスを移転したのですが、ようやく慣れて来た感じです。
本来は、都内の別の場所に移る予定だったのですが(お茶の水近辺が第一候補でした)、いくつかの偶然の結果、最後の最後に赤坂に移る事になりました。
六本木や渋谷、新宿に比べ、赤坂は何となくマイナーな感じがしていたのですが、住めば都で、移転して一月も経つと、なかなか住みやすい街だな、と思えるようになってきました。
そのうちに、赤坂の紹介記事も書いて見たいと思っております。

ステートマシーンの拡張

一般の分類子と同じ様に、ステートマシーンも般化が可能です。
特化されたステートマシーンでは、元のステートマシーンの全てのエレメントを引き継ぎながら、かつ、遷移や状態、領域(リージョン)の追加や再定義が行われます。これによって、シンプルなステートマシーンを、(リージョンの追加、再定義により)コンポジット・ステートマシーンに特化する事も可能です。
同じように、内部のサブマシーンを別のサブマシーンに入れ替える事も可能です。その場合は、少なくとも、元の入口点/出口点と同一の互換性を維持する必要があります。(入口点/出口点の追加は可能)

ステートマシンの特化の事を、拡張(Extend)と呼び、拡張されたステートマシーンである事を、指し示すために、キーワード"Extended"が使われます。

図D13は、元のステートマシーン(ATM)、図D14は拡張ステートマシーン( ATM{Exteded})を表しています。
図D13の中で、キーワード{final}が付いた状態がありますが、これは、これらの状態が最終形である事を示し、拡張や再定義ができない事を示しています。
図D14では、D13のステートマシーン「金額読取」に状態と遷移が付け加えられ、金額の選択だけではなく、入力も可能なように、拡張されています。

図D13



図D14