平成26年春期試験午後問題 問11

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】

問11 ソフトウェア開発(Java)

次のJavaプログラムの説明及びプログラムを読んで,設問1,2に答えよ。
(Javaプログラムで使用するAPIの説明は,こちらを参照してください。)

〔プログラムの説明〕
 雑誌記事のオンライン購読サイトをモデルとしたプログラムである。記事には,無料記事と有料記事がある。サイトの利用者は,誰でも無料記事を閲覧できる。利用者は,名前を登録することで登録会員となり,無料記事に加え,有料記事を1日に1本だけ無料で閲覧できる。登録は無料である。登録会員は,購読料を支払うことで有料会員となり,全ての記事を無制限に閲覧できる。 このプログラムは,次のクラスから成る。
  • クラス Article:記事を表す。
     各記事には,記事識別子(id)が割り当てられる。各記事は,見出し(headline),本文(body)及び無料記事を表すフラグ(free)から成る。記事識別子と記事は,1対1に対応し,同一記事に対して Article のインスタンスは高々1個しか存在しない。
    1. 静的メソッド create:引数で与えられた記事識別子及び記事のデータから Article のインスタンスを生成し,登録する。記事識別子に重複はないものとする。
    2. 静的メソッド getArticle:引数で与えられた記事識別子から登録されている記事である Article のインスタンスを返す。記事識別子に誤りはないものとする。
    3. 静的メソッド getIds:登録されている全記事の記事識別子の集合を返す。
    4. メソッド isFree:無料記事であれば true を返す。そうでなければ,false を返す。
    5. その他,記事のデータを返すメソッドが用意されている。
  • 抽象クラス User:利用者を表す。
    1. コンストラクタ:引数で与えられた利用者名をもつインスタンスを生成する。
    2. メソッド getName:利用者名を返す。
    3. 抽象メソッド testAndMark:引数で与えられた記事が閲覧可能かどうかを調べ,閲覧可能であれば true を返す。そうでなければ,false を返す。このメソッドが true を返したとき,サイトは利用者に記事を表示するものとし,必要に応じて記事が閲覧済みであることを記録する。
  • クラス Guest:未登録の利用者(ゲスト)を表す。
    1. コンストラクタ:利用者名を"ゲスト"とするインスタンスを生成する。
    2. メソッド testAndMark:引数で与えられた記事が無料記事であれば true を返す。そうでなければ,false を返す。
  • クラス Member:登録会員を表す。
    1. コンストラクタ:引数で与えられた利用者名をもつインスタンスを生成する。
    2. メソッド testAndMark:引数で与えられた記事が無料記事であれば,true を返す。有料記事の場合は,今日最初の有料記事の閲覧のとき,又は今日閲覧済みの有料記事と同一であるときは,true を返す。それら以外のときは,false を返す。加えて,今日最初の有料記事の閲覧のときには,閲覧済みの記事として今日の日付とともに記録する。
    3. メソッド today:今日の日付(ローカル時間)を1970年1月1日からの日数で返す。
  • クラス PaidMember:有料会員を表す。
    1. コンストラクタ:引数で与えられた利用者名をもつインスタンスを生成する。
    2. メソッド testAndMark:全ての記事に対して true を返す。
  • クラス SubscriptionSite:上記クラスのテスト用プログラムである。メソッド main を実行すると,図1の結果が得られる。
 なお,Member 及び PaidMember のコンストラクタに与える利用者名の衝突は,ないものとする。
pm11_1.png
pm11_2.png

設問1

プログラム中の に入れる正しい答えを,解答群の中から選べ。
a,d に関する解答群
  • !article.isFree()
  • article.isFree()
  • false
  • this.article != article
  • this.article == article
  • this.article == null
  • true
b に関する解答群
  • new User(name)
  • super()
  • super(name)
  • super.name = name
  • this()
  • this(name)
  • this.name = name
  • User(name)
c に関する解答群
  • !=
  • <
  • ==
  • >
  • instanceof
e,f に関する解答群
  • int i = 0; i < Article.getIds().size(); i++
  • int i = 0; i < readers.length; i++
  • Member reader : readers
  • PaidMember reader : readers
  • String id : Article.articles
  • String id : Article.getIds()
  • User reader : readers
解答選択欄
  • a:
  • b:
  • c:
  • d:
  • e:
  • f:
  • a=
  • b=
  • c=
  • d=
  • e=
  • f=

解説

この設問の解説はまだありません。

設問2

プログラム6で記事識別子"0003"の記事の無料記事を表すフラグの値を false にしてプログラムを実行したとき,"<閲覧不可>"は何回出力されるか,正しい答えを,解答群の中から選べ。ここで,プログラム中のafには正しい答えが入っているものとし,プログラムは日をまたいで実行しないものとする。
解答群
  • 0回
  • 1回
  • 2回
  • 3回
  • 4回
  • 5回
解答選択欄
  •  
  •  

解説

この設問の解説はまだありません。

Pagetop