平成25年春期試験午後問題 問11
問11 ソフトウェア開発(Java)
次のJavaプログラムの説明及びプログラムを読んで,設問1~3に答えよ。
(Javaプログラムで使用するAPIの説明は,こちらを参照してください。
〔プログラムの説明〕
あみだくじの作成と結果の表示を行うプログラムである。
あみだくじとは,複数の平行に並ぶ縦線と,2本の縦線だけに水平に接続する複数の横線から成るくじである。横線は縦線の上端及び下端には接続せず,縦線の同一箇所に複数の横線が接続されることもない。くじをたどる手順は次のとおりである。
(Javaプログラムで使用するAPIの説明は,こちらを参照してください。
〔プログラムの説明〕
あみだくじの作成と結果の表示を行うプログラムである。
あみだくじとは,複数の平行に並ぶ縦線と,2本の縦線だけに水平に接続する複数の横線から成るくじである。横線は縦線の上端及び下端には接続せず,縦線の同一箇所に複数の横線が接続されることもない。くじをたどる手順は次のとおりである。
- 1本の縦線を選択し,上端から下方向にたどり始める。
- 途中に,接続する横線があるときは必ず曲がり,もう一方の縦線までたどる。
- 縦線に到達したら,また下方向にたどる。
- 下端に到達するまで(2)と(3)を繰り返す。
- 下端に到達したときの縦線の位置が,くじを引いた結果である。
- 縦線を左からの順番で保持する。左端を0番目とする。
- 縦線の長さを 1.0 とし,上端の縦軸座標を 1.0,下端の縦軸座標を 0.0 とする。
- 横線の両端の縦軸座標は等しく,0.0 よりも大きく 1.0 未満である。
- 縦線の本数を引数とするコンストラクタをもつ。
- 次のメソッドをもつ。
- void addHorizontalLine(int x1,int x2,double y)
横線を追加するメソッドである。左から x1 番目の縦線と x2 番目の縦線を縦軸座標 y で 接続する横線を追加する。ただし,x1 と x2 が等しいか,2本の縦線のいずれか又は両方に,既に縦軸座標 y で接続する横線があるときには追加しない。
あみだくじは,クラス GhostLeg のインスタンスを生成した後,このメソッドを任意の回数だけ呼び出し,横線を追加することによって完成する。 - int trace(int x)
くじを引いた結果を返すメソッドである。左から x 番目の縦線を選択し,あみだくじをたどった結果を返す。
- void addHorizontalLine(int x1,int x2,double y)
広告
設問1
次の記述中の に入れる正しい答えを,解答群の中から選べ。
クラス GhostLeg の内部クラス VerticalLine は1本の縦線を表すクラスであり,インスタンスは,そのインスタンスが示す縦線に接続している横線を保持している。この内部クラスでは,横線を, として表現している。
クラス GhostLeg の内部クラス VerticalLine は1本の縦線を表すクラスであり,インスタンスは,そのインスタンスが示す縦線に接続している横線を保持している。この内部クラスでは,横線を, として表現している。
解答群
- クラス HorizontalLine のインスタンスの列
- その横線が接続する縦軸座標とクラス HorizontalLine のインスタンスのマップ
- その横線が接続する縦軸座標とその横線に接続するもう1本の縦線のマップ
- その横線に接続する2本の縦線のマップ
解答選択欄
- ウ
解説
この設問の解説はまだありません。設問2
プログラム中の に入れる正しい答えを,解答群の中から選べ。
a に関する解答群
- ghostLeg
- GhostLeg
- void ghostLeg
- void GhostLeg
b に関する解答群
- 0
- 1
- new VerticalLine()
- null
c に関する解答群
- -1.0
- 0.0
- x
- y
d に関する解答群
- horizontalLines.get(x)
- horizontalLines.get(y)
- v.getOpposite(y)
- verticalLines.get(x)
解答選択欄
- a:
- b:
- c:
- d:
- a=イ
- b=ウ
- c=イ
- d=ウ
解説
この設問の解説はまだありません。設問3
次の記述中の に入れる正しい答えを,解答群の中から選べ。
メソッド addHorizontalLine の呼出しにおいて,引数 x1 又は x2 に相当する縦線がないときには IndexOutOfBoundsException が投げられる。一方,引数 y には追加する横線の縦軸座標を指定するので,その値は 0.0 よりも大きく 1.0 未満でなければならないが,それ以外の値を指定しても例外は投げない。
これを,引数 x1 及び x2 の値によらず,引数 y の値が横線の縦軸座標として取り得る範囲から外れているときに IllegalArgumentException を投げるようにするには,プログラム1中のコメント"//設問3(e)"の1行を次のif文に置き換えればよい。
メソッド addHorizontalLine の呼出しにおいて,引数 x1 又は x2 に相当する縦線がないときには IndexOutOfBoundsException が投げられる。一方,引数 y には追加する横線の縦軸座標を指定するので,その値は 0.0 よりも大きく 1.0 未満でなければならないが,それ以外の値を指定しても例外は投げない。
これを,引数 x1 及び x2 の値によらず,引数 y の値が横線の縦軸座標として取り得る範囲から外れているときに IllegalArgumentException を投げるようにするには,プログラム1中のコメント"//設問3(e)"の1行を次のif文に置き換えればよい。
e に関する解答群
- α
- β
- γ
- δ
f に関する解答群
- y <= 0.0 && y >= 1.0
- y <= 0.0 || y >= 1.0
- y > 0.0 && y < 1.0
- y > 0.0 || y < 1.0
解答選択欄
- e:
- f:
- e=ア
- f=イ
解説
この設問の解説はまだありません。広告