我是在畫概念數(shù)據(jù)模型和邏輯數(shù)據(jù)模型時(shí)遇到了箭頭表征含義的問題。現(xiàn)將內(nèi)容分享:
UML是統(tǒng)一建模語言捎谨,通過圖/文/表等方式民效,從不同角度對(duì)一個(gè)概念/系統(tǒng)/體系/實(shí)體進(jìn)行描述。例如一個(gè)體系涛救,有不同的利益相關(guān)者畏邢,他們從各自的角色出發(fā)去觀摩體系,通過UML州叠,我們事先定義相關(guān)概念棵红,統(tǒng)一規(guī)則,再根據(jù)不同角色關(guān)心的方面咧栗,構(gòu)造體系結(jié)構(gòu)產(chǎn)品逆甜,實(shí)現(xiàn)對(duì)體系的完整描述。本次分享的內(nèi)容是UML中的類圖關(guān)系致板,包括泛化交煞、繼承、實(shí)現(xiàn)斟或、依賴素征、關(guān)聯(lián)、聚合、組合御毅。
## 繼承
A(子類)繼承B(父類)的功能根欧,并可以增加A的新功能的能力。
繼承是類與類端蛆、接口與接口之間最常見的關(guān)系凤粗,表征符號(hào)如下(箭頭方向是基于動(dòng)作指向):
A與B的關(guān)系:
## 實(shí)現(xiàn)
指一個(gè)類實(shí)現(xiàn)(調(diào)取)接口的功能(服務(wù))今豆,
實(shí)現(xiàn)是類與接口之間最常見的關(guān)系嫌拣,表征符號(hào)如下:
## 依賴
類A依賴類B才能實(shí)現(xiàn),類B的變化會(huì)影響到類A呆躲。
舉一個(gè)例子:B是算法A的功能集异逐,同一個(gè)算法在不同的場景下實(shí)現(xiàn)不同的功能,算法對(duì)功能的選擇要根據(jù)適用場景設(shè)置插掂,算法A依賴功能B實(shí)現(xiàn)灰瞻,B的變化會(huì)影響到A。表征符號(hào)如下:
## 關(guān)聯(lián)
A關(guān)聯(lián)B的字段燥筷,關(guān)聯(lián)的字段可以是1個(gè)(0..1)箩祥,也可以是多個(gè)(0..*),表征符號(hào)如下:
## 聚合
聚合是關(guān)聯(lián)關(guān)系的一種特例肆氓,體現(xiàn)的是整體與部分袍祖、擁有的關(guān)系,即has-a的關(guān)系谢揪,此時(shí)整體與部分之間是可分離的蕉陋,他們可以具有各自的生命周期,部分可以屬于多個(gè)整體對(duì)象拨扶,也可以為多個(gè)整體對(duì)象共享凳鬓;比如計(jì)算機(jī)與CPU、公司與員工的關(guān)系等患民,表征符號(hào)如下:
## 組合
組合也是關(guān)聯(lián)關(guān)系的一種特例缩举,體現(xiàn)的是一種contains-a的關(guān)系,這種關(guān)系比聚合更強(qiáng)匹颤,也稱為強(qiáng)聚合仅孩;他同樣體現(xiàn)整體與部分間的關(guān)系,但此時(shí)整體與部分是不可分的印蓖,整體的生命周期結(jié)束也就意味著部分的生命周期結(jié)束辽慕,表征符號(hào)如下:
## 總的來說,后幾種關(guān)系所表現(xiàn)的強(qiáng)弱程度依次為:組合>聚合>關(guān)聯(lián)>依賴