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

ソフトウェアのオブジェクト指向設計

今まで,Q 鉄道会社の自動券売機は,乗車券の発売しかできなかった。このたび,急行券も発売できる新型の自動券売機を開発することになった。急行券は,座席の指定は行わないが,乗車する急行列車を指定して発売する。

新型の自動券売機の主なシナリオは,次のとおりである。

前提

  • 乗車券は,普通列車,急行列車にかかわらず,列車に乗るときに必要であり,乗車駅と降車駅を指定することによって,金額(運賃)が決まる。
  • 急行券は,急行列車に乗るときに必要であり,列車とその乗車駅,降車駅を指定することによって,金額(料金)が決まる。

発売時

  • 乗客は,まず購入する切符の種類(乗車券又は急行券)を選択し,乗車日,乗車駅,降車駅,人数及び急行券の場合は列車を自動券売機に入力する。
  • 自動券売機は,入力されたデータに基づいて,金額(運賃又は料金)を算出し,表示する。
  • 乗客は,表示内容でよければ,自動券売機に現金を投入し,発売ボタンを押す。表示内容でよくなければ,取消しボタンを押し,初期状態に戻す。
  • 発売ボタンが押されると,自動券売機は投入されている現金を確認して収納し,発券するとともに,釣りがあれば釣銭を返却する。

ソフトウェアの設計には,UML のクラス図などを利用している。乗車券だけを発売する現在の自動券売機のクラス図を,図1に示す。

凡例
実線:静的
斜字体:抽象

新型の自動券売機では,クラス"乗車券"と"急行券"についてはスーパクラスを設けることにし,図2に示すクラス図を作成した。

注 網掛けの部分は図1と同一である。

図2のクラス図におけるスーパクラス"切符"とそのサブクラス"乗車券"及び"急行券"では,共通の属性をスーパクラスに,サブクラス個別の属性を各サブクラスにもたせている。ただし,属性"運賃"と"料金"については,個別に残したが,共通の属性"金額"を追加した。また,乗車券面編集と急行券面編集は,切符に印刷するイメージを作るための,それぞれのサブクラス個別の操作である。

図2のクラス"操作機構"の属性"切符"は,実装ではオブジェクト"乗車券"又は"急行券"を指していて,"操作機構"からそれらのオブジェクトの操作を呼び出すことを可能にする。

新型の自動券売機で急行券を発売する場合の正常処理について,図3に示すシーケンス図を作成した。範囲cにはメッセージが入る。

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