オブジェクトはプログラムの基本的な構成要素ですが、たいていの場合、ある機能を達成するためには、単一のオブジェクトでは多すぎることが多く、複数のオブジェクト間のコラボレーションが必要になります。オブジェクトの個々のメソッドよりも高い粒度を実現するためには、オブジェクトとオブジェクトを組み合わせて、より上位の構成要素を形成する必要があります。その結果、オブジェクトとオブジェクトの間には、互いにコラボレーションするさまざまな関係が存在します。
次の質問について考えてみてください:
- 花と花びらの関係は? 
- 党と党員の関係は? 
- 鳥と動物の関係は? 
- ミツバチと花の関係は? 
要約すると、クラス間の基本的な関係には3つのタイプがあります。
最初のタイプは一般的な特定関係で、「~である」という関係を示します。例えば、鳥は動物です。そして動物は生き物です。動物は鳥の一般化であり、鳥は動物の特殊化です。動物と生物の関係については、生物は一般的なタイプで、動物は特殊なタイプです。生物は動物の一般化であり、動物は生物の一般化です。
2つ目のタイプは、「構成要素」の関係を示す全体-部分の関係です。たとえば、花びらは花の構成要素、エンジンは飛行機の構成要素、家族は家族の構成要素、党員は党の構成要素です。関係の強さによって、部品全体の関係は2つのサブタイプに分けることができます:1つは**集約**関係で、もう1つは組み合わせ**関係です。集約関係はより弱く、全体を表すオブジェクトと部分を表すオブジェクトはそれぞれ独立したライフサイクルを持ちます。たとえば、パーティとそのメンバーの関係は集約関係で、パーティとそのメンバーはそれぞれ独立したライフサイクルを持ちます。党員はいつでも入党、離党、他党への加入が可能であり、党員は党から一定の独立性を持っています。そして、花と花びらの関係は組み合わせ論的なものです。花びらがなければ花は不完全であり、花がなければ花びらも存在しません。花びらのライフサイクルは花のライフサイクルに従属し、独立性はありません。
関係の3番目のタイプは関連で、2つのクラス間の意味上の依存関係を表します。例えば、ハチと花の関係です。花はハチによって受粉され、ハチは花の蜜を食べます。連想関係は、意味的に最も弱いものです。クラス間の連想関係を決定するのは、通常、分析や設計の初期段階での作業です。分析と設計が進むにつれて、連想関係は通常、継承、集約、組み合わせなどのより具体的な関係に明示化されます。
依存関係には4 番目のタイプがあります。依存関係は、あるクラスが別のクラスに何らかの形で依存していることを示します。クラス A がクラス B に依存している場合、クラス B の設計が変更されると、クラス A に影響が及ぶ可能性があります。
クラス間の関係には、方向性、複数性、その他の特性があります。
- クラス A とクラス B について、クラス A がタイプ B の単一値属性または多値属性を持つが、クラス B が対応する単一値属性または多値属性を持たない場合、クラス A はクラス B に対して単一方向の関連を持っていると言えます。クラス A とクラス B に対して、クラス A がタイプ B の単一値属性または多値属性を持ち、クラス B が対応するタイプ A の単一値属性または多値属性を持たない場合、クラス A はクラス B に対して単一方向の関連性を持つといいます。クラス B もタイプ A の単一値属性または多値属性を持つ場合、クラス A とクラス B の間には双方向の関連があると言われます。 
- 多重度: クラス間の関連には、**単一値**または** 多値** があります。クラス A がクラス B 型の属性を持つ場合、クラス A からクラス B への関連は単一値の関連です。クラス A がコンテナ・タイプの属性を持ち、コンテナがクラス B タイプの要素を持つ場合、クラス A からクラス B への関連は多値の関連です。 
詳しくはこちら↓↓↓をご覧ください。
このセクションは以上です。次のセクションは、**『O:モノの世界のパート3』***に続きます。
やりがいを感じたら、右下をクリックして読むことをお勧めします!





