以下のシーケンス図を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 ClassA ClassC
C ClassB ClassC ClassA
D ClassC ClassB ClassA
B
問題図の矢印とともに描かれている 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−14 | 目次 | V−16 |