平成20年 春期 基本情報技術者 午後 問12
問12 Java次の Java プログラムの説明及びプログラムを読んで,設問1,2に答えよ。 〔プログラムの説明〕 キーとそのキーに関連付けられた値をある形式に従って出力するプログラムである。 プログラム1−1は,与えられた二つの文字列をキー及びそのキーに関連付けられた 値として"キー=値"の形式(以下,プロパティ形式という)で出力する。クラス ToProperties のメソッド write の引数 key はキー,引数 value は値である。 キー及び値は英数字からなる文字列である。 プログラム1−2は,クラス ToProperties のテストプログラムである。メソッド main を実行すると,図1に示す結果が得られる。
図1 プログラム1−2のメソッド main の実行結果
図2 タグ形式におけるエントリ エントリの並びを,タグ<data> 及び </data> で囲んで出力する。 これを実現するために,次のプログラムを新たに作成し,プログラム1−1に変更を 加えた。 (1) プログラム2−1は,プロパティ形式とタグ形式の出力を 統一して扱うインタフェース KeyValueWriter を定義する。 メソッド initialize は,必要な前処理を行い, メソッド write は,引数で与えられたキーと値を出力し,メソッド complete は, 後処理を行う。出力形式は,これらのメソッドの実装で決まる。 (2) プログラム2−2は,インタフェース KeyValueWriter を 実装するクラス ToTags である。 (3) プログラム2−3は,インタフェース KeyValueWriter で定義されている 全メソッドの省略時の実装を与えるクラス KeyValueWriterAdapter である。各メソッドの 実装は,必ず空である。 (4) プログラム2−4は,プログラム1−1をクラス KeyValueWriterAdapter に適用 できるように変更したものである。 (5) プログラム2−5は,変更されたクラス ToProperties 及びクラス ToTags の出力 を検査するテストプログラムである。 全プログラムの変更後,プログラム2−5のメソッド main を実行すると,図3に示す 実行結果が得られる。
図3 プログラム2−5のメソッド main の実行結果(全プログラムの変更後)
〔プログラム1−1〕 public class ToProperties { public void write(String key, String value) { System.out.println(key + "=" + value); } } 〔プログラム1−2〕 public class Test1 { public static void main(String[] args) { ToProperties writer = new ToProperties(); writer.write("color", "red"); writer.write("font", "serif"), } } 〔プログラム2−1〕 public interface KeyValueWriter { public void initialize(); public void write( ); public void complete(); } 〔プログラム2−2〕 public class ToTags implements KeyValueWriter { public void initialize() { System.out.println("<data>"); } public void write(String key, String value) { System.out.println("<entry key=\"" + key + "\">" + value + "</entry>"); } public void write(String key, String value) { System.out.println("</data>"); } } 〔プログラム2−3〕 public class KeyValueWriterAdapter implements KeyValueWriter { public void initialize() { } public void write( ) { } public void complete() { } } 〔プログラム2−4〕 public public void write(String key, String valte) { system.out.println(key + "=" + value); } } 〔プログラム2−5〕 public class Test2 { static String[][] pairs = { {"width", "200"}, {"height","120"}, {"color","blue"} }; public static void main(String[] args) { write(new ToProperties()); System.out.println("---------------"); write(new ToTags()); } private static void write( out) { out.initialize(); for (String[] pair : pairs) { out.write( ); } out.complete(); } } 設問1 プログラム中の に入れる正しい答えを, 解答群の中から選べ。 a に関する解答群 ウ String key, String value エ String[] key, String[] Value イ class ToProperties extends KeyValueWriterAdapter ウ class ToProperties extends ToTags エ class ToProperties implements KeyValueWriter オ class ToProperties implements ToTags ウ Test2 エ ToProperties オ ToTags
ウ pair[i], pair[i + 1] エ pairs[][0], pairs[][1] オ pairs[][1], pairs[][0]
設問2 プログラムを更に拡張して,与えられた文字列をコメントとして出力できるよ うにする。すなわち,プロパティ形式では与えられた文字列の先頭に "#" を 付加して出力し,タグ形式では与えられた文字列を "<!-- " 及び " -->" で 囲んで出力する。例えば,与えられた文字列が "This is a comment." のとき, プロパティ形式では図4のとおりに,タグ形式では図5のとおりに出力する。 ただし,コメントとして与えられた文字列は,改行文字及び文字列 "--" を 含まないものとする。
図4 プロパティ形式でのコメントの出力例
図5 タグ形式でのコメントの出力例 この拡張のために,次の表に示す各コードをプログラムに追加した。各コード の追加先のプログラムとして,表中の に 入れる正しい答えを,解答群の中から選べ。
表 コードの追加先と追加内容
解答群 ウ プログラム2−3 エ プログラム2−4
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| |||||||||||||||