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) が正解。 |
匿名様 ご投稿
メニューへ戻る