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

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

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

〔プログラムの説明〕

PC のセキュリティに関する更新プログラム(以下,パッチという)の適用状況を 管理するプログラムである。

クラス PCChecker は,PC に適用が要求されるパッチと各 PC に適用済みのパッチを管理し, その適用状況の一覧を出力する。 PC のパッチ情報として次のものが登録される。

@ PC の識別子

A PC の種別(デスクトップ PC 又はノート PC)

B 適用済みのパッチの識別子(複数の場合は複数個)

C ノート PC の場合,暗号化ツールがインストールされているか否か

PC に問題がない(secure)と判断する基準は,次のとおりである。

デスクトップ PC: 適用が要求されるパッチがすべて適用されている。

ノート PC: 適用が要求されるパッチがすべて適用されている。

       さらに,暗号化ツールがインストールされている。

(1) クラス PCChecker は,PC のパッチ情報を管理するために,クラス DesktopPC とクラス NotebookPC のインスタンスを用いる。

(2) クラス PC は,デスクトップ PC とノート PC に共通の処理を実現する。 メソッドinstallPatch は,指定されたパッチを適用済みにする。 メソッド installed は,指定されたパッチが適用済みのとき true,未適用のとき false を返す。 メソッドrequiresEncryptionTool は,暗号化ツールのインストールが必要なとき true, 不必要なとき false を返す。

(3) クラス DesktopPC は,デスクトップ PC を表し,デスクトップ PC 独自の処理を実現する。

(4) クラス NotebookPC は,ノート PC を表し,ノート PC 独自の処理を実現する。

(5) クラス PCChecker のメソッド main は,このプログラムの使用例である。 その実行結果を,次に示す。

pc001: requires [sp1-A01, sp1-A03]
pc002: requires encryption tool
pc003: secure

(6) クラス java.util.ArrayList は,オブジェクトをリストで管理する手段を提供する。 次のメソッドを利用している。

  public boolean add(Object obj)
     オブジェクト obj をリストに追加し,true を返す。

  public boolean contains(Object obj)
     オブジェクト obj がリストに含まれる場合に true,含まれない場合に false を返す。

  public boolean isEmpty()
      リストが空の場合に true,空でない場合に false を返す。

〔プログラム1〕
import java.util.List;
import java.util.ArrayList;
public abstract class PC {
   private String id;
   private List installedPatches = new ArrayList();
   public PC(String id) { this.id = id; }
   public String getID() { return id; }
   public void installPatch(String patch) {
      installedPatches.add(patch);
   }
   public boolean installed(String patch) {
      return ;
   }
   public abstract boolean requiresEncryptionTool();
}

〔プログラム2〕
public class DesktopPC  {
   public DesktopPC(String id) { ; }
   public boolean requiresEncryptionTool() {
      return false;
   }
}

〔プログラム3〕
public class NotebookPC  {
   private boolean hasEncryptionTool;
   public NotebookPC(String id, boolean hasEncryptionTool) {
      ;
      this.hasEncryptionTool = hasEncryptionTool;
   }
   public boolean requiresEncryptionTool() {
      return !hasEncryptionTool;
   }
}

〔プログラム4〕
import java.util.List;
import java.util.ArrayList;
public class PCChecker {
   public static void main(String[] args) {
      // PC のパッチ情報を登録する。
      PC[] pc = new PC[3];
      pc[0] = new DesktopPC("pc001");
      pc[1] = new NotebookPC("pc002", false);
      pc[2] = new NotebookPC("pc003", true);
      pc[0].installPatch("sp1-A02");
      pc[1].installPatch("sp1-A01");
      pc[1].installPatch("sp1-A02");
      pc[1].installPatch("sp1-A03");
      pc[2].installPatch("sp1-A01");
      pc[2].installPatch("sp1-A02");
      pc[2].installPatch("sp1-A03");
      // PC の状態を出力する。curPatches は,適用が要求されるパッチを示す。
      String[] curPatches = { "sp1-A01", "sp1-A02", "sp1-A03" };
      for (int i = 0; i < pc.length; i++) {
         System.out.print(pc[i].getID() + ":");
         List notApplied = new ArrayList();
         for (int j = 0; j < curPatches.length; j++)
            if ()
               notApplied.add(curPatches[j]);
         if (!notApplied.isEmpty() ||
             pc[i].requiresEncryptionTool()) {
            if (!notApplied.isEmpty())
               System.out.println(" requires " + notApplied);
            if (pc[i].requiresEncryptionTool())
               System.out.println(" requires encryption tool");
         } else
            System.out.println(" secure");
      }
   }
}

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

a に関する解答群

ア installedPatches.isEmpty()

イ !installedPatches.isEmpty()

ウ installedPatches.contains(patch)

エ !installedPatches.contains(patch)

オ patch == null

カ patch != null

b に関する解答群

ア extends Object       イ extends PC

ウ extends PCChecker    エ implements Object

オ implements PC       カ implements PCChecker

c に関する解答群

ア PC()        イ PC(id)        ウ super()

エ super(id)      オ this.id = id

d に関する解答群

ア curPatches[j] != null

イ notApplied.isEmpty()

ウ pc[i] != null

エ pc[i].installed(curPatches[j])

オ !pc[i].installed(curPatches[j])

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

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

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

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


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