前回は概念クラス図&一気にすっとばしてノートブック作成の相互作用図を書いてみました。あまりにもすっ飛ばしすぎたので、一体全体何をやっているのかわからなかった方もいらっしゃると思います。というわけで、図の残りの部分を直しながら、きちんとした解説を行います。
まず「相互作用図(Interaction Diagram)とは何か」ですが、クラスやオブジェクトなどの登場人物間のメッセージ(message)のやりとりを表現する図です。クラス図は関係(relation)に重点を置いた静的な図だったのですが、こんどは動きをあらわそうというわけです。
クラス図なら、私と会社の間に線を引いて「雇用」という関連(assosiation)を定義しますが、
会社から私にその返り値として「給与」を渡すのが正しいことになります。
この二つの図は見た目は違えど全く等価なものを表しているため、相互に変換することが可能です。
詳しいことは↓以下に挙げるようなWebページを参照していただければと思います。
一応、@ITの記事が量も質も高いのでおすすめです。でもやっぱり本を買うのがベストかなぁと思います。
教科書(はじめて学ぶUML )には284ページから285ページのあたりに、次のように紹介されています。
一つのシナリオは一つの相互作用図に対応します、シナリオは自然言語を使い、箇条書きで作成しました。これをオブジェクト同士のメッセージのやりとりに変えていきます。この際のオブジェクト候補には概念モデルで抽出したクラス候補を利用します。
バウンダリィクラス(ユーザやプリンタ、スキャナなど、今作っているシステムの外とシステムを結びつけるクラス)はこのようにシーケンス図で使用すると、クラスの役割が明確になり、図がより生成しやすくなります。この例でスタッフが情報を「商品リスト」「商品」などエンティティクラス(実際にこの世界に存在するものや概念を表すクラス)に入力するのは違和感を感じると思います。スタッフが販売処理画面に情報を入力するほうがシーケンス図をより自然な流れにします。
まったくUMLを知らない、オブジェクト指向もようやく覚えたばかりという人がこの文章を見て「自然な流れ」とか言われても、きっとさっぱり理解できないに違いありません。なんで「商品」クラスに直接データを入れてはならないのかが「自然」とか言われても・・・って感じです。きっと。
商品クラスを倉庫、データを荷物と考えます。この倉庫に、今はあなたは何か荷物を入れたいと考えています。どうしますか?考えているだけでいきなり倉庫の中に荷物が入ったりはしませんよね。
これだけのものが必要になるはずです。これならばっちりイメージ沸きますよね。
お!なんだかそれっぽくなりましたね!!これでどうして商品クラスに直接データを入れることができないかがイメージできると思います。
あとは図を描く際に実装をイメージすることが大事かなと思います。描いたものは最終的に必ず実装することになるので、実装できないものを描くことはできないからです。というわけで、ある程度実装に詳しくないと厳しいかなーと・・・このあたりはやって慣れろですかねー・・・