Java 応用問題3 平成17年度秋期問12 解説
| 解説 |
|---|
|
設問1 a: 処理内容を見ると、Gate.enterメソッド内で >if (ticket.isValid() && ticket.getOrigin() == null) { がtrueとなる場合に、open()の前に実行する処理である。 選択肢をみると、すべてticket.setOriginを行う処理であり、 それぞれ引数が異なっている。 Gateのインスタンスthisに対して、自動改札機を通って入場する際の処理 enterを行うためには、 >エ ticket.setOrigin(this) が正解。 b: Gate.exitで >if ([b]) { > ticket.adjustValue(fare); > ticket.setOrigin(null); > open(); > return; >} の処理を行う条件である。 選択肢をみると、すべてticket.getValue()と fare(Line.getFareメソッドにより得た運賃)の比較を行う処理である。 問題文より >(3)メソッドexitは,自動改札機を通って出場するときの処理を行う。 >乗車券の金額(残高)が不足するなど,適正でない場合はゲートを閉じる。 の「乗車券の金額(残高)が不足する」という部分に該当する処理であり、 残高:ticket.getValue() 運賃:fare とすると、if文内の処理が実行される、残高不足が発生しない条件は 「残高が運賃以上」という条件となる >オ ticket.getValue() >= fare が正解。 c: OneWayTicketクラス、PrepaidCardクラスのコンストラクタ内での処理であり、 両クラスは、Ticketクラスを継承している。 コンストラクタ引数を、Ticketクラスのフィールド >private int value; に設定するためには、Ticketクラスのコンストラクタを呼び出す必要があるので、 >ウ super(value) が正解。 設問2 d: 抽象クラスTicketを継承して新しいクラスを定義する際の、 コンストラクタの処理であり、 チケットの発券時に発券時刻を記録する必要があり、 valueの値にも最高運賃を設定することにより、不足することはあり得なくなるので、 >エ value の初期値に,路線の最高運賃(全運賃の最大値)を設定し,発券時刻を記録する。 が正解。 e: メソッドgetValueの処理であり、 問題文より >(2) メソッド getValue は,呼び出された時点での乗車券の金額(残高)を返す。 とする必要がある。 数値を返す必要があり、選択肢となりえるのは >オ スーパクラスで定義されたとおり >カ 常に 0 を返す。 >キ 常に路線の初乗り運賃の値を返す。 カ(常に残高が0)、キ(常に残高が初乗り運賃)では 残高不足となると考えられるので オが正解。 (dでvalueに「路線の最高運賃(全運賃の最大値)を設定」しているため、 getValueでは「スーパクラスで定義されたとおり」の通常の処理を行えば 残高不足とはならない) f: メソッドisValidの処理であり、 enterメソッド内から呼び出され、 入場処理が行える状態であるかを判定する。 発券から24時間経過後は、入場できなくするためには >コ 呼び出されたときの時刻がインスタンスに格納されている発券時刻から >24 時間以内のときだけ true を返す。それ以外は false を返す。 が正解。 |
匿名様 ご投稿
メニューへ戻る