最近在學(xué)習(xí)領(lǐng)域驅(qū)動設(shè)計(jì),重新溫習(xí)了一下UML圖。
定義:
UML是一種面向?qū)ο笙到y(tǒng)的產(chǎn)品進(jìn)行說明、可視化和編制文檔的一種標(biāo)準(zhǔn)語言,是非專利的第三代建模和規(guī)約語言,UML使用面向?qū)ο蟮慕9ぞ?,但?dú)立于任何程序設(shè)計(jì)語言
UML繪圖規(guī)范:

事物(主要介紹類class,接口interface,用例usecase,包package)
事物之間的關(guān)系:
-
關(guān)聯(lián)關(guān)系
箭頭指向被擁有者(單向關(guān)聯(lián))
箭頭指向被擁有者
不用箭頭的實(shí)線(雙向關(guān)聯(lián),例如兩個(gè)類相互訪問)
不用箭頭的實(shí)線 -
聚合關(guān)系
是整體與部分的關(guān)系(如學(xué)生和學(xué)生會)
用空心菱形的實(shí)線表示,菱形指向整體,箭頭指向個(gè)體
聚合關(guān)系
-
組合關(guān)系
也是整體與部分的關(guān)系(整體和個(gè)體需要有相同的生命周期,比如人的身體和手的關(guān)系),組合比聚合更加嚴(yán)格
用實(shí)心菱形的實(shí)線表示,菱形指向整體,箭頭指向個(gè)體
組合關(guān)系
-泛化關(guān)系
表示一個(gè)更泛化的元素和一個(gè)具體元素之間的關(guān)系,與繼承是同一個(gè)概念
用空心箭頭的實(shí)線表示

-
實(shí)現(xiàn)關(guān)系
類和接口之間的關(guān)系,類實(shí)現(xiàn)接口
用空心箭頭的虛線表示,箭頭指向接口
實(shí)現(xiàn)關(guān)系
-依賴關(guān)系
如果一個(gè)類的改動會影響到另一個(gè)類,則這兩個(gè)類存在依賴關(guān)系,一般依賴關(guān)系是單向的
用虛線的單向普通箭頭表示,箭頭指向被依賴者



類關(guān)系記憶技巧
箭頭方向:從子類指向父類。
記憶技巧:
- 1、定義子類是需要通過 extends 關(guān)鍵字指定父類;
- 2、子類一定是知道父類定義的,但父類并不知道子類的定義;
- 3、只有知道對方信息時(shí)才能指向?qū)Ψ?
- 4、所以箭頭的方向是從子類指向父類。
繼承實(shí)現(xiàn):用線條連接兩個(gè)類。
記憶技巧:
- 1、空心三角箭頭表示繼承或?qū)崿F(xiàn)。
- 2、實(shí)線表示繼承,是 is-a 的關(guān)系,表示擴(kuò)展,不虛,很結(jié)實(shí);
- 3、虛線表示實(shí)現(xiàn),虛線代表“虛”無實(shí)體。
關(guān)聯(lián)依賴:用線條連接兩個(gè)類。
記憶技巧:
- 1、虛線表示依賴關(guān)系:臨時(shí)用一下,若即若離,虛無縹緲,若有若無; 表示一種使用關(guān)系,一個(gè)類需要借助另一類來實(shí)現(xiàn)功能;
一般是一個(gè)類將另一個(gè)類作為參數(shù)使用,或作為返回值。 - 2、實(shí)線表示關(guān)聯(lián)關(guān)系:關(guān)系穩(wěn)定,實(shí)打?qū)嵉年P(guān)系,鐵哥們;
表示一個(gè)類對象和另一個(gè)類對象有關(guān)聯(lián);
通常是一個(gè)類中有另一個(gè)類對象作為屬性。
組合聚合:用菱形表示。
記憶技巧:
- 1、菱形就是像是一個(gè)盛東西的器皿(比如盤子);
- 2、聚合:空心菱形,代表空器皿里可以放很多相同的東西,
聚集在一起(箭頭方向所指的類); 整體和局部的關(guān)系,兩者有獨(dú)立的生命周期,是 has-a 的關(guān)系; 弱關(guān)系,消極的詞:弱-空。 -
3、組合:實(shí)心菱形,代表器皿里已經(jīng)有實(shí)體結(jié)構(gòu)的存在,生死與共; 整體與局部的關(guān)系,和聚合關(guān)系對比,關(guān)系更加強(qiáng)烈; 兩者具有相同的生命周期,contains-a 的關(guān)系; 強(qiáng)關(guān)系,積極的詞:強(qiáng)-滿。
注意:UML 類關(guān)系圖中,沒有實(shí)心箭頭。
例子:
image.png





