アスペクト指向勉強会 - 実践編 (第17回)

いくつかのテーマについて、個別に設計をしてみる。
僕の担当は「カードを配布する」。

Individual View

まず、各テーマで扱う要求とエンティティを整理し、責任範囲を明確にする。
テーマ「カードを配布する」で責任をもつ要求は6件、関係するエンティティは3つ。なお、要求 R35 は「ナチュラル21」の担当。
http://homepage2.nifty.com/glad/work/hatena/20061202/individual-view-deal.png

設計

Theme Aproach によると設計はふつうにオブジェクト指向設計をすればいいとのこと。概ね以下の手順で作業を行った。

  1. Individual View と概念モデルを参考に、関係しそうなエンティティを抽出。
  2. 「ユーザー画面」クラスとゲームを進行する「ディーラーロボット」クラスを追加。
  3. 概念モデルを参考に、クラス間に関連を追加。基本的に依存が片方向になるようにする。
    原則は、画面 → イベント系エンティティ → リソース系エンティティ の方向。
  4. 要求の記述にしたがって、シーケンス図を作成。
  5. メッセージに該当するメソッドをクラス図に追加。
    メッセージが getter/setter の場合は、メソッドではなく属性を追加。
  6. 「ユーザーのプレイ」と「ディーラーのプレイ」は共通点が多いので、共通部分は親クラスの「プレイ」に移動。

クラス図:
http://homepage2.nifty.com/glad/work/hatena/20061202/class-diagram-deal.png
シーケンス図:
http://homepage2.nifty.com/glad/work/hatena/20061202/sequence-diagram-deal.png

レビュー

最後に各自の作成した設計モデルのレビューをする。
レビュー内容の反映は次回までの宿題。
※上のモデルは修正済み。