オブジェクト指向の試験問題への適用
OOPの試験問題では関係の意味を文章から判定する。is-aなら継承、has-aなら集約/合成、単に一時利用するなら依存関係を検討する。
この単元で学ぶこと
- is-a関係の意味と役割を説明できる
- has-a関係の意味と役割を説明できる
- 依存の意味と役割を説明できる
- 継承・集約/合成・依存・オーバーライドを事例から判断できる
本文解説
継承を再利用のためだけに乱用せず、概念上の型関係があるかを見る。クラス図の多重度や可視性も合わせて読む。
is-a関係 サブクラスがスーパークラスの一種である関係。 継承に適する。
has-a関係 あるオブジェクトが別オブジェクトを構成要素として持つ関係。 集約/合成で表す。
依存 一方が一時的に他方を利用する関係。 引数型や局所利用などで表れる。
オーバーライド サブクラスが継承した操作を独自実装する。 多相性で利用される。
公開インタフェース 外部へ提供する操作の契約。 内部実装を隠す。
文章をis-a / has-a / uses-aへ置き換えて関係を選ぶ。
「自動車は車両の一種」なら継承、「自動車はエンジンを持つ」ならhas-aで集約/合成側。
図解
重要ポイント
- is-a関係: サブクラスがスーパークラスの一種である関係。
- has-a関係: あるオブジェクトが別オブジェクトを構成要素として持つ関係。
- 依存: 一方が一時的に他方を利用する関係。
- オーバーライド: サブクラスが継承した操作を独自実装する。
- 依存・集約・継承は「関係の強さ」だけでなく意味が異なる。
間違えやすい点
- 再利用したいだけで継承を選ばない。
- has-aをis-aと読み替えない。
- 一時利用を常に集約としない。
用語解説
- is-a関係
- サブクラスがスーパークラスの一種である関係。
- has-a関係
- あるオブジェクトが別オブジェクトを構成要素として持つ関係。
- 依存
- 一方が一時的に他方を利用する関係。
- オーバーライド
- サブクラスが継承した操作を独自実装する。
- 公開インタフェース
- 外部へ提供する操作の契約。
関連教材
参考資料
教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。
確認問題の出題・採点や学習履歴の保存にはログインが必要です。