ホーム > システムアーキテクト試験 > 2021年
システムアーキテクト試験 2021年 午前2 問06
オブジェクト指向における汎化の説明として、適切なものはどれか。
ア:あるクラスを基に、これに幾つかの性質を付加することによって、新しいクラスを定義する。
イ:幾つかのクラスに共通する性質をもつクラスを定義する。(正解)
ウ:オブジェクトのデータ構造から所有の関係を見つける。
エ:同一名称のメソッドをもつオブジェクトを抽象化してクラスを定義する。
解説
オブジェクト指向における汎化の説明【午前2 解説】
要点まとめ
- 結論:汎化とは複数のクラスに共通する性質を抽出し、上位クラスを定義することです。
- 根拠:オブジェクト指向の基本概念である「継承」の基盤となり、コードの再利用性や設計の明確化に寄与します。
- 差がつくポイント:汎化は「共通点の抽出」であり、特定クラスから派生する「特殊化」とは逆の関係である点を理解しましょう。
正解の理由
選択肢イは「幾つかのクラスに共通する性質をもつクラスを定義する」とあり、これは汎化の定義に合致します。複数の具体的なクラスの共通点を抽出し、より一般的な上位クラス(スーパークラス)を作ることで、オブジェクト指向設計の効率化と整合性を高めます。これにより、共通の属性やメソッドを一元管理でき、保守性が向上します。
よくある誤解
汎化は「あるクラスに性質を付加して新しいクラスを作る」特殊化と混同されやすいです。汎化は共通点の抽出であり、特殊化は差異の追加です。
解法ステップ
- 問題文の「汎化」の意味を確認する。
- 汎化は複数のクラスの共通点を抽出し、上位クラスを作ることと理解する。
- 選択肢を「共通点の抽出か」「特殊化か」「別の概念か」で分類する。
- 「共通点をもつクラスを定義する」選択肢を正解と判断する。
選択肢別の誤答解説
- ア: これは「特殊化」の説明であり、あるクラスに性質を付加して新しいクラスを作ることです。汎化とは逆の関係です。
- イ: 正解。複数クラスの共通点を抽出し、上位クラスを定義する汎化の説明です。
- ウ: 「所有の関係」は集約やコンポジションの概念であり、汎化とは異なります。
- エ: 同一名称のメソッドをもつオブジェクトの抽象化は「ポリモーフィズム」や「インターフェース」の説明に近く、汎化とは異なります。
補足コラム
汎化はオブジェクト指向設計の「継承」の基礎であり、クラス間の階層構造を形成します。これにより、コードの重複を減らし、拡張性や保守性を高めることが可能です。逆に、特殊化は汎化で定義された上位クラスから派生し、より具体的な性質を付加します。
FAQ
Q: 汎化と特殊化の違いは何ですか?
A: 汎化は複数のクラスの共通点を抽出して上位クラスを作ること、特殊化は上位クラスから派生して新しい性質を付加することです。
A: 汎化は複数のクラスの共通点を抽出して上位クラスを作ること、特殊化は上位クラスから派生して新しい性質を付加することです。
Q: 汎化はどのように設計に役立ちますか?
A: 共通の属性やメソッドを上位クラスにまとめることで、コードの重複を減らし、保守性や拡張性を向上させます。
A: 共通の属性やメソッドを上位クラスにまとめることで、コードの重複を減らし、保守性や拡張性を向上させます。
関連キーワード: オブジェクト指向, 汎化, 継承, 特殊化, クラス設計, ポリモーフィズム, 集約, コンポジション