轉(zhuǎn):UML各種關(guān)系符號(hào)
UML類(lèi)圖感知
UML中描述 對(duì)象 / 類(lèi) 之間相互關(guān)系的方式包括:依賴(lài)(繼承妨蛹,實(shí)現(xiàn)),關(guān)聯(lián)(聚合晴竞,組合)蛙卤。
1、 依賴(lài):A的變化會(huì)影響B(tài)噩死,反之不成立颤难,那么B依賴(lài)A;繼承和實(shí)現(xiàn)在語(yǔ)義上講也是依賴(lài)關(guān)系已维。uml中用帶箭頭的虛線表示行嗤,箭頭指向被依賴(lài)元素B。
特點(diǎn):當(dāng)類(lèi)與類(lèi)之間有使用關(guān)系時(shí)就屬于依賴(lài)關(guān)系垛耳,不同于關(guān)聯(lián)關(guān)系栅屏,依賴(lài)不具有“擁有關(guān)系”,而是一種“相識(shí)關(guān)系”堂鲜,只在某個(gè)特定地方(比如某個(gè)方法體內(nèi))才有關(guān)系栈雳。
編程中體現(xiàn)為局部變量、方法的參數(shù)缔莲、靜態(tài)方法引用
public class Person {
void buy (Car car) {
}
}
2哥纫、 繼承:uml中用帶空心箭頭的實(shí)線表示,箭頭指向父類(lèi)(被繼承)痴奏。
3磺箕、 實(shí)現(xiàn):uml中用帶空心箭頭的虛線表示,箭頭指向接口(被實(shí)現(xiàn))抛虫。
4、 關(guān)聯(lián):元素間的結(jié)構(gòu)化關(guān)系简僧,是一種弱關(guān)系建椰,被關(guān)聯(lián)的元素間通常可以被獨(dú)立的考慮岛马。uml中用實(shí)線表示棉姐,箭頭指向被依賴(lài)元素屠列。
特征:表示類(lèi)與類(lèi)或類(lèi)與接口之間的依賴(lài)關(guān)系,表現(xiàn)為“擁有關(guān)系”伞矩;具體到代碼可以用實(shí)例變量來(lái)表示笛洛。
編程中體現(xiàn)為成員變量
public class Teacher {
protected: List<Student> mList;
}
public class Student {
}
5、 聚合:關(guān)聯(lián)關(guān)系的一種特例乃坤,表示部分和整體(has a)的關(guān)系苛让。uml中用帶空心菱形頭的實(shí)線表示,菱形頭指向整體湿诊。
特征:屬于是關(guān)聯(lián)的特殊情況狱杰,關(guān)聯(lián)關(guān)系所涉及的兩個(gè)類(lèi)處在同一個(gè)層次上,而聚合關(guān)系中厅须,兩個(gè)類(lèi)處于不同的層次上仿畸,一個(gè)代表整體,一個(gè)代表部分朗和,體現(xiàn)部分-整體關(guān)系错沽,是一種弱擁有關(guān)系;整體和部分可以有不一樣的生命周期眶拉;是一種弱關(guān)聯(lián)千埃;
編程中體現(xiàn)為成員變量
public class Car {
protected:Engine engine;
}
public class Engine {
}
6、組合:組合是聚合關(guān)系的變種镀层,表示元素間更強(qiáng)的組合關(guān)系镰禾;生命周期。uml中用帶實(shí)心菱形頭的實(shí)線表示唱逢,菱形頭指向整體吴侦。
特征:屬于是關(guān)聯(lián)的特殊情況,也體現(xiàn)了體現(xiàn)部分-整體關(guān)系坞古,是一種強(qiáng)“擁有關(guān)系”备韧;整體與部分有相同的生命周期,是一種強(qiáng)關(guān)聯(lián)痪枫;
class Person {
protected: Eyes mEyes;
}
class Eyes {
}
這幾種關(guān)系都是語(yǔ)義級(jí)別的织堂,所以從代碼層面并不能完全區(qū)分各種關(guān)系;但總的來(lái)說(shuō)奶陈,后幾種關(guān)系所表現(xiàn)的強(qiáng)弱程度依次為:組合>聚合>關(guān)聯(lián)>依賴(lài)