2014年 春期 応用情報技術者試験 問8

地図を利用するアプリケーションプログラムの設計

K社は,インターネット上でグループウェアを提供しているソフトウェア開発会社である。このグループウェアに利用者同士の待合せを支援する機能(以下,待合せ機能という)を追加することになった。待合せ機能は,タブレットやスマートフォンなど各種の端末で利用する。待合せ機能の画面イメージを図1に,各構成要素の概要を表1に示す。

表1 待合せ機能の各構成要素の概要
要素名概要
地図指定された範囲の道路や建物を表示する。
操作盤地図に対して拡大・縮小・スクロールを行う。スクロールには,東西南北方向への移動と,操作している端末の現在位置への移動がある。操作盤は,常に画面の一番手前に,一つだけ表示される。
利用者グループウェアの利用者。位置は地図上で指定するか,GPS情報を利用して定期的に更新できる。利用者を選択すると,システム設定値によって,メールを作成する画面又は電話を掛ける画面へ遷移する。
待合せ場所利用者の中の一人が設定した待合せ場所。名称や住所,URL,待合せ日時を登録する。待合せ場所を選択すると,その場所の詳細情報を掲載したWebページが開く。
目印待合せ場所を見つける手掛かりとなる場所。目印を選択すると,その場所の写真を表示する。
アイコン地図配色などを表示する。アイコンを選択することはできない。

【クラス図の検討】

まず,表1の各要素をクラスにすることを考える。次に,クラス間の関連について検討していく。図1から,地図クラスにその他の要素をもたせるように考える。利用者,待合せ場所及び目印については,アイコンクラスとの類似性に着目し,アイコンクラスの派生クラスとする。検討したクラス図の抜粋を図2に示す。ただし,システム設定値などのクラスは省略している。

図2のレビューを実施したところ,次のような指摘を受けた。

"属性の型に基本データ型を用いて,その値に暗黙のルールをもたせるような使い方は好ましくない。例えば,地図クラス及びアイコンクラスの幾つかの属性は,その値が正常な範囲の値かどうかのチェックを含め,複数の関連し合う属性を一まとめにしたクラスを用意し,そのクラスに置き換えるとよい。"

【アイコンクラス及び派生クラスの実装に関する検討】

アイコンクラスの操作"選択する"は,その派生クラスを実装する際,同じ名称の操作"選択する"を実装することによって,同じ操作でも派生クラスごとに振る舞いが変わるようにする。派生クラスには,振る舞いごとにクラス内部からだけアクセス可能な操作を用意し,派生クラスに実装する操作"選択する"の中からその操作を呼び出すように実装する。

例えば,目印クラスの操作"選択する"の中から呼び出される操作を実装すると,"一写真を表示する"となる。同様に,利用者クラスの操作"選択する"の中から呼び出される操作を実装すると,"d"及び"一電話を掛ける画面へ"となる。

なお,アイコンクラスの三つの派生クラスそれぞれの操作"選択する"は振る舞いが異なり,共通する処理はないので,それぞれの操作"選択する"からアイコンクラスの操作"選択する"は呼び出さない。

【描画処理の検討】

地図上の操作盤から拡大ボタン("+")が押されると,地図の表示領域が再計算され,全ての要素が再描画される。拡大ボタンが押されてから地図の再描画が終わるまでの処理の流れを,シーケンス図として図3に示す。

なお,操作盤クラスの操作"拡大"はシステムから呼び出される。その結果をシステムが受け,拡大した地図を再描画するために,システムから地図クラスの操作"地図を描く"が呼び出される。地図クラスの操作"地図を描く"の中では,操作"背景を描く"を呼び出した後,地図上の各要素の描画処理を行う。

出典:平成26年度 春期 応用情報技術者試験 午後問題