2. モデル・図の作成 |
2.2 設計レベルの相互作用の検討 |
![]() |
ここでは「コラボレーション図」を作成し、オブジェクト間の相互作用がクラス図上できちんとトレースできるかどうかを見てみよう。「コラボレーション図」は、「シーケンス図」に比べると、設計を意識したオブジェクト間の接続関係を詳細に表現することができるんだよ。 |
|
![]() |
コラボレーション図では、オブジェクトを中心にどんなメッセージが流れているのかを見て、個々のオブジェクトの責務を理解することが重要になるのですね。 |
![]() |
そうだよ。そして、オブジェクト間のつながりはリンクで表すんだよ。リンクがあるということは、メッセージが投げられているということを意味するから、リンクによって結び付けられたオブジェクト間にコミュニケーションの道筋があることが分かるよね。 |
![]() |
はい、そうですね。では、コラボレーション図では、特にオブジェクト間のつながり方に着目してメッセージやデータの流れを表現すればいいのですね? |
![]() |
そのとおり。ただし、コラボレーション図では時系列が分かり難くなるから、実装する際にはメッセージ番号が必要だよ。 |
![]() |
分かりました。 |
![]() |
では、先程のシーケンス図をもとに、新規注文を受け付けて注文フォームが表示されるまでの部分のモデルについてのコラボレーション図を作成してみよう。 |
|
図2.2.1 Chen君が作成したコラボレーション図:注文商品が別の配送センターで扱われている場合
|
![]() |
シーケンス図と同じ情報を示していても、シーケンス図に比べて、オブジェクト間のつながりが分かりやすくなったと思います。 |
![]() |
そうだね。コラボレーション図では、オブジェクトの相互作用を直接表現するからね。また、メッセージの方向によって、クラス間の関連の可視性の方向性も分かるようになっているんだよ。可視性については「関係の設計」のところで詳しく説明するよ。 |
![]() |
はい、わかりました。 |
![]() |
このように、コラボレーション図で識別されたメッセージの送受信は、クラスの操作や属性にいかされてくるんだよ。 |
![]() |
シーケンス図と同様、クラス図に情報をトレースしたときに、不足している情報がないか、整合性がとれているか、などを考えてモデルを詳細化していくということですね。 |
![]() |
そうだよ。 |
|
|
![]() |
では次に、クラスの設計に入ろう。 |