2011年 春期 応用情報技術者試験 問8
ゴルフ用ナビゲーションシステムのオブジェクト指向設計
S社は、ゴルフ用の携帯型GPSナビゲーションシステム(以下、GPSナビという)を製品化することになり、そのソフトウェアをオブジェクト指向によって設計することにした。
ゴルフ場は番号の付けられた複数のホールから成る。各ホールには、グリーンと呼ばれる区域があり、ボールを入れる穴(カップ)が設けられている。プレーヤは、カップにボールを入れた後、次のホールに進む(ホールの移動)。なお、本問では、プレーヤがカップにボールを入れる前に他のホールに立ち入ることは、考えなくてよいものとする。
GPSナビは、GPSによって現在位置を測定する機能を備え、さらに、ゴルフ場の位置に関する各種のデータ(位置関係データ)をもつ。プレーヤは始めに、GPSナビに登録されているゴルフ場の中から、現在いるゴルフ場を選択する。プレーヤは、ボールを打つときに位置登録ボタンを押して、その時点の現在位置を最新登録位置として登録することができる。位置登録ボタンが押されるたび、最新登録位置はその時点の現在位置に更新される。GPSナビは、次の項目を自動的に認識又は計算し、所持するプレーヤに示す。
(1) 現在いるホールの番号(現在位置と位置関係データによって認識) (2) 現在位置からそのホールのグリーンの中央(グリーン位置)までの距離(残距離) (3) 最新登録位置から現在位置までの距離(飛距離)
GPSナビの画面表示例を図1に示す。画面の表示内容は、タイマによって一定時間間隔で最新の状態に更新される。また、位置と距離の関係を図2に示す。
ゴルフ場: ○○○ゴルフ倶楽部 |
ホール:1番 |
残距離:150 |
飛距離:250 |
GPSナビのソフトウェアをオブジェクト指向で設計するに当たり、図3に示すクラス図を作成した。"距離計算"は位置のデータから残距離と飛距離を計算する操作である。
また、タイマによる表示更新、及びプレーヤによる位置登録のシーケンス図の一部を、それぞれ図4、及び図5に示す。
【ホールのレイアウトを画面表示する機能の追加と処理方式の変更】
現在いるホールのレイアウトとそこでの現在位置を画面表示する機能を、GPSナビに追加することになった。そこで、処理効率を考慮して、次のような処理方式に変更することにした。
レイアウトを表示するためのクラス"表示2"を追加し、その属性としてレイアウト表示データを設ける。"現在状態"の操作"現在状態問合せ"は、属性を最新に更新するための"更新"と、属性を返す"状態問合せ"に分割する。また、"タイマ"からの関連の参照先を"現在状態"に変更し、さらに、既存のものと逆方向の関連を二つ追加する。
処理方式の変更に伴い、図3のクラス図は図6のように、図4のタイマによる表示更新のシーケンス図は図7のように、それぞれ変更する。