2010年 春期 応用情報技術者試験 問8
ソフトウェアのオブジェクト指向設計
今まで,Q 鉄道会社の自動券売機は,乗車券の発売しかできなかった。このたび,急行券も発売できる新型の自動券売機を開発することになった。急行券は,座席の指定は行わないが,乗車する急行列車を指定して発売する。
新型の自動券売機の主なシナリオは,次のとおりである。
前提
- 乗車券は,普通列車,急行列車にかかわらず,列車に乗るときに必要であり,乗車駅と降車駅を指定することによって,金額(運賃)が決まる。
- 急行券は,急行列車に乗るときに必要であり,列車とその乗車駅,降車駅を指定することによって,金額(料金)が決まる。
発売時
- 乗客は,まず購入する切符の種類(乗車券又は急行券)を選択し,乗車日,乗車駅,降車駅,人数及び急行券の場合は列車を自動券売機に入力する。
- 自動券売機は,入力されたデータに基づいて,金額(運賃又は料金)を算出し,表示する。
- 乗客は,表示内容でよければ,自動券売機に現金を投入し,発売ボタンを押す。表示内容でよくなければ,取消しボタンを押し,初期状態に戻す。
- 発売ボタンが押されると,自動券売機は投入されている現金を確認して収納し,発券するとともに,釣りがあれば釣銭を返却する。
ソフトウェアの設計には,UML のクラス図などを利用している。乗車券だけを発売する現在の自動券売機のクラス図を,図1に示す。
実線:静的
斜字体:抽象
新型の自動券売機では,クラス"乗車券"と"急行券"についてはスーパクラスを設けることにし,図2に示すクラス図を作成した。
図2のクラス図におけるスーパクラス"切符"とそのサブクラス"乗車券"及び"急行券"では,共通の属性をスーパクラスに,サブクラス個別の属性を各サブクラスにもたせている。ただし,属性"運賃"と"料金"については,個別に残したが,共通の属性"金額"を追加した。また,乗車券面編集と急行券面編集は,切符に印刷するイメージを作るための,それぞれのサブクラス個別の操作である。
図2のクラス"操作機構"の属性"切符"は,実装ではオブジェクト"乗車券"又は"急行券"を指していて,"操作機構"からそれらのオブジェクトの操作を呼び出すことを可能にする。
新型の自動券売機で急行券を発売する場合の正常処理について,図3に示すシーケンス図を作成した。範囲cにはメッセージが入る。