聚合,組合,依賴

2021-06-17 17:08:37 字數 1188 閱讀 5031

1. 聚合:

是關聯關係的一種特例,體現的是整體與部分擁有的關係,即 has-a 的關係,此時整體與部分之間可以分離。

[cpp]view plain

copy

//學校

class

school  

;  //學生

class

student  

;  

可以看到 student 類中包含了乙個 school 類的物件

指標,而且在建立乙個student 類物件時一定要對指標進行初始化,就好像當你上學時一定會有乙個學校!這個時候,我們可以說 student 的每乙個物件都有乙個school 的屬性來標識它是屬於哪個學校的!

但是兩者之間並不存在「同生共死」的關係,也就是說當這個學生不存在的時候,學校還是有的!

2. 組合:

也是關聯關係的一種特例,體現在一種 contain - a 的關係,這種關係比聚合更強,整體與部分是不可分的。

[cpp]view plain

copy

//眼class

eye  

;  //鼻

class

nose  

;  //頭

class

head  

;  

乙個head ,一定會有 eye,nose 等。一旦 head 不存在了,eye nose 也沒存在的意義了。即 head 

擁有這些物件類。

3. 依賴:

當乙個物件負責構造另乙個物件的例項,或者依賴另乙個物件的服務時,這兩個物件之間主要體現為依賴關係。

依賴關係表現在區域性變數,方法的引數,以及對靜態方法的呼叫。

[cpp]view plain

copy

//蘋果刀

class

knife  

//蘋果

class

;  //學生

class

student  

;  student::dosomething()    

同樣,student 每次做事 dosomething() 也不會只去削東西吧。

**:

依賴 關聯 聚合 組合

依賴 關聯 聚合 組合 1 依賴 語義 a use b。依賴是區域性變數 形參 靜態方法 返回引數 生命週期中物件依賴關係 當f方法被呼叫時,a與b產生依賴關係,當呼叫結束,依賴關係結束 class a a 虛線箭頭指向 b 2 關聯 class soldier 語義 a has b 士兵可以有槍,...

依賴 關聯 聚合 組合 的區別

1.例項化 依賴 a將b作為區域性變數進行使用.程式1 void a foo 2.關聯 a與b存在一定的關係.這裡只考慮單向導航.關聯在 中有多種表現形式.第一種,作為引數 程式2 void a foo b b b b or b b 第二種,作為成員變數 程式3 class a void foo p...

UML類關係 依賴 關聯 聚合 組合

1,依賴關係 dependency 單向,表示乙個類依賴於另乙個類的定義,其中乙個類的變化將影響另外乙個類,是一種 use a 關係 如果a依賴於b,則b表現為a的區域性變數,方法引數,靜態方法呼叫等 public class person public class person public cl...