自動販売機の内部処理についてのクラス図とシーケンス図。(平成16年春ソフトウェア開発技術者午後1問2)

解答です。

設問1
入金部

設問2
ア:ランプ点灯 イ:ランプ消灯

設問3
[ウ]:表示(金額) [エ]:入金通知(金額) [オ]::セッション管理(下線) [カ]::インジケータ(下線)
[キ]:ランプ点灯 [ク]:120 [ケ]:80 [コ]:0 サ:ランプ消灯

注)問題文によるとインスタンスは名前の下線を引くことになってますが、ブログシステムの関係で下線を引けないため、ここでは「:名前(下線)」で表記しています。

解説してみた。

設問1
 文中に「自動販売機は,入金されるたびに,入金総額をインジケータに表示する。」とあるので、インジケータによる入金総額表示の操作は、入金総額の属性、入金処理()の操作があるクラスである入金部に追加するのが適切。

設問2
・[ア]について
 文中に「入金総額が缶飲料の価格に達すると,自動販売機は価格に達した缶飲料に対応する購入可能ランプを点灯する。」とあり、最初のシーケンス(図2)を見ると、[ア]の操作は、入金部クラスからの総額通知メッセージの後に缶飲料スロットクラス自身へのメッセージで操作が行われています。このため、[ア]には、缶飲料スロットクラスの操作である「ランプ点灯」が入ります。

・[イ]について
 文中に「顧客がその缶飲料を購入するためのボタンを押すと,自動販売機は選択された缶飲料を商品ロに置き,購入可能ランプを消灯し,インジケータの表示を0にする。つり銭がある場合には,レジスタから必要な金額のつり銭を出し,返却金口に戻す。」とあります。

 缶飲料を購入するボタンを押した後の操作のうち、商品排出とつり銭返却は、すでに最初のシーケンス図(図2)に記載されています。残りは、ランプ消灯とインジケータの表示を0にする操作ですが、インジケータの表示操作は、入金部クラス自身へのメッセージで行われるため、入金部クラス→缶飲料スロットのメッセージによる操作はランプ消灯になります。よって、[イ]にはランプ消灯が入ります。

設問3
・[ウ]と[カ]について
 修正したクラス図(図3)、修正したシーケンス図(図4)によると、セッション管理クラスは、メッセージでインジケータクラスの表示(100)操作を行い、インジケータに金額に表示させます。よって、[ウ]には「表示(金額)」、[カ]には「:インジケータ (下線)」が入ります。

・[エ]と[オ]について
 入金部で入金処理(100)操作を済ませた後、メッセージでセッション管理クラスの入金通知(100)操作を行ってます。よって、[エ]には「入金通知(金額)」、オには「:セッション管理 (下線)」が入ります。

・[キ]について
 入金部クラスが総額通知(金額)操作の金額が、ジュースの代金(120円)以上になった後で、缶飲料スロットクラスが自身の操作を呼び出している。入金総額がジュースの価格以上になった場合に、購入可能ランプを点灯する処理は修正前と変わらないので、[キ]には缶飲料購入クラス内の操作である「ランプ点灯」が入ります。

・[クについて
 ボタンを押してジュースを購入すると、缶飲料スロットクラスがメッセージでセッション管理クラスの購入通知(金額)を操作することで、セッション管理クラスにジュースの購入金額(この場合は120円)を通知する。このため、[ケ]には、「120」が入ります。

・[ケ][コ]について
 入金部クラスがジュースの購入通知を受け取ると、つり銭(この場合は80円)を返却する処理を行います。

 入金部がメッセージでレジスタクラスのの出金操作(80)を行い、さらにレジスタクラスがメッセージで返却金口クラスの返却(80)操作を行うことで、80円のつり銭を返却金口に出します。加えて、入金部クラスがメッセージでインジケータクラスの表示(0)操作をすることで、金額表示を0円にします。よって、[ケ]には「80」、[コ]には「0」が入ります。

・[サ]について

 修正したシーケンス図(図4)によると、ジュース購入・つり銭返却後、入金部がメッセージで缶飲料スロットクラスの総額通知(0)操作の後、缶飲料スロットクラス自身へのメッセージによる操作が行われています。ジュース購入とつり銭返却後の処理は、ランプ消灯しかないので、[サ]には「ランプ消灯」が入ります。

IPAの公式解答
平成16年春ソフトウェア開発技術者午後1 IPA公式解答(PDFファイル)

 今回の出題形式は、全て字句を記述する形式でした。クラス図やシーケンス図を書いた経験が無いこともあって、空欄に適切な字句を入れていくのがきつかったです。

 今回の自動販売機についての問題を解答していくことで、(試験問題用に単純化されているとはいえ)普段何気なく利用している自称販売機内の処理を追うことができました。今後自動販売機を使うことがあったら、この問題を思い浮かべながら自動販売機内部で行われる処理について考えそうです。

 そういえば、ここ最近は自動販売機でジュースを買っていない。ジュース類を買う場合はいつもディスカウント店の格安価格で買っていることもあり、定価販売の自動販売機をほとんど使わなくなってます。

にほんブログ村 ゲームブログへ

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする