
UML中的6大關(guān)系相關(guān)英文:
| 依賴(lài)關(guān)系 | dependency |
| 關(guān)聯(lián)關(guān)系 | association |
| 聚合關(guān)系 | aggregation |
| 組合關(guān)系 | composition |
| 實(shí)現 | realization |
| 泛化 | generalization |
UML中的6大關(guān)系簡(jiǎn)單解釋?zhuān)?b style="mso-bidi-font-weight: normal;">關(guān)聯(lián):連接模型元素及鏈接實(shí)例,用一條實(shí)線(xiàn)來(lái)表示;依賴(lài):表示一個(gè)元素以某種方式依賴(lài)于另一個(gè)元素,用一條虛線(xiàn)加箭頭來(lái)表示;聚合:表示整體與部分的關(guān)系,用一條實(shí)線(xiàn)加空心菱形來(lái)表示;組成:表示整體與部分的有一關(guān)系,用一條實(shí)線(xiàn)加實(shí)心菱形來(lái)表示;泛化(繼承):表示一般與特殊的關(guān)系,用一條實(shí)線(xiàn)加空心箭頭來(lái)表示;實(shí)現:表示類(lèi)與接口的關(guān)系,用一條虛線(xiàn)加空心箭頭來(lái)表示;
注意:泛化關(guān)系和實(shí)現關(guān)系又統稱(chēng)為一般關(guān)系;
總之:一般關(guān)系表現為繼承或實(shí)現(is a),關(guān)聯(lián)關(guān)系、聚合關(guān)系、合成/組合關(guān)系表現為成員變量(has a),依賴(lài)關(guān)系表現為函數中的參數(use a);
UML中的6大關(guān)系詳細說(shuō)明:
1、關(guān)聯(lián)關(guān)系:
含義:類(lèi)與類(lèi)之間的連結,關(guān)聯(lián)關(guān)系使一個(gè)類(lèi)知道另外一個(gè)類(lèi)的屬性和方法;通常含有“知道”,“了解”的含義
體現:在C#中,關(guān)聯(lián)關(guān)系是通過(guò)成員變量來(lái)實(shí)現的;
方向:雙向或單向;
圖示:實(shí)線(xiàn) + 箭頭;箭頭指向被關(guān)聯(lián)的類(lèi);
舉例:“漁民”需要知道“天氣”情況才能夠出海
//公司關(guān)聯(lián)雇員
public class Company{
private Employee employee;
public Employee GetEmployee(){
return employee;
}
public void SetEmployee(Employee employee){
this.employee = employee;
}
//公司運作
public void Run(){
employee.StartWorking();
}
}
//A關(guān)聯(lián)B
class A{
B b = new B();
}
class B{
}
2、依賴(lài)關(guān)系:
含義:是類(lèi)與類(lèi)之間的連接,表示一個(gè)類(lèi)依賴(lài)于另外一個(gè)類(lèi)的定義;依賴(lài)關(guān)系僅僅描述了類(lèi)與類(lèi)之間的一種使用與被使用的關(guān)系;
體現:在C#中體現為局部變量、方法/函數的參數或者是對靜態(tài)方法的調用;
方向:?jiǎn)蜗颍?span lang="EN-US">
圖示:虛線(xiàn) + 箭頭;
舉例:人依賴(lài)于水和空氣;汽車(chē)依賴(lài)汽油
//人劃船,人依賴(lài)于船
public class Person{
//劃船
public void Oarage(Boat boat){
boat.Oarage();
}
}
//A依賴(lài)于B
class A{
public void Function(B b){
}
}
class B{
}
3、聚合關(guān)系:
含義:是關(guān)聯(lián)關(guān)系的一種,是一種強關(guān)聯(lián)關(guān)系;聚合關(guān)系是整體和個(gè)體/部分之間的關(guān)系;關(guān)聯(lián)關(guān)系的兩個(gè)類(lèi)處于同一個(gè)層次上,而聚合關(guān)系的兩個(gè)類(lèi)處于不同的層次上,一個(gè)是整體,一個(gè)是個(gè)體/部分;在聚合關(guān)系中,代表個(gè)體/部分的對象有可能會(huì )被多個(gè)代表整體的對象所共享;
體現:C++中,聚合關(guān)系通過(guò)將被聚合者的(數組)指針作為內部成員來(lái)實(shí)現的;
方向:?jiǎn)蜗颍?span lang="EN-US">
圖示:空心菱形 + 實(shí)線(xiàn) + 箭頭;箭頭指向被聚合的類(lèi),也就是說(shuō),箭頭指向個(gè)體/部分;
舉例:鴨群與鴨子具有聚合關(guān)系;汽車(chē)由引擎、輪胎以及其它零件組成,因為汽車(chē)壞掉了,沒(méi)有壞掉的引擎,輪胎和其他零件還可以繼續使用。
4、組合關(guān)系:
含義:它也是關(guān)聯(lián)關(guān)系的一種,但它是比聚合關(guān)系更強的關(guān)系.組合關(guān)系要求聚合關(guān)系中代表整體的對象要負責代表個(gè)體/ 部分的對象的整個(gè)生命周期;組合關(guān)系不能共享;在組合關(guān)系中,如果代表整體的對象被銷(xiāo)毀或破壞,那么代表個(gè)體/部分的對象也一定會(huì )被銷(xiāo)毀或破壞,而聚在合關(guān)系中,代表個(gè)體/部分的對象則有可能被多個(gè)代表整體的對象所共享,而不一定會(huì )隨著(zhù)某個(gè)代表整體的對象被銷(xiāo)毀或破壞而被銷(xiāo)毀或破壞;
體現:在C#中,組合關(guān)系是通過(guò)成員變量來(lái)實(shí)現的;
方向:?jiǎn)蜗颍?span lang="EN-US">
圖示:實(shí)心菱形 + 實(shí)線(xiàn) + 箭頭;箭頭指向代表個(gè)體/部分的對象,也就是被組合的類(lèi)的對象;
舉例:一個(gè)人由頭、四肢、等各種器官組成,因為人與這些器官具有相同的生命周期,人死了,這些器官也掛了;
5、泛化關(guān)系:
含義:它表示一個(gè)更泛化的元素和一個(gè)更具體的元素之間的關(guān)系;也就是通常所說(shuō)的類(lèi)的繼承關(guān)系;
體現:在C#中,泛化關(guān)系通過(guò)類(lèi)的繼承來(lái)實(shí)現的;
方向:?jiǎn)蜗?;子?lèi)繼承父類(lèi);
圖示:空心箭頭 + 實(shí)線(xiàn);箭頭指向父類(lèi);
舉例:動(dòng)物下面可以分為哺乳動(dòng)物,脊椎動(dòng)物,爬行動(dòng)物等
6、實(shí)現關(guān)系:
含義:它指定了兩個(gè)實(shí)體之間的一份合同;即:一個(gè)實(shí)體定義一份合同,另外一個(gè)實(shí)體則保證履行該合同;
體現:在C#中,實(shí)現關(guān)系通過(guò)類(lèi)實(shí)現接口來(lái)實(shí)現的,即:一個(gè)類(lèi)實(shí)現某個(gè)接口;
方向:?jiǎn)蜗?;子?lèi)實(shí)現接口;
圖示:空心箭頭 + 虛線(xiàn);箭頭指接口向接口;
舉例:唐老鴨(對象)會(huì )說(shuō)話(huà)(接口),因為一般鴨子不會(huì )說(shuō)話(huà),所以不會(huì )將說(shuō)話(huà)這個(gè)方法給一般的鴨子帶上;超人(對象)會(huì )飛(接口)
聯(lián)系客服