UML类图基础说明
UML類圖主要由類和關(guān)系組成.
類: 什么具有相同特征的對(duì)象的抽象, 具體我也記不住, 反正有官方定義
關(guān)系: 指各個(gè)類之間的關(guān)系
類圖
類就使用一個(gè)方框來(lái)表示, 把方框分成幾層, 來(lái)表示不同的信息,如下圖所示:
?
?當(dāng)然, 類圖也不一定每一次都長(zhǎng)這樣, 比如你只分析各個(gè)類之間的關(guān)系時(shí), 甚至可以只給出類名; 如果是一個(gè)接口的話, 可以不給出屬性, 只留下類名和方法.
下面來(lái)說(shuō)一下這幾個(gè)部分分別怎么寫
1.類名
類名沒(méi)什么好說(shuō)的, 就是起個(gè)名, 寫上, 完活
2.屬性
屬性的格式為:
訪問(wèn)權(quán)限 屬性名 : 類型=默認(rèn)值
-
訪問(wèn)權(quán)限: 訪問(wèn)權(quán)限再各個(gè)面向?qū)ο笾杏帽榱? 有
-
公有: (+), 大家都可以訪問(wèn)
-
私有: (-), 只有自己可以訪問(wèn)
-
保護(hù): (#), 可以被自己和子類訪問(wèn)
-
-
屬性名: 就是起個(gè)名
-
類型: 屬性的類型, 可以是基礎(chǔ)數(shù)據(jù)類型, 也可以是一個(gè)類
-
默認(rèn)值: 屬性初始值, 可以省略
如:
+name:String // 公有的name屬性, 字符串類型?-age:int=0 // 私有的age屬性, int類型, 初始值為0
3.方法
方法的定義和屬性差不多, 不過(guò)加上了參數(shù), 格式為:
訪問(wèn)權(quán)限 方法名(參數(shù)列表): 返回值
其中參數(shù)列表的定義為 "類型 名字", 多個(gè)之間用逗號(hào)隔開, 其它和屬性一樣, 不再贅述, 舉例:
+getName(String name):void
關(guān)系
終于到重頭戲了, 類之間的關(guān)系表示, 通常來(lái)說(shuō), 兩個(gè)類之間主要有以下幾種關(guān)系:
-
繼承: 這在面向?qū)ο罄镉玫奶嗔? 就是子類繼承了父類的屬性和方法
-
實(shí)現(xiàn): 簡(jiǎn)單說(shuō)就是類實(shí)現(xiàn)接口, 明白了吧
-
關(guān)聯(lián): 簡(jiǎn)單來(lái)說(shuō), 就是在類A中使用了類B, 而且這種使用不是臨時(shí)的, 而是長(zhǎng)期的, 所以關(guān)聯(lián)是一種強(qiáng)依賴關(guān)系. 比如: 類A中的一個(gè)屬性是類B, 或者類A在方法中用到了類B的全局變量
-
依賴: 簡(jiǎn)單來(lái)說(shuō), 就是類A中的一個(gè)方法參數(shù)是類B, 所以這種關(guān)系可以說(shuō)是臨時(shí)的, 也可以是在方法中臨時(shí)調(diào)用了類B的方法
-
聚合: 聚合其實(shí)也是一種關(guān)聯(lián)關(guān)系, 不過(guò)在關(guān)聯(lián)關(guān)系的基礎(chǔ)上再加條件, 聚合強(qiáng)調(diào)的是整體于部分的關(guān)系, 而且部分是可以脫離整體而存在的. 如類A中的屬性list是類B的集合, 類B單拿出來(lái)還是一個(gè)完整的
-
組合: 組合與聚合有些相似, 都是強(qiáng)調(diào)整體與部分的關(guān)系, 不同的是, 組合中部分是不能脫離整體而存在的, 所以也叫強(qiáng)聚合,比如羊和羊頭
基本上繼承和實(shí)現(xiàn)都沒(méi)什么異議, 主要就是再后面四個(gè), 很多時(shí)候分不清, 這四種的強(qiáng)弱關(guān)系為: 組合>聚合>關(guān)聯(lián)>依賴
下面來(lái)看一下再UML中如何表示這幾種關(guān)系:
1.繼承
?如圖, 張三和王五都繼承自人類
2. 實(shí)現(xiàn)
?
如圖, 張三和王五都實(shí)現(xiàn)了接口人類
3. 依賴
依賴是一種很弱的關(guān)系, 通常是類A在運(yùn)行期間用到類B, 通常在程序中是用過(guò)構(gòu)造函數(shù), 方法參數(shù)將類B傳給類A的, 表示如下:
?
如圖, 程序員在工作時(shí)需要電腦
4. 關(guān)聯(lián)
關(guān)聯(lián)區(qū)別于依賴, 是關(guān)聯(lián)關(guān)系是不變的, 比如張三和張三家, 是一成不變的內(nèi)容, 表示如下:
?
如圖, 張三關(guān)聯(lián)了他的家, 這種是單向關(guān)聯(lián), 也有時(shí)是雙向關(guān)聯(lián), 則兩頭都沒(méi)有箭頭
5. 聚合
聚合是一種特殊的關(guān)聯(lián), 反映的是整體與局部的關(guān)系, 區(qū)別于關(guān)聯(lián), 聚合沒(méi)有雙向聚合(因?yàn)槭钦w與局部嘛), 與組合不同, 聚合關(guān)系中的部分可以獨(dú)立存在, 表示如下:
?
如圖, 螞蟻離開了螞蟻窩, 還是螞蟻
6.組合
組合也是一種特殊的關(guān)聯(lián), 反映的是整體與局部的關(guān)系, 區(qū)別與聚合, 組合關(guān)系中的部分不能脫離全體獨(dú)立存在,比如張三和張三的頭, 表示如下:
?
?
?
以上就是UML中最最基礎(chǔ)的各部分, 以后再看UML圖就不至于一臉懵逼了..
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
- 上一篇: 批量引号_RcoketMQ 批量发送和消
- 下一篇: 简单计算机面试题库及答案_试讲可以看教案