C#における関連・コンポジション・集約の違いをわかりやすく解説
C#における関連(Association)とは
関連(アソシエーション)は、C#においてオブジェクト同士の関係性を定義する基本的な概念です。オブジェクト間には、「1対1」「1対多」「多対1」「多対多」といったさまざまな関係を持たせることができます。
たとえば、1人の従業員(Employee)は複数のプロジェクトに関連付けられる一方で、1つのプロジェクトにも複数の従業員が参加できます。これは典型的な「多対多」の関係です。
C#におけるコンポジション(Composition)とは
コンポジション(合成)は、親オブジェクトが削除されると、それに属する子オブジェクトも存在を失うという、非常に強い依存関係を表します。
コンポジションは集約(Aggregation)の一種であり、「part-of(部分と全体)」の関係を表現するものです。全体側が部分のライフサイクルを完全に管理している点が大きな特徴です。
たとえば、「車(Car)はエンジン(Engine)を持つ」という関係が挙げられます。車が廃棄されれば、そのエンジンも一緒に破棄されることになります。
C#における集約(Aggregation)とは
集約(アグリゲーション)は、C#におけるオブジェクト間の直接的なつながりを表す関係です。コンポジションと似ていますが、子オブジェクトのライフサイクルは親に依存しないため、より弱い結び付きとなります。
たとえば、「従業員(Employee)と部署(Department)」の関係が代表的な例です。
1人の従業員は1つの部署に所属しますが、1つの部署には複数の従業員が在籍できます。仮に部署が廃止されても、従業員という存在自体は残るため、コンポジションほど強い依存関係ではありません。
3つの関係の違いまとめ
関連(Association)はオブジェクト間の一般的なつながりを示し、集約(Aggregation)は「全体と部分」だが独立したライフサイクルを持つ関係、コンポジション(Composition)は部分が全体に完全に依存する最も強い関係を表します。設計時には、オブジェクト同士の依存の強さを見極めて適切な関係を選択することが重要です。
-
C言語の式の評価とは?優先順位と結合規則をわかりやすく解説
C言語における式の評価の基本C言語では、コンパイラが「優先順位(precedence)」と「結合規則(associativity)」という2つのルールに基づいて式を評価します。これらのルールを正しく理解することは、意図したとおりにプログラムを動作させるために非常に重要です。優先順位(Precedence)とは1つの式の中に異なる優先度を持つ演算子が含まれている場合、Cコンパイラは優先順位のルールに従って評価を行います。優先順位が高い演算子ほど先に処理されます。例えば、次のような式を考えてみましょう。この場合、「*」(乗算)は「-」(減算)や「=」(代入)よりも優先順位が高いため、「10 * 2
-
集約(アグリゲーション)と関連(アソシエーション)の違いをわかりやすく解説
本記事では、オブジェクト指向設計における「集約(Aggregation/アグリゲーション)」と「関連(Association/アソシエーション)」の違いについて詳しく解説します。どちらもクラス間の関係性を表す重要な概念ですが、その意味や使い方には明確な違いがあります。 関連(Association)とは 関連は、共通の目的を持つ人々の組織というイメージで捉えることができ、正式な構造を持つことも示唆します。オブジェクト指向の文脈では、2つのオブジェクト間の二項関係を表し、何らかの活動ややり取りを記述するものです。つまり、複数のオブジェクト間に存在する関係性全般を指します。 身近な例を挙げると、健