基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成20年 春期 基本情報技術者 午後 問08
問08   Java

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

〔プログラムの説明〕

 電気ポットの状態遷移を模したプログラムである。、この電気ポットは,電源に接続 すると休止状態になり,沸騰ボタンが押されると加熱を開始する。沸点に到達すると 加熱を終了し,休止状態に戻る。ただし,電気ポットに水がない場合は,沸騰ボタンが 押されても加熱を開始せず,警告を表示する。電気ポットの状態遷移図を図1に示す。

   図1 電気ポットの状態遷移図

(1) 抽象クラス State は,電気ポットの状態を定義する。

(2) クラス Idie 及びクラスHeating は,それぞれ,休止状態と加熱中状態を 示す State のサブクラスである。

(3) クラス ElectricPot は電気ポットを表す。フィールド currentState は ,電気ポットの状態を示す。フィールド content は,水量を示す。メソッド heat は, 沸騰ボタンが押されたときに呼ばれ,電気ポットに水があれば加熱を 開始する(電気ポットの状態を加熱中に遷移)。水がない場合は例外を投げる。 メソッド boiled は,水が沸点に到達したときに呼ばれ, 加熱を終了する(電気ポットの状態を休上に遷移)。 メソッド isEmpty は,水がない場合 true,それ以外の場合 false を返す。 メソッド main はテスト用のメインプログラムである。実行結果を図2に示す。

 Idle -> Heating
 Heating -> Idle
 No Water!

図2 メソッド main の実行結果

〔プログラム1〕

public abstract class Stale {
   public static final State IDLE = new Idle();
   public static final State HEATING = new Heating(); 

   public void heat(ElectricPot pot) throws Exception {
      if (  )
           ;
      pot.changeState(HEATING); 
   }

   public void boiled(ElectricPot pot) {
      pot.changeState(IDLE); 
   }

   private static class Idle  {
      public String toString() { return "Idle"; } 
   }

   private static class Heating  {
      public String toString() { return "Heating"; }
   }
}

〔プログラム2〕 public class ElectricPot { private State currentState = State.IDLE; private int content; public ElectricPot(int content) { this.content = content; } public void setContent(int content) { this.content = content; } public boolean isEmpty() { return (content == 0); } public void changeState(State newState) { System.out.println(currentState + " -> " + newState); currentState = newState; } public void heat() throws Exception { .heat(this); } public void boiled() { .boiled(this); } public static void main(String[] args) { try { ElectricPot pot = new ElectricPot(10); pot.heat(); pot.boiled(); pot.setContent(0); pot.heat(); pot.boiled(); } catch (Exception e) { System.out.plintln(e.getMessage()); } } }

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

a に関する解答群

ア isEmpty()        イ !isEmpty()

ウ pot.isEmpty()      エ !pot.isEmpty()

オ pot == null       カ pot != null

b に関する解答群

ア return "No Water!"

イ System.out.println("No Water!")

ウ throw "No Water!"

エ throw new Exception("No Water!")

c に関する解答群

ア extends Exception     イ extends Object

ウ extends State       エ implements Exception

オ implements Object    カ implements State

d に関する解答群

ア currentState       イ State

ウ super           エ this

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

解答 c ←クリックすると正解が表示されます

解答 d ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]