本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

令和元年度 技術士第一次試験問題【専門科目】

V−19

以下のシーケンス図をJavaプログラムで表現したときに、プログラム中の (a) 〜 (c) に入る組合せとして、最も適切なものはどれか。


class (a) {
 (c) insP;
 void methodX() {
  insP.methodY();
 }
}

class (b) {
 (a) insQ;
 void method1() {
  insQ.methodX();
 }
 void methodZ() {
 }
}

class (c) {
 (b) insR;
 void methodY() {
 }
 method2() {
  insR.methodZ();
 }
}

   a    b    c

@ ClassA ClassB ClassC

A ClassA ClassC ClassB

B ClassB ClassC ClassA

C ClassB ClassA ClassC

D ClassC ClassA ClassB


類題

H28 V-15


正解

C


解説

問題図の矢印とともに描かれている 1. methodX() は、「ClassBで定義されているmethodX() を呼び出す」という意味である。
従ってクラスBでmethodX() を定義しておく必要があり、class (a) は class ClassB であることが判る。

同様に、2.methodY() は、「ClassCで定義されているmethody() を呼び出す」という意味である。
従ってクラスCでmethodY() を定義しておく必要があり、class (c) は class ClassC であることが判る。

同様に 3.methodZ() はクラスAで定義しておく必要がある。

ちなみに
class ClassB {
 ClassC insP;
 void methodX() {
  insP.methodY();
 }
}
は、

ClassBを定義する
 ClassC の実体を insPと定義する
 メソッド methodX() は insPのメソッド methodYを呼び出す

という意味になる。

V−18 目次 V−20