快速上手UML類圖

平時(shí)閱讀一些遠(yuǎn)嗎分析類文章或是設(shè)計(jì)應(yīng)用架構(gòu)時(shí)沒(méi)少與UML類圖打交道。實(shí)際上,UML類圖中最常用到的元素五分鐘就能掌握,下面趕緊來(lái)一起認(rèn)識(shí)一下它吧:

一、類的屬性的表示方式

在UML類圖中,類使用包含類名、屬性(field) 和方法(method) 且?guī)в蟹指罹€的矩形來(lái)表示,比如下圖表示一個(gè)Employee類,它包含name,age和email這3個(gè)屬性,以及modifyInfo()方法。

那么屬性/方法名稱前加的加號(hào)和減號(hào)是什么意思呢?它們表示了這個(gè)屬性或方法的可見(jiàn)性,UML類圖中表示可見(jiàn)性的符號(hào)有三種:

·+ :表示public

·- :表示private

·#:表示protected(friendly也歸入這類)

因此,上圖中的Employee類具有3個(gè)私有屬性和一個(gè)公有方法。

實(shí)際上,屬性的完整表示方式是這樣的:

可見(jiàn)性 ?名稱 :類型 [ = 缺省值]

中括號(hào)中的內(nèi)容表示是可選的

二、類的方法的表示方式

上圖中我們已經(jīng)看到了方法的表示形式。實(shí)際上,方法的完整表示方式如下:

可見(jiàn)性 ?名稱(參數(shù)列表) [ : 返回類型]

同樣,中括號(hào)中的內(nèi)容是可選的。

比如在下圖的Demo類中,定義了3個(gè)方法:

·public方法method1接收一個(gè)類型為Object的參數(shù),返回值類型為void

·protected方法method2無(wú)參數(shù),返回值類型為String

·private方法method3接收類型分別為int、int[]的參數(shù),返回值類型為int

三、類與類之間關(guān)系的表示方式

1、關(guān)聯(lián)關(guān)系

關(guān)聯(lián)關(guān)系又可進(jìn)一步分為單向關(guān)聯(lián)、雙向關(guān)聯(lián)和自關(guān)聯(lián)。

(1)單向關(guān)聯(lián)

我們可以看到,在UML類圖中單向關(guān)聯(lián)用一個(gè)帶箭頭的直線表示。上圖表示每個(gè)顧客都有一個(gè)地址,這通過(guò)讓Customer類持有一個(gè)類型為Address的成員變量類實(shí)現(xiàn)。

(2)雙向關(guān)聯(lián)

從上圖中我們很容易看出,所謂的雙向關(guān)聯(lián)就是雙方各自持有對(duì)方類型的成員變量。在UML類圖中,雙向關(guān)聯(lián)用一個(gè)不帶箭頭的直線表示。上圖中在Customer類中維護(hù)一個(gè)Product[]數(shù)組,表示一個(gè)顧客購(gòu)買了那些產(chǎn)品;在Product類中維護(hù)一個(gè)Customer類型的成員變量表示這個(gè)產(chǎn)品被哪個(gè)顧客所購(gòu)買。

(3)自關(guān)聯(lián)

自關(guān)聯(lián)在UML類圖中用一個(gè)帶有箭頭且指向自身的直線表示。上圖的意思就是Node類包含類型為Node的成員變量,也就是“自己包含自己”。

2、聚合關(guān)系

上圖中的Car類與Engine類就是聚合關(guān)系(Car類中包含一個(gè)Engine類型的成員變量)。由上圖我們可以看到,UML中聚合關(guān)系用帶空心菱形和箭頭的直線表示。聚合關(guān)系強(qiáng)調(diào)是“整體”包含“部分”,但是“部分”可以脫離“整體”而單獨(dú)存在。比如上圖中汽車包含了發(fā)動(dòng)機(jī),而發(fā)動(dòng)機(jī)脫離了汽車也能單獨(dú)存在。

3、組合關(guān)系

組合關(guān)系與聚合關(guān)系見(jiàn)得最大不同在于:這里的“部分”脫離了“整體”便不復(fù)存在。比如下圖:

顯然,嘴是頭的一部分且不能脫離了頭而單獨(dú)存在。在UML類圖中,組合關(guān)系用一個(gè)帶實(shí)心菱形和箭頭的直線表示。

4、依賴關(guān)系

從上圖我們可以看到,Driver的drive方法只有傳入了一個(gè)Car對(duì)象才能發(fā)揮作用,因此我們說(shuō)Driver類依賴于Car類。在UML類圖中,依賴關(guān)系用一條帶有箭頭的虛線表示。

5、繼承關(guān)系

繼承關(guān)系對(duì)應(yīng)的是extend關(guān)鍵字,在UML類圖中用帶空心三角形的直線表示,如下圖所示中,Student類與Teacher類繼承了Person類。

6、接口實(shí)現(xiàn)關(guān)系

這種關(guān)系對(duì)應(yīng)implement關(guān)鍵字,在UML類圖中用帶空心三角形的虛線表示。如下圖中,Car類與Ship類都實(shí)現(xiàn)了Vehicle接口。

到了這里,UML類圖中最常見(jiàn)的表示方式我們就介紹完了,有了這些我們就能讀懂常見(jiàn)的UML類圖了,剩下的遇到時(shí)再查即可。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在UML 2.0的13種圖形中,類圖是使用頻率最高的UML圖之一。Martin Fowler在其著作《UML Di...
    雷雷_zll閱讀 13,519評(píng)論 0 14
  • 忘記了uml類圖連線之間的關(guān)系,記錄一下。 1. 關(guān)聯(lián)關(guān)系 關(guān)聯(lián)(Association)關(guān)系是類與類之間最常用的...
    cutieagain閱讀 2,012評(píng)論 0 2
  • UML類圖是一種結(jié)構(gòu)圖,用于描述一個(gè)系統(tǒng)的靜態(tài)結(jié)構(gòu)。類圖以反映類結(jié)構(gòu)和類之間關(guān)系為目的,用以描述軟件系統(tǒng)的結(jié)構(gòu),是...
    美虎轆轆閱讀 702評(píng)論 0 0
  • UML類圖是一種結(jié)構(gòu)圖,用于描述一個(gè)系統(tǒng)的靜態(tài)結(jié)構(gòu)。類圖以反映類結(jié)構(gòu)和類之間關(guān)系為目的,用以描述軟件系統(tǒng)的結(jié)構(gòu),是...
    司馬東陽(yáng)閱讀 2,337評(píng)論 0 1
  • 什么是內(nèi)存泄漏和內(nèi)存溢出??jī)?nèi)存泄漏有什么危害?LeakCanary檢測(cè)內(nèi)存泄漏? 內(nèi)存泄漏(Memory Leak...
    MarcoHorse閱讀 904評(píng)論 0 5

友情鏈接更多精彩內(nèi)容