【新人教育 資料】第6章 UMLまでの道 〜ステートマシン図の説明&書いてみよう編〜
あらすじ
新人がいっぱい入ってくる。新人のレベルもバラバラ。教育資料も古くなっているので、更新しましょう。
どうせなら、公開しちゃえばいいじゃん。という流れになり、新人教育用の資料を順次更新していくことにしました。
※後々、リクエストに応じて更新することが多いのでストックしておくことをおすすめします。
自分はTEMONA株式会社でCTOをしていますが、頭でっかちに理論ばっかり学習するよりは、イメージがなんとなく掴めるように学習し、実践の中で知識を深めていく方が効率的に学習出来ると考えています。
※他の登壇やインタビュー記事はWantedlyから見てください。
教育スタイルとしては正しい事をきっちりかっちり教えるのではなく、未経験レベルの人がなんとなく掴めるように、資料を構成していきます。
以下のようなシリーズネタで進めます。
箸休めには以下をどうぞ
では、今回もはじめていきましょう!
ステートマシン図
ステートマシン図は1つのクラスに着目し、そのオブジェクトの状態遷移を示すものです。
オブジェクトの状態を示し、どのような条件や遷移があるかが分かるよう示します。
開始状態
開始状態 記号 スコープ内で開始を表します。
終了状態
状態
何の状態を示すか、一言で示せる状態名及び、必要であれば下の段に状態を補足する説明を記載しましょう。
遷移
遷移は矢印で示します。矢印の順番で状態遷移することを表現します。
[*] -right-> 状態1
状態1 -right-> 状態2
状態2 -right-> [*]
合成
状態の中に、複数の状態が包括する状態を表します。
以下は自動販売機の例です。
[*] -right-> 停止
停止 -right-> 稼働
state 稼働 {
待機 -r-> 入金 :お金を入れる
入金 -d-> 押下 :商品を選択する
入金 -u-> 待機 :キャンセル
押下 -d-> 待機 :商品を出す
}
領域(同時)
以下の例はキーボードのnumLockやcapslock,scrolllockなど複数同時に状態が混在する事を示しています。
区画線としては点線で表現します。PlantUMLでは「--」が領域表現です。
[*] --> Active
state Active {
[*] -> NumLockOff
NumLockOff --> NumLockOn : EvNumLockPressed
NumLockOn --> NumLockOff : EvNumLockPressed
--
[*] -> CapsLockOff
CapsLockOff --> CapsLockOn : EvCapsLockPressed
CapsLockOn --> CapsLockOff : EvCapsLockPressed
--
[*] -> ScrollLockOff
ScrollLockOff --> ScrollLockOn : EvCapsLockPressed
ScrollLockOn --> ScrollLockOff : EvCapsLockPressed
}
上記の例は
http://ja.plantuml.com/state.html#Concurrentから引用させていただきました。
##演習
幾つかやってみましょう
人が結婚、別居、離婚などのステートマシン図を作ってみましょう。
車が動作に関してのステートマシン図を作ってみましょう。
運転免許に関してのステートマシン図を作ってみましょう。
iPhoneのsiriの動作に関するステートマシン図を作って見ましょう。
あとがき
UMLのステートマシン図はどうだったでしょうか?
細かい条件やフローなどをは、別のUML図で表現するので
ステートマシン図は1つのオブジェクトの状態遷移を示すものなのでシンプルに心がけましょう。
次回は、アクティビティ図を説明したいと思います。