日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++组合 聚合 关联

發布時間:2023/12/2 c/c++ 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++组合 聚合 关联 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

組合和聚合區別(不能脫離整體 能脫離整體)

組合:(表示兩個對象之間是整體和部分的關系,部分的生命周期不能超越整體。如人和腦袋)
比如A類中包含B類的一個引用b,當A類的一個對象消亡時,b這個引用所指向的對象也同時消亡(沒有任何一個引用指向它,成了垃圾對象)

聚合:(表示兩個對象之間是整體和部分的關系,部分的生命周期可以超越整體。如電腦和鼠標)

反之b所指向的對象還會有另外的引用指向它,這種情況叫聚合。


組合方式一般代碼會這樣寫:
A類的構造方法里創建B類的對象,也就是說,當A類的一個對象產生時,B類的對象隨之產生,當A類的這個對象消亡時,它所包含的B類的對象也隨之消亡。

聚合方式一般代碼會這樣寫:
A類的對象在創建時會立即創建B類的對象,而是等待一個外界的對象傳給它

--------------------------------------------------------------------

對c++,形如:
class?B1;
class?B2;
class?B3;
class?A
{
B1?b1;
B2&?b2;
B3*?b3;
};
B1,B2,B3都是部分類。
B1與A的關系是組成關系。
B2、B3與A的關系是聚合還是組成要根據這一條:部分類是否能脫離整體類而存在。
在這里可以理解他們的生命周期是否同步。


如果b2,b3是通過外部傳入的,形如:
class?A
{
public:
???A(B3*?b3)
???{
??????m_b3?=?b3);
???}
private:
???B3*?m_b3;
};
main()
{
???B2?bbb;
???A?a(&bbb);
}
bbb并不會因為a的消亡而消亡。那么就是聚合關系。
反之,如果
m_b3是在A的構造函數new,在A的析構函數delete,兩者生命周期一樣,那么就是組成關系。
引用的情況類似。

個人感覺uml為了滿足所謂通用性,使得對模型的描述很粗糙,并沒有吹噓的那么好。
僅供參考。

?

--------------------------------------

關聯:簡單的可以認為,如果一個類作為了另外一個類的屬性,那一定是關聯關系。但你要知道,聚合是一種特殊的關聯,而組合又是一種特殊的聚合。一般的關聯我們認為是平級的、無整體部分關系的,如朋友關系。

依賴:對象之間的臨時關系,臨時性體現在不超越方法的周期。簡單的說,在方法使用到的,如參數類,就一定是依賴關系。

------ 完.不對之處請指正!------

總結

以上是生活随笔為你收集整理的c++组合 聚合 关联的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。