Go to list of users who liked
More than 5 years have passed since last update.
【新人教育 資料】第6章 UMLまでの道 〜ステートマシン図の説明&書いてみよう編〜
【新人教育 資料】第6章 UMLまでの道 〜ステートマシン図の説明&書いてみよう編〜
あらすじ
新人がいっぱい入ってくる。新人のレベルもバラバラ。教育資料も古くなっているので、更新しましょう。
どうせなら、公開しちゃえばいいじゃん。という流れになり、新人教育用の資料を順次更新していくことにしました。
※後々、リクエストに応じて更新することが多いのでストックしておくことをおすすめします。
自分はTEMONA株式会社でCTOをしていますが、頭でっかちに理論ばっかり学習するよりは、イメージがなんとなく掴めるように学習し、実践の中で知識を深めていく方が効率的に学習出来ると考えています。
※他の登壇やインタビュー記事はWantedlyから見てください。
教育スタイルとしては正しい事をきっちりかっちり教えるのではなく、未経験レベルの人がなんとなく掴めるように、資料を構成していきます。
以下のようなシリーズネタで進めます。
箸休めには以下をどうぞ
では、今回もはじめていきましょう!
ステートマシン図
ステートマシン図は1つのクラスに着目し、そのオブジェクトの状態遷移を示すものです。
オブジェクトの状態を示し、どのような条件や遷移があるかが分かるよう示します。
開始状態
開始状態 記号スコープ内で開始を表します。
終了状態
状態
何の状態を示すか、一言で示せる状態名及び、必要であれば下の段に状態を補足する説明を記載しましょう。
遷移
遷移は矢印で示します。矢印の順番で状態遷移することを表現します。
[*] -right-> 状態1状態1 -right-> 状態2状態2 -right-> [*]
合成
状態の中に、複数の状態が包括する状態を表します。
以下は自動販売機の例です。
[*] -right-> 停止 停止 -right-> 稼働state 稼働 { 待機 -r-> 入金 :お金を入れる 入金 -d-> 押下 :商品を選択する 入金 -u-> 待機 :キャンセル 押下 -d-> 待機 :商品を出す}
領域(同時)
以下の例はキーボードのnumLockやcapslock,scrolllockなど複数同時に状態が混在する事を示しています。
区画線としては点線で表現します。PlantUMLでは「--」が領域表現です。
[*] --> Activestate 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つのオブジェクトの状態遷移を示すものなのでシンプルに心がけましょう。
次回は、アクティビティ図を説明したいと思います。
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme