開発技術

基本情報技術者試験クラス間関係」の問題

マネジメント系開発技術難易度:normal
クラス設計で、『正社員』『契約社員』『派遣社員』に共通する氏名・社員番号などの属性や操作を上位の『従業員』クラスにまとめ、各クラスはそれを引き継ぎつつ固有の差分だけを定義した。この上位と下位クラスの間に成り立つ関係はどれか。
集約の関係
関連の関係
依存の関係
汎化・特化(is-a)の関係
正解
汎化・特化(is-a)の関係

複数の下位クラスの共通属性・操作を上位クラスへ抽出する方向を汎化、上位から固有の性質を加えて下位を作る方向を特化と呼び、両者は同じ関係を別方向から見たものである。『正社員は従業員である』というis-a関係が成り立ち、継承で実装される。設問の構図に正確に合致する。

?選択肢ごとの解説

ア ×集約は全体と部分(has-a)の関係であり、共通性質を引き継ぐ上位下位の関係(is-a)とは異なる。
イ ×関連は対等なクラス同士の結び付きを表すだけで、上位の性質を下位が引き継ぐ階層関係を表さない。
ウ ×依存は一方が他方を一時的に利用する弱い関係で、共通属性を継承する汎化特化の関係ではない。
エ ○複数の下位クラスの共通属性・操作を上位クラスへ抽出する方向を汎化、上位から固有の性質を加えて下位を作る方向を特化と呼び、両者は同じ関係を別方向から見たものである。『正社員は従業員である』というis-a関係が成り立ち、継承で実装される。設問の構図に正確に合致する。

くわしく

クラス間関係はis-a(汎化特化)とhas-a(集約・コンポジション)に大別される。汎化特化は『種類の階層』を表し継承で実装、共通部分を上位に集約することで重複を排除し再利用性を高める。一方has-aは『構成要素の所有』を表す。判定の鍵は『AはBの一種か(is-a)』『AはBを持つか(has-a)』という問いで、本問は『各社員は従業員の一種』なのでis-aの汎化特化である。

本番での押さえどころ

試験のコツ

『共通部分を上位にまとめる』『〜の一種』『継承』とあれば汎化・特化と判断する。

覚え方

汎化=『下からまとめて一般化(上へ)』、特化=『上から具体化(下へ)』と矢印の向きで覚える。

よくある誤り

汎化特化(is-a)と集約(has-a)を取り違えやすい。『一種である』なら汎化特化、『一部として持つ』なら集約と問いで切り分ける。

開発技術の他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-a2-0064

【基本情報技術者試験】クラス間関係の問題 — 解答・解説|ukamiru 過去問