令和3年度 春期 システムアーキテクト試験 午前Ⅱ 問6

オブジェクト指向における汎化の説明として,適切なものはどれか。

解答・解説

正解: イ. 幾つかのクラスに共通する性質をもつクラスを定義する。

オブジェクト指向における汎化(Generalization)とは、複数のクラス(サブクラス)に共通する性質(属性やメソッド)を抽出し、それらをまとめた上位のクラス(スーパークラス)を定義することを指します。これは「is-a関係」とも呼ばれます。

共通の性質を上位クラスにまとめることで、プログラムの再利用性や保守性を高めることができます。

各選択肢の解説

  • ア:あるクラスを基に,これに幾つかの性質を付加することによって,新しいクラスを定義する。
    • 汎化とは逆の概念である特化(Specialization)の説明です。
  • イ:幾つかのクラスに共通する性質をもつクラスを定義する。
    • 正解です。これが汎化の適切な説明です。
  • ウ:オブジェクトのデータ構造から所有の関係を見つける。
    • 全体と部分の関係を表す集約(Aggregation)やコンポジション(「has-a関係」)に関する説明です。
  • エ:同一名称のメソッドをもつオブジェクトを抽象化してクラスを定義する。
    • 同一のメッセージ(メソッド呼び出し)に対して、オブジェクトごとに異なる動作をさせるポリモーフィズム(多相性)の前提となる仕組み(インターフェースの定義など)に関連する説明です。

Spineチーム