平成28年度 III-15

科目: 専門科目 / 分野: 情報工学部門 / 年度: 平成28年度

III-15 問題画像

出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」

シーケンス図(ClassAからClassBへmethodX、ClassBからClassCへmethodY、ClassCからClassAへmethodZ)をJavaプログラムで表現したときの、空欄(a)〜(c)に入るクラス名の組合せを選ぶ問題。

解説

この問題で問われていること

シーケンス図のメッセージ(メソッド呼出し)を、送り手・受け手のクラスの定義として読み取る問題。

解き方

① シーケンス図の矢印=「呼ぶ側のクラスのメソッドの中で、呼ばれる側のメソッドを呼ぶ」。コードの中のメソッド名から、どのクラスかを決める
② methodX() を持ち中で methodY() を呼ぶ(a)=ClassB。methodY() を持つ(c)=ClassC。methodX() を呼び methodZ() を持つ(b)=ClassA
③ ③

正解が正しい理由

シーケンス図では、1.methodX()はClassAからClassBへ(ClassBがmethodXを持つ)、2.methodY()はClassBからClassCへ(ClassCがmethodYを持つ)、3.methodZ()はClassCからClassAへ(ClassAがmethodZを持つ)、呼び出される。プログラムを見ると、class (a)は、methodX()を定義し、その中で(c)型のinsPのmethodY()を呼び出している。methodXを持つのはClassBなので(a)=ClassB。methodYを持つ(c)=ClassC。class (b)は、methodZ()を定義し、(a)型(ClassB)のinsQのmethodX()を呼び出している。methodZを持つのはClassAなので(b)=ClassA。class (c)は、methodY()を定義し、(b)型(ClassA)のinsRのmethodZ()を呼び出している(ClassCからClassAへの呼出しと一致)。したがって、(a)=ClassB、(b)=ClassA、(c)=ClassCの③が正しい。

各選択肢について

覚えるべきポイント

シーケンス図の矢印は、呼び出す側→呼び出される側。呼び出されるメソッドは、受け手のクラスに定義され、呼び出す側のクラスは、そのクラス型のフィールドを持つ。

キーワード: シーケンス図、Java、メソッド呼出し、クラス、インスタンス、UML、情報工学部門

出題履歴

類題(同じ論点の別問題)