1.首先類之間的關(guān)系從宏觀上可以分為:關(guān)聯(lián)、依賴、繼承,而其中關(guān)聯(lián)又有兩種特例:聚合和組合,不過在UML2.X中聚合和組合合成一種關(guān)系了。
2.從使用的頻率來看,關(guān)聯(lián)(包括聚合和組合)關(guān)系是使用最為廣泛的;其次是依賴和繼承
3.關(guān)聯(lián)和依賴的區(qū)別:
A:從類之間關(guān)系的強(qiáng)弱程度來分,關(guān)聯(lián)表示類之間的很強(qiáng)的關(guān)系;依賴表示類之間的較弱的關(guān)系;
B:從類之間關(guān)系的時(shí)間角度來分,關(guān)聯(lián)表示類之間的“持久”關(guān)系,這種關(guān)系一般表示一種重要的業(yè)務(wù)之間的關(guān)系,需要保存的,或者說需要“持久化”的,或者說需要保存到數(shù)據(jù)庫中的。比如學(xué)生管理系統(tǒng)中的Student類和Class(班級(jí))類,一個(gè)Student對(duì)象屬于哪個(gè)Class是一個(gè)重要的業(yè)務(wù)關(guān)系,如果這種關(guān)系不保存,系統(tǒng)就無法管理。另外,依賴表示類之間的是一種“臨時(shí)、短暫”關(guān)系,這種關(guān)系是不需要保存的,比如Student類和StuEditScreen(學(xué)生登錄界面)類之間就是一種依賴關(guān)系,StuEditScreen類依賴Student類,依賴Student對(duì)象的信息來顯示編輯學(xué)生信息。
C:設(shè)計(jì)類之間的關(guān)系是遵循的原則:首先判斷類之間是否是一種“關(guān)聯(lián)”關(guān)系,若不是再判斷是否是“依賴關(guān)系”,一般情況下若不是關(guān)聯(lián),就是依賴關(guān)系
D:依賴一般情況下是以下幾種情況之一:a、ClassA中某個(gè)方法的參數(shù)類型是ClassB;這種情況成為耦合;b、ClassA中某個(gè)方法的參數(shù)類型是ClassB的一個(gè)屬性;這種情況成為緊耦合;c、ClassA中某個(gè)方法的實(shí)現(xiàn)實(shí)例化ClassB;d、ClassA中某個(gè)方法的返回值的類型是ClassB;如果出現(xiàn)了上述四種情況之一,兩個(gè)類很有可能就是“依賴”關(guān)系。
E:依賴關(guān)系(Dependency):是類與類之間的連接,依賴總是單向的。依賴關(guān)系代表一個(gè)類依賴于另一個(gè)類的定義。下面的例子中class A 依賴與class B、C、D。






F:關(guān)聯(lián)是一種結(jié)構(gòu)關(guān)系,說明一個(gè)事物的對(duì)象與另一個(gè)事物的對(duì)象相聯(lián)系。給定一個(gè)連接兩各類的關(guān)聯(lián),可以從一個(gè)類的對(duì)象導(dǎo)航到另一個(gè)類的對(duì)象。
關(guān)聯(lián)可以有方向,即導(dǎo)航。一般不作說明的時(shí)候,導(dǎo)航是雙向的,不需要在線上標(biāo)出箭頭。大部分情況下導(dǎo)航是單向的,可以加一個(gè)箭頭表示。關(guān)聯(lián)在代碼中一般表示為屬性(成員變量),例如下面例子中 class A與B關(guān)聯(lián)
public class A{
private B b;
}
如果B也關(guān)聯(lián)到A,那么它們就是雙向的關(guān)聯(lián)。
public class B{
private A a;
}
G:聚合關(guān)系(Aggregation):是關(guān)聯(lián)關(guān)系的一種,是強(qiáng)的關(guān)聯(lián)關(guān)系。聚合是整體與個(gè)體之間的關(guān)系。如汽車類與引摯類,輪胎類之間的關(guān)系就是整體與個(gè)體的關(guān)系。
與關(guān)聯(lián)關(guān)系一樣,聚合關(guān)系也是通過實(shí)例變量來實(shí)現(xiàn)的。
***關(guān)聯(lián)關(guān)系所涉及的兩個(gè)類是處于同一層次上的,而在聚合關(guān)系中,兩個(gè)類處在不平等的層次上的,一個(gè)代表整體,一個(gè)代表部分。(關(guān)聯(lián)與聚合僅僅從語法上是區(qū)分不開的,需要察所涉及的類之間的邏輯關(guān)系。)
H:組成關(guān)系(Composition):是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系強(qiáng)的關(guān)系。它要求普通的聚合關(guān)系中代表的對(duì)象負(fù)責(zé)代表部分的對(duì)象的生命周期,合成關(guān)系是不能共享的。
代表整體的對(duì)象需要負(fù)責(zé)保持對(duì)象的存活,在一些情況下負(fù)責(zé)將代表部分的對(duì)象湮滅掉。代表整體的對(duì)象可以將代表部分的對(duì)象傳遞給另一個(gè)對(duì)象,由后者負(fù)責(zé)此對(duì)象的生命周期。換言之,
*******代表部分的對(duì)象在每一個(gè)時(shí)刻只能與一個(gè)對(duì)象發(fā)生合成關(guān)系,由后者排它的負(fù)責(zé)其生命周期。