10

私は理解aggregationしていると思っていますが、理解と関連付けcompositionが困難です。関連付けを使用すると、両方のクラスがお互いを認識し、関連付けを使用すると、クラスの 1 つだけが関係を認識していることを読みました。しかし、この説明は私には抽象的すぎるように思えます。これが特に私のコードと私が書いているプログラムにとって何を意味するのか知りたいです。説明とともに、これら2つをコードに変換する方法の簡単な例を提供できれば非常に便利です(私はc ++を好みますが、疑似コードを含む何でもかまいません)bi-directionaluni-directionalbi-directionaluni-directional

4

2 に答える 2

27

双方向の関連付けは、両端からナビゲートできます。たとえば、次のクラスが与えられた場合 (簡単にするために、関連付けが両端で 0..1 であると仮定します)

class Parent {
  Child* children;
}

class Child {
  Parent* parent;
}

aParentからその子へ、またその逆も可能です: 親はその子について知っており、子はその親について知っていthis.parent!=nullますthis.parent.child==this

Parent <---------> Child

Parentただし、 inへのポインタがなかった場合Child:

class Child { }

これは一方向の関連付けになります。親から子に移動できますが、子から親に戻ることはできません。

Parent ----------> Child
于 2013-03-18T22:10:22.400 に答える