如何繪制「UML類圖」?附內(nèi)容詳解和優(yōu)質(zhì)實(shí)例分析!
下面這篇文章是筆者整理分析的關(guān)于如何繪制「UML類圖」的相關(guān)內(nèi)容,大家一起來看看吧!
UML圖有很多種,但是并非必須掌握所有的UML圖,才能完整系統(tǒng)分析和設(shè)計(jì)工作。一般說來,在UML圖中,只要掌握類圖、用例圖、時(shí)序圖的使用,就能完成大部分的工作。也就是說,掌握UML的20%,就能做80%的事情。
對(duì)于程序員來說,最頻繁使用的莫過于類圖。因此,這里我們只講解UML類圖。至于其它UML圖,請(qǐng)?jiān)谝院蟮墓ぷ髦袇㈤喐郩ML學(xué)習(xí)資料繼續(xù)學(xué)習(xí)。
類圖是面向?qū)ο笙到y(tǒng)建模中最常用和最重要的圖,是定義其它圖的基礎(chǔ)。類圖主要是用來顯示系統(tǒng)中的類、接口以及它們之間的靜態(tài)結(jié)構(gòu)和關(guān)系的一種靜態(tài)模型。類圖中最基本的元素是類、接口。軟件設(shè)計(jì)師設(shè)計(jì)出類圖后,程序員就可以用代碼實(shí)現(xiàn)類圖中包含的內(nèi)容。
一、UML類圖簡(jiǎn)介
類圖以反映類的結(jié)構(gòu)(屬性、操作)以及類之間的關(guān)系為主要目的,描述了軟件系統(tǒng)的結(jié)構(gòu),是一種靜態(tài)建模方法。類圖用來描述系統(tǒng)中有意義的概念,包括具體的概念、抽象的概念、實(shí)現(xiàn)方面的概念等,是對(duì)現(xiàn)實(shí)世界中事物的抽象。
類圖的主要作用是對(duì)系統(tǒng)的詞匯進(jìn)行建模、對(duì)簡(jiǎn)單的協(xié)作進(jìn)行建模和對(duì)邏輯數(shù)據(jù)庫模式進(jìn)行建模。
二、類圖基本屬性
類圖概括起來主要由兩部分組成:類和類之間的關(guān)系,其中對(duì)類的定義如下圖所示,主要由三部分組成,它們分別是類名、類的屬性、類的方法,對(duì)應(yīng)圖中的三個(gè)分區(qū)內(nèi)容。
類名:圖中最上面的矩形框中為類名。如果字體為斜體,表示為抽象類
- 類的屬性:類名下方的區(qū)域
- 類的方法:圖中的下面部分
*符號(hào)解釋
說明:屬性和方法前面的“+”“-”和“#”表示訪問級(jí)別,以下對(duì)這些符號(hào)進(jìn)行解釋說明。
- +:public,公用的,對(duì)所有類可見
- -:private,私有的,只對(duì)該類本身可用
- #:protected,受保護(hù)的,對(duì)該類的子孫可見
- ~:package,包的,只對(duì)同一包聲明的其他類可見
- =:表示默認(rèn)值
- 下劃線:static
- 斜體:抽象 (注意也可以用兩個(gè)尖括號(hào)包裹來表示抽象,比如 —— <<我是抽象類or接口>>)
冒號(hào)前是方法名/變量名(根據(jù)有無括號(hào)區(qū)分),冒號(hào)后是返回參數(shù)/變量類型(根據(jù)有無括號(hào)區(qū)分),如果沒有冒號(hào)的話表示方法返回空(也有人通過:void表示返空)
三、類圖中具體類、抽象、接口和包的表示法
UML類圖中具體類、抽象類、接口和包有不同的表示方法。
1. 在UML類圖中表示具體類
具體類在類圖中用矩形框表示,矩形框分為三層:
- 第一層是類名字。
- 第二層是類的成員變量。
- 第三層是類的方法。
成員變量以及方法前的訪問修飾符用符號(hào)來表示:
- “+”表示 public;
- “-”表示 private;
- “#”表示 protected;
- 不帶符號(hào)表示 default。
2. 在UML類圖中表示抽象類
抽象類在UML類圖中同樣用矩形框表示,但是抽象類的類名以及抽象方法的名字都用斜體字表示。
3. 在UML類圖中表示接口
接口在類圖中也是用矩形框表示,但是與類的表示法不同的是,接口在類圖中的第一層頂端用構(gòu)造型 <<interface>>表示,下面是接口的名字,第二層是方法。此外,接口還有另一種表示法,俗稱棒棒糖表示法,就是類上面的一根棒棒糖(圓圈+實(shí)線)。圓圈旁為接口名稱,接口方法在實(shí)現(xiàn)類中出現(xiàn)。
4. 在UML類圖中表示包
類和接口一般都出現(xiàn)在包中,UML類圖中包的表示形式。
四、類之間的關(guān)系
類之間的關(guān)系主要包括泛化(繼承)、依賴、關(guān)聯(lián)、聚合、組合和實(shí)現(xiàn)6種關(guān)系,下面對(duì)它們進(jìn)行一一闡釋。
1. 泛化關(guān)系
泛化關(guān)系是一種繼承關(guān)系,子類繼承父類的所有行為和屬性,子類可以新增新的功能或者重寫父類功能。
表示方法:空心三角+實(shí)線,箭頭指向父類
2. 依賴關(guān)系
依賴關(guān)系表示一個(gè)類使用(依賴)另一個(gè)類的服務(wù)或信息。當(dāng)一個(gè)類的改變會(huì)影響到另一個(gè)類時(shí),兩個(gè)類之間存在依賴關(guān)系。一般來說,依賴總是單向的,不應(yīng)該存在雙向依賴。
表示方法:尖括號(hào)+虛線
3. 關(guān)聯(lián)關(guān)系
關(guān)聯(lián)關(guān)系是一種擁有的關(guān)系,它使一個(gè)類知道另一個(gè)類的屬性和方法。它體現(xiàn)不同類的一種強(qiáng)依賴關(guān)系,比如我和我的朋友,這種關(guān)系比依賴更強(qiáng),不存在依賴關(guān)系中的偶然性,關(guān)系也不是臨時(shí)的,一般是長(zhǎng)期性的。
關(guān)聯(lián)關(guān)系分為單向關(guān)聯(lián)或雙向關(guān)聯(lián),也可以有多重性(一對(duì)多),雙向的關(guān)聯(lián)可以有兩個(gè)箭頭或者沒有箭頭,單向的關(guān)聯(lián)有一個(gè)箭頭。
表示方法:尖括號(hào)+實(shí)線,箭頭指向被擁有者
4. 聚合關(guān)系
聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種,表示一種“弱”的“擁有”關(guān)系,是整體與部分的關(guān)系,且部分可以離開整體而單獨(dú)存在,如車和輪胎是整體和部分的關(guān)系,輪胎離開車仍然可以單獨(dú)存在。
表示方法:空心菱形+實(shí)線,菱形指向整體
5. 組合關(guān)系
組合關(guān)系也是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系還要強(qiáng)的關(guān)系,是整體與個(gè)體的關(guān)系,但個(gè)體不能離開整體而單獨(dú)存在。如公司和部門是整體和部分的關(guān)系,沒有公司就不存在部門。它要求普通的聚合關(guān)系中代表整體的對(duì)象負(fù)責(zé)代表部分的對(duì)象的生命周期。
表示方法:實(shí)心菱形+實(shí)線
6. 實(shí)現(xiàn)關(guān)系
實(shí)現(xiàn)關(guān)系是一種類與接口的關(guān)系,表示類是接口所有特征和行為的實(shí)現(xiàn)。
表示方法:空心三角+虛線
五、類圖案例分析
為了幫助大家更好的理解類之間的6種關(guān)系,下面使用例子輔助大家學(xué)習(xí)和消化吸收。
汽車類圖
汽車類圖說明:
- 車與小汽車和自行車之間是「實(shí)現(xiàn)」】關(guān)系,使用帶空心箭頭的虛線表示。
- 小汽車與SUV之間的關(guān)系為泛化關(guān)系,使用帶空心箭頭的實(shí)線表示。
- 小汽車與發(fā)動(dòng)機(jī)和輪胎之間是「組合」】關(guān)系,使用實(shí)心菱形箭頭的實(shí)線表示。
- 學(xué)生上學(xué)需要用到自行車,與自行車是一種「依賴」】關(guān)系,使用帶箭頭的虛線表示。
- 學(xué)生與班級(jí)之間是「聚合」】關(guān)系,使用帶空心菱形箭頭的實(shí)線表示。
- 學(xué)生與身份證之間為「關(guān)聯(lián)」】關(guān)系,使用尖箭頭的實(shí)線表示。
如果你能快速的看懂并理解以上案例,說明你基本上已經(jīng)把類圖弄懂了,再去多結(jié)合一些代碼和對(duì)應(yīng)的類圖鞏固一下,以后再看到類圖就不會(huì)懵了。
六、如何繪制類圖?
ProcessOn支持多種圖形的繪制,當(dāng)然也包括UML圖啦,用ProcessOn繪制類圖的方法很簡(jiǎn)單,只要掌握了類圖繪制的知識(shí)點(diǎn),研究明白了類圖案例,相信每個(gè)人都可以快速學(xué)會(huì)畫類圖。
- Step1:注冊(cè)登錄ProcessOn,新建UML圖形。
- Step2:在左側(cè)工具欄中選擇類的標(biāo)志,拖拽到右側(cè)編輯區(qū),寫上類名、屬性和方法。
- Step3:根據(jù)類之間的關(guān)系,標(biāo)注箭頭和線。
注:ProcessOn每個(gè)圖標(biāo)之間的連線默認(rèn)都是實(shí)線箭頭,大家根據(jù)需要可以在上方工具欄中調(diào)整連線樣式、連線類型、連線顏色、箭頭方向和箭頭樣式等。如果你想讓自己的圖更美觀一些,可以把文本、圖標(biāo)、線條等填充不同顏色、相同的圖標(biāo)盡可能大小相同。
本文由 @觀察月亮的小白羊 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
- 目前還沒評(píng)論,等你發(fā)揮!