pafuイーランスクール 学んでできる

メニューへ戻る

Java 応用問題10 平成14年度春期問12 解説

問題の確認

解説
(問題概要)
飛行機の利用区間から、積算マイレージを計算するプログラムです。
●マイレージとは
飛行機を利用する方が得するになる制度で、乗った距離に応じて、無料航空券などがもらえるものです。
(前提知識)
●interface
●抽象クラス
●問題の仕様の素早い把握
(解説)
問題文の仕様より、5つのクラスとインターフェイスについての理解が先決です。まず、インターフェイスについては、「定数」と「抽象クラス」を定義することが出来ます。この問題では、定数のみを定義しています。2次元配列「MILEAGE」については、配列の内容をセットしています。
クラスMileageTestについて
ここでは、実際の処理を行うクラスです。インターフェイスを使用出来るように定義されています。4人分の利用者のオブジェクトを作成して、利用者、積算マイレージを初期化しています。実際の出力は、コンストラクタで行っています。
クラスPassengerについて
このクラスの理解が一番重要かと思います。抽象メソッドの定義の理由は、マイレージの計算が一般利用者とゴールド利用者では違うためです。
クラスNormalPassengerについて
一般利用者の積算マイレージを計算します。
クラスGoldPassengerについて
ゴールド利用者の積算マイレージを計算します。
クラスNotEnoughMileageExceptionについて
無料往復チケットに交換できない場合のメッセージを表示するクラスです。
(設問1)
(a)
コンストラクタの処理の部分です。引数が4つあることに注目して下さい。最初に「積載マイレージ」を計算して、名前と積載マイレージを出力しています。次のif分の条件については、コンストラクタの第4引数「awardTripは、問題文より、無料往復チケット指定で交換しない場合は「0」を指定するとあります。なお且つ、tryの次の22行目に交換可能かの判定をしています。これより、解答は「awardTrip」で、「イ」となります。
(b)
Passengerクラスは、問題文より、「利用者の抽象クラス」と明記されています。よって、ここは、「abstracr」となり、正解は「ア」となります。
(c)
ここは、継承されている「NormalPassengerクラス」「GoldPassengerクラス」のコンストラクタより、super(name, totalMileage);より、コンストラクタであることが分かります。これより、「Passenger」となり、正解は「オ」となります。
(d)
無料往復チケットに交換可能かどうかの条件を求められています。これは、問題文にも交換の条件の記載はありません。偽の時にtotalmileageを引数より引いています。よって「totalMileage」となり、正解は「ク」となります。
(設問2)
実際のトレースの作業を行う必要があります。
(1)5行目の実行
オブジェクトの作成を行う。
(2)11行目の実行
ここで、最初に17行目のaddMileageメソッドが実行されます。
これは、MILEAGE[PARIS][KANSAI] * NOMAL = MILEAGE[3][1]*1.00 = 6100となります。
5行目の第二引数が「50000」ですから、50000+6100=56100となります。
次に、20行目の条件を満たしますので、22行目のawardTravelメソッドが実行されます。
これは、引数は「US_ROUND_TRIPで、40000」となり、if文の条件は成立せず偽の処理を行います。これより、「56100-40000 = 16100」となります。これが解答です。よって、正解は「ウ」となります。
(設問3)
まず、既存の配列の初期値は、4種類の地区について4行4列の2次元配列としています。これを理解して下さい。次に変更した配列では、1行目成田、2行目関西で行き先2個、3行目ロサンゼルスで行き先3個、4行目パリで行き先4個となっています。これは、「from と toを入れ替えることが出来なくなっています」。つまり、行=from、 列=to となっているため、「from < to」の条件の時に、これを入れ替える(交換)する必要があります。すべての解答群はこの処理を行っています。よって、正解は「エ」となります。
(最後に)
一見長い問題文ですが、この問題は、問題の仕様の把握が一番重要かと思います。これが理解出来ていないとクラスの役割についての理解が出来ません。アルゴリズム的な部分も必要ですが、問題の仕様について把握が正解を左右するかと思います。

pafu 投稿

メニューへ戻る

pafuイーランスクール

pafuイーランスクール 学んでできる