星期三, 3月 19, 2008

[Concept] Difference between Composition and Aggregation


最近在trace很大量的source code 所以開始認真想要畫一些圖記錄

以免會忘記....... 所以得學一些UML的基本概念...

一直來搞混的Aggregation跟Composition 今天終於查了google搞清楚了....

最清楚的說明 可以看這裡



結論就是....Aggregation跟Composition 都是一種Association, 一種owner ship的概念

只是Composition是更強烈的Ownership 主要是生命週期是一起的..... 而Aggregation就不是

for example

public class classA --> Composition
{
classB B = new ClassB()

~classA()
{
delete B;
}
}


public class classA -->Aggregation
{
classB *m_pB;

void SetB(classB *pB)
{
m_pB = pB; // lifecycle is not the same with parent!!
}
}