基本情報技術者試験「クラス間関係」の問題
クラス設計で、『正社員』『契約社員』『派遣社員』に共通する氏名・社員番号などの属性や操作を上位の『従業員』クラスにまとめ、各クラスはそれを引き継ぎつつ固有の差分だけを定義した。この上位と下位クラスの間に成り立つ関係はどれか。
ア集約の関係
イ関連の関係
ウ依存の関係
エ汎化・特化(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)を取り違えやすい。『一種である』なら汎化特化、『一部として持つ』なら集約と問いで切り分ける。
開発技術の他の問題
アジャイル開発の手法であるスクラムにおいて、スプリントごとに動作するソフトウェアを開発チームが実際に作り上げ、その成果物をプ…ソフトウェアのテストにおいて、プログラムの内部構造には着目せず、入力に対する出力が仕様どおりであるかを検証する手法を採用した…あるシステムのファンクションポイント(FP)を見積もったところ、未調整FPは200であった。技術的複雑度を表す調整係数が0.…ソフトウェアの企画から開発・運用・保守・廃棄までの各活動について、取得者と供給者が同じ言葉で役割や作業範囲を取り決められるよ…ある開発プロジェクトでは、要件定義・設計・実装・テストの各工程を上流から下流へ順に進め、前工程の成果物を承認してから次工程へ…開発対象を複数の部分に分け、各部分について計画・リスク分析・開発・評価の活動を繰り返し、評価のたびにリスクを見極めながら少し…
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-a2-0064