組合:即不十分相關的東西,整合在一起。譬如:電腦是乙個類,由滑鼠、鍵盤、顯示器、主機這4個類組合而成,可插拔。實現中:一般為傳引數。
聚合:即類的本身屬性,密不可分割。譬如:人是乙個類,由手臂、大腿、軀幹三個類組成,不可分割,生命週期相同。實現中:一般為成員屬性。
c++舉例來看:
//組合(傳引數)
#include using namespace std;
class frind;
protected:
int money=10;
};class add*/
//protected:
void func(frind* mpfrind);
};void add(frind* pfrind)
int main()
執行結果如圖:
//聚合(屬性成員)
#include using namespace std;
class frind;
protected:
int money=10;
};class add
//protected:
void func();
private:
frind* mpfrind; //內部屬性
};void add(frind* pfrind)
int main()
執行結果如圖:
兩種方式執行結果一樣,具體用哪種方式更優,視情況而定(不在本文討論範圍)。
多補充乙個知識點,多型的作用(仔細分析哦,很經典的):
1、統一介面,高度復用
2、向後相容,靈活擴充套件
組合與聚合
定義 has a關係,乙個類中有包含另乙個類,是包含乙個物件,不是包含乙個指標。如果你組合了這個類,那麼你將擁有這個類的全部功能 include include template class queue 利用deque的功能來實現queue新定義的功能 size t size const refer...
C 組合(聚合)與C結構體中包含函式
今天突然想到c 的聚合,以前一直沒有注意,今天想到就寫下來,做個筆記 c 的類與我們的c語言中的結構體特別像,但是有有些不太一樣,這裡不多累贅了不能,大家學過的都知道。c 組合 聚合 我們知道的都是c 的類的物件,也就是例項化的過程,但是,有時候一些類我門需要他以聚合的形式來使用,比如設計模式裡面用...
UML中的聯絡 聚合與組合的區別
uml中的聯絡 association 聚合 aggregation 和組合 composition 三個概念很相似,也很難理解。今天看到這篇文章解釋得很清楚,所以在這裡轉一下,希望能對需要的人有所幫助。聯絡 聯絡 association 表明某個物件可以向另乙個物件通過某種方式傳送訊息。傳送訊息的...