オブジェクト指向の試験問題への適用

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 / uses-a
継承・集約/合成・依存を関係の意味で使い分ける。

重要ポイント

  • is-a関係: サブクラスがスーパークラスの一種である関係。
  • has-a関係: あるオブジェクトが別オブジェクトを構成要素として持つ関係。
  • 依存: 一方が一時的に他方を利用する関係。
  • オーバーライド: サブクラスが継承した操作を独自実装する。
  • 依存・集約・継承は「関係の強さ」だけでなく意味が異なる。

間違えやすい点

  • 再利用したいだけで継承を選ばない。
  • has-aをis-aと読み替えない。
  • 一時利用を常に集約としない。

用語解説

is-a関係
サブクラスがスーパークラスの一種である関係。
has-a関係
あるオブジェクトが別オブジェクトを構成要素として持つ関係。
依存
一方が一時的に他方を利用する関係。
オーバーライド
サブクラスが継承した操作を独自実装する。
公開インタフェース
外部へ提供する操作の契約。

関連教材

参考資料

教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。

確認問題の出題・採点や学習履歴の保存にはログインが必要です。