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

メニューへ戻る

Java 応用問題1 平成18年度秋期問12 解説

問題の確認

解説
設問1
a:

RegularBookクラス、Magazineクラスのコンストラクタ内の処理であり、
RegularBookクラス、MagazineクラスはBookクラスのサブクラスである。
コンストラクタの引数String name, String idをフィールドに設定する必要があるが、
スーパークラスのBookのコンストラクタを呼び出すことにより、1行で設定ができる。
>エ super(name, id);
が正解。

b:
Library.checkoutBookメソッド内の処理で、引数に
String型"unavailable","exceeding checkout limit"を持つ処理を行っている。
この2つの文字列は、実行結果に「faild: ~」と表示されている文字列である。
Library.mainメソッド内の処理を見ると、「faild: ~」と表示される場合の~の部分は
Library.checkoutBookメソッドの結果の例外Exception.getMessage()の戻り値である。
よって、bは引数の文字列をmessageとして保持する
例外インスタンスを生成してスローする処理である。
>カ throw new Exception
が正解。

c:
cはメソッドreturnBook内の処理であり、
問題文(5)に
>メソッドreturnBookは返却処理を実行する。
>属性availablesは貸出し可能な図書の集合を表し、
>属性checkedoutは貸出し中の図書の集合を表す。
とある。
返却処理として、
「貸出し中の図書の集合の中に、返却する本があれば、
 貸出し中の図書の集合から削除し、貸出し可能な図書の集合に追加する」
となるので、
73:貸出し中の図書の集合の中に、返却する本があれば、
74:貸出し中の図書の集合から削除し ※[c]の処理
75:貸出し可能な図書の集合に追加する
checkedoutからbookのキーを持つエントリを削除する処理となる。
>イ checkedout.remove
が正解。

設問2
設問1 bの解答より、bは「例外を生成しスローする処理」
追加する処理を上から見ると、

50直後:Magazineを要素に持つSet latestMagazinesを属性として追加(雑誌の最新号の一覧)
58直後:図書の一覧から情報の登録を行う際に、図書の種別が雑誌(Magazine)である場合に
    updateLatestMagazineListメソッドにより雑誌の最新号の一覧を更新する
62直後:chackoutBook(貸出し処理)の中で、借りようとした本が最新号の雑誌であれば
    例外をスローする
78直後:Magazine型の引数の情報から、雑誌の最新号の一覧を更新する
    updateLatestMagazineListメソッドを定義する

となると解釈される。

d:
latestMagazinesに登録されている(号数の異なる)同じ雑誌があれば、
引数の雑誌の方が新しければ、latestMagazinesを更新する処理となる。
問題文(3)にissueNoが最大のものが最新号とあるので、
if文がtrueの場合の処理を見ると、更新をせずそのままreturnする場合にtrueとなる。
>ア <
とすれば、引数が登録済みの最新号一覧よりも古い場合として、
更新を行わない処理となる。

e:
returnに該当しない場合
1.引数の雑誌が最新号一覧に登録されていない
2.引数の雑誌が最新号一覧に登録済みのものより新しい
 (eの時点でlatestMagazines.removeにより古い情報は削除済みで、
  この雑誌は登録されていない)
に行う必要のある処理(引数の雑誌を最新号一覧に登録する)であるので、
>ア latestMagazines.add(magaine)
が正解。

匿名様 ご投稿

メニューへ戻る

pafuイーランスクール

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