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