ObjectSquare [2001 年 10 月号]

[技術講座] CppUnit 入門


2. 例題: サイコロゲーム

2.1. ゲームの概要

 実践的な内容にするために、ちょっとしたサイコロゲームを例に話を進めたいと思います。ゲームの概要は次の通りです。

  1. 2個のサイコロをふる。
  2. プレーヤはサイコロの目の和が奇数 (半) か偶数 (丁) かを当てる。
  3. 当たればプレーヤの勝ち、はずれれば負けです。

 時代劇の博打の場面でおなじみのアレですね。

2.2. 設計の概略

 あまり事前設計をせず、プログラミングをしながらリファクタリングによって設計を洗練させていくのが XP の流儀のようですが、個人的には少なくとも分析およびアーキテクチャ設計は事前にきちんとしておいた方が良いと思います。

 以下に、今回作成するサイコロゲームのクラス図を示します。各クラスの責務は次の通りです。

クラス名 クラスの責務
Dice ランダムに1から6までの目を生成する。
DiceGamePlayer プレーヤの得点、成績を保持する。
DiceGame サイコロゲームの流れを管理する。
DiceGameListener DiceGame で発生するイベントを受付ける。
DiceGameUI 結果を表示し、入力を受付ける。

 クラス数が少ないのでパッケージの細分化は行いません。バウンダリクラス (UI) とコントローラクラスとの関連を単方向にするために DiceGameListener という interface を設けました。後のテストでも実はこれが有効に働いてきます。

クラス図
© 2001 OGIS-RI Co., Ltd.
Prev. Index Next
Prev. Index Next