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

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

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

〔プログラムの説明〕

任意のオブジェクトを格納し,取り出すプログラムである。 格納されたオブジェクトを取り出す方法として,先入れ先出し法( First-In-First-Out ) 及び後入れ先出し法( Last-In-First-Out )がある。

(1) 抽象クラス Store は,メソッド put,get,size を定義する。

public void put(Object value)

 引数で指定した value を Store のインスタンスに先着順に格納する。 格納できるオブジェクトの個数の上限は 50 である。 それを超えて格納しようとしたときは DataStoreException を投げる。

public abstract Object get()

 格納されているオブジェクトを一つ取り出して返す。 どのオブジェクトを取り出すかは,このメソッドを実装するサブクラスによって決まる。 オブジェクトがないときは DataStoreException を投げる。

public int size()

 格納されているオブジェクトの個数を返す。 オブジェクトが格納されていないときは 0 を返す。

(2) クラス FifoStore は,抽象クラス Store のサブクラスで, メソッド get は格納されているオブジェクトのうち最初に格納されたものを取り出して返す。 すなわち,先入れ先出しとなる。

(3) クラス LifoStore は,抽象クラス Store のサブクラスで, メソッド get は格納されているオブジェクトのうち最後に格納されたものを取り出して返す。 すなわち,後入れ先出しとなる。

(4) クラス StoreTest は二つのサブクラスをテストするプログラムである。 プログラム起動時に指定された引数を FifoStore 及び LifoStore に格納し,取り出す操作をする。 実行例を図に示す。 ただし,図中の % はシステムのコマンドプロンプトを表し, コマンドの引数は String の配列としてメソッド main に渡されるものとする。

% java StoreTest 起 承 転 結
0: 起 1: 承 2: 転 3: 結
0: 結 1: 転 2: 承 3: 起

 図 クラス StoreTest の実行例

基本情報技術者試験


〔プログラム 1〕
public abstract class Store {
   Object[] data = new Object[50];
   int index = 0;
   public void put(Object value) {
      if ()
         throw new DataStoreException("overflow");
      data[index++] = value;
   }
   public abstract Object get();
   public int size() {
      return ;
   }
}

〔プログラム 2〕

public class FifoStore extends Store {
   public Object get() {
      if (index == 0)
         throw new DataStoreException("not exist");
      Object value = data[0];
      for ()
         data[i] = data[i + 1];
      data[--index] = null;
      return value;
   }
}

〔プログラム 3〕

public class LifoStore extends Store {
   public Object get() {
      if (index == 0)
         throw new DataStoreException("not exist");
      Object value = data[--index];
      data[index] = null; 
      return value;
   }
}

〔プログラム 4〕

public class StoreTest {
   public static void main(String[] args) {
      FifoStore fifo = new FifoStore();
      LifoStore lifo = new LifoStore();
      for (int i = 0; i < args.length; i++) {
         fifo.put(args[i]);
         lifo.put(args[i]);
      }
      printData(fifo);
      printData(lifo);
   }
   private static void printData( store) {
      int size = store.size();
      for (int i = 0; i < size; i++)
         System.out.print(i + ": " + store.get() + " ");
      System.out.println();
   }
}

〔プログラム 5〕

public class DataStoreException extends RuntimeException {
   public DataStoreException(String message) {
      super(message);
   }
}

基本情報技術者試験


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

a に関する解答群

ア index < data.length    イ index <= data.length

ウ index > data.length    エ index >= data.length

オ index + 1 >= data.length 

b に関する解答群

ア data.length    イ data.length - 1

ウ data.length - index    エ index

オ index + 1

c に関する解答群

ア int i = 0; i < index; i++

イ int i = 0; i < index - 1; i++

ウ int i = 0; i < index - 2; i++

エ int i = 1; i < index; i++

オ int i = 1; i < index - 1; i++

d に関する解答群

ア FifoStore    イ LifoStore    ウ Object

エ Store    オ StoreTest

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

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

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

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


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