ここでは、当社の新人研修受講者に向けて、基本情報のJavaの過去問を掲載しています。

想定しているのは、NetBeansなどのIDEにコピー・ペーストしたうえで、自分の正しいと思う答えを埋めて動作を確認するという使い方です。


次の Java プログラムの説明及びプログラムを読んで,設問1,2に答えよ。

( Java プログラムで使用する API の説明は,IPAのPDFを参照してください。)

〔プログラムの説明〕

 図書の貸出しと返却の処理をするプログラムである。図書には書籍と雑誌があり, 利用者が借りることのできる図書の冊数には上限がある。

(1) 抽象クラス Book は,図書に共通の属性と処理を定義する。 属性 name は図書の名前であり,属性 id は図書に一意に付けられた識別子である。

(2) クラス RegularBook は 書籍を表す。

(3) クラス Magazine は雑誌を表す。 属性 issueNo は,雑誌の創刊号からの号数で,古い号から昇順の値をもつ。 各雑誌について,issueNo が最大のものが最新号である。

(4) クラス User は図書の利用者を表す。 属性 name は利用者の名前であり,属性idは利用者に一意に付けられた識別子である。

(5) クラス Library は,貸出しと返却の処理をする。属性 availables は貸出し可能な図書の集合を表し,属性 checkedOut は貸出し中の図書の集合を表す。

属性 limit は利用者が借りることのできる図書の冊数の上限を与える。 メソッド checkoutBook は,貸出し処理を実行する。 指定された図書が既に貸し出されている場合と利用者が既に貸出し冊数の上限まで図書を 借りている場合,例外を投げる。 メソッド returnBook は返却処理を実行する。

 メソッド main はテスト用のメインプログラムである。実行結果を図に示す。

Taro is checking out Magazine: JITEC News, No.3912 (M001)
Taro is checking out Magazine: JITEC News, No.4001 (M002)
Taro is checking out Book: Java Programming (P001)
Taro is checking out Book: Ruby Programming (P003)
=> failed: exceeding checkout limit
Taro returned Magazine: JITEC News, No.3912 (M001)
Hana is checking out Magazine: JITEC News, No.3912 (M001)
Hana is checking out Book: Java Programming (P001)
=> failed: unavailable

[プログラム]回答する上で必要な行番号はコメントしています。

設問1 プログラム中の/*  */ に入れる正しい答えを, 解答群の中から選べ。

a に関する解答群

ア new Book()

イ new Book(name, id)

ウ super()

エ super(name, id)

オ this.name = name; this.id = id

b に関する解答群

ア return Exception     イ return new Exception

ウ System.err.println    エ System.out.println

オ throw Exception     カ throw new Exception

c に関する解答群

ア checkedOut.add    イ checkedOut.remove

ウ entry.add        エ entry.remove

設問2 雑誌について,最新号の貸出しを禁止する処理を追加したい。 このため,次のようにプログラムを変更する。 次の記述中の に入れる正しい答えを,解答群の中から選べ。 ただし,各雑誌の各号は1冊ずつしかなく,雑誌の登録は,必ずしも古い号から行われるとは限らない。 また,/*  */ には設問1の正しい答えが入っているものとする。

図

d に関する解答群

ア <     イ >     ウ !=     エ ==

e に関する解答群

ア latestMagazines.add(magazine)

イ register((Magazine) book)

ウ return

エ returnBook(magazine)