構成と集計
クラスとオブジェクトは相互に関連付けることができます。継承は「IS A」関係を表します。ライオンは動物です。この関係は継承を使用して簡単に表現できます。ここで、 が
Animal親クラス、
Lionが子クラスになります。しかし、世界のすべての関係がこのように適切に説明されるわけではありません。たとえば、キーボードは確かにコンピュータと何らかの関係がありますが、
それはコンピュータではありません。手は人と何らかの関係がありますが、人ではありません。これらのケースは、「IS A」ではなく「HAS A」という、異なるタイプの関係を表します。手は人ではありませんが、人には手があります。キーボードはコンピュータではありませんが、コンピュータにはキーボードがあります。"があります"
。これらの概念の違いは、関係の「厳密さ」にあります。簡単な例を見てみましょう
Car。どの車にもエンジンが付いています。さらに、どの車両も乗客を乗せることができます。
Engine engineとフィールドの基本的な違いは何ですか
Passenger[] passengers?
A乗客が車内に座っている場合、それは乗客
Bも
C車内にいることを意味するわけではありません。1台の車両に複数の乗客が乗車できます。さらに、乗客全員が車から降りても、車はスムーズに機能し続けます。
Carクラスと配列の関係は
Passenger[] passengersそれほど厳密ではありません。それは
集約と呼ばれます。このトピックに関する優れた記事は次のとおりです:
クラス (オブジェクト) 間の関係。これは、集計のもう 1 つの良い例です。
Student学生を表すクラスと、
StudentGroup学生のグループを表すクラスがあるとします。学生は、物理学クラブ、スター・ウォーズ学生ファンクラブ、またはコメディクラブのメンバーになることができます。
コンポジションは、より厳密なタイプの関係です。合成を使用する場合、オブジェクトには別のオブジェクトがありますが、同じタイプの別のオブジェクトに属することはできません。最も単純な例は車のエンジンです。車にエンジンが付いている場合、そのエンジンは別の車に属することはできません。ご覧のとおり、この関係は
Carとの関係よりもはるかに厳密です
Passengers。
![クラス間の関係。 継承、合成、集約 - 4]()
GO TO FULL VERSION