平成16年 春期 基本情報技術者 午後 問08
問08 Java
〔プログラムの説明〕 このプログラムは,数量の単位変換を行う共通機能を提供するクラス群と, それらのテストプログラムからなる。 テストプログラムでは,セルシウス温度(セ氏温度,゜C)及びカ氏温度 (゜F)の変換を行うクラスを利用する。 (1) インタフェース Converter は,単位変換を行うクラスが実装すべき インタフェースを定義する。 (2) クラス ConverterRunner は,単位変換クラスを利用するプログラムから アクセスするためのクラスである。 @ メソッド setConverter は,単位変換クラスのインスタンスを設定する。 A メソッド run は,単位変換クラスのメソッド convert を呼び出す。 (3) クラス CtoF は,セ氏温度の値を,カ氏温度に変換する処理を実装するクラスである。 (4) クラス FtoC は,カ氏温度の値を,セ氏温度に変換する処理を実装するクラスである。 (5) クラス TestConverter は,単位変換クラスを利用するテストプログラムである。 メソッド main は,実行すべき単位変換処理(1 : カ氏−セ氏変換, 2 : セ氏−カ氏変換,q : 終了)の選択を促してから, 入力された値を指定された処理に従って変換する。 実行例を図に示す。
図 クラス TestConverter の実行例 〔プログラム 1〕 public interface Converter { }
〔プログラム 2〕 public class ConverterRunner { private conv; public void setConverter( conv) { this.conv = conv; } public void run(String input) { if (conv == null) return; try { double in = Double.parseDouble(input); double out = conv.convert(in); System.out.println(out); } catch (NumberFormatException e) { System.err.println("invalid input " + input); } } }
〔プログラム 3〕 public class CtoF { public double convert(double input) { return 9.0 / 5.0 * input + 32.0; } }
〔プログラム 4〕 public class FtoC { public double convert(double input) { return 5.0 / 9.0 * (input - 32.0); } }
〔プログラム 5〕 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class TestConverter { public static void main(String[] args) { // 標準入力から入力を受け取る reader を作成する BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); ConverterRunner runner = new ConverterRunner(); try { while (true) { System.out.print("Type 1(FtoC), 2(CtoF), " + "or q(Quit): "); // 標準入力から1行読み込む String choice = reader.readLine(); if ("1".equals(choice)) { runner.setConverter(new FtoC()); } else if ("2".equals(choice)) { runner.setConverter(new CtoF()); } else if ("q".equals(choice)) { break; } else continue; System.out.print("Type input value: "); // 標準入力から1行読み込む String value = reader.readLine(); } } catch (IOException e) { e.printStackTrace(); } } }
設問 プログラム中の に入れる正しい答えを,解答群の中から選べ。
a に関する解答群 ア abstract public void convert(); イ public double convert(double input) { } ウ public double convert(double input); エ public double convert(String input); b に関する解答群 ア Converter イ ConverterRunner ウ CtoF エ FtoC c に関する解答群 ア extends Converter イ extends ConverterRunner ウ implements Converter エ implements ConverterRunner d に関する解答群 ア runner.conv.convert(Double.parseDouble(value)); イ runner.conv.run(value); ウ runner.convert(Double.parseDouble(value)); エ runner.run(value);
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ] | |