継承と包含関係


 継承、包含は、どちらもオブジェクト間の関係を表すものですが、継承はクラスの関係を、包含はインスタンスの関係を表します。
 継承は親となるクラスの特性を受け継ぐもので、親クラスにいくつかのクラスに共通な特性を定義しておくことで、共通サブルーチン(部品)的な使用ができます。
 ここで、「受け継ぐ」という表現は基底クラスの一部のみをコピーするように思えますが、実際は継承クラスの中に基底クラスの全ての本質やインターフェースを含みます。
 親となるクラスをスーパークラスあるいは基底クラスと呼び、子クラスを継承クラスと呼びます。
 継承クラスが、基底クラスとなってネストして継承することもできます。
 また、複数の基底クラスから継承することもできます。

 継承を説明するときには多態を説明しなければ、継承の便利さを半分しか説明できません。

 包含はIDを持ったオブジェクト間、つまり、インスタンス間の関係を表し、実世界のオブジェクトの制御、被制御関係を表現する。
 オブジェクトが他のオブジェクトと通信するとき相手を識別するためにIDを用いますが、そのIDの付与規則を規定するのが包含関係 (Naming Tree)です。
 図より、ACDインスタンスとBDインスタンスは同じクラスですが、そのIDに上位インスタンスのIDを含むことで、識別することができます。
 包含関係で上位のインスタンスは下位のインスタンスを制御します。

ホームページへ