五分鐘讀懂UML類圖

平時閱讀一些遠嗎分析類文章或是設計應用架構時沒少與UML類圖打交道。實際上,UML類圖中最經常使用到的元素五分鐘就能掌握,下面趕忙來一塊兒認識一下它吧:數組

1、類的屬性的表示方式架構

在UML類圖中,類使用包含類名、屬性(field) 和方法(method) 且帶有分割線的矩形來表示,好比下圖表示一個Employee類,它包含name,age和email這3個屬性,以及modifyInfo()方法。設計

那麼屬性/方法名稱前加的加號和減號是什麼意思呢?它們表示了這個屬性或方法的可見性,UML類圖中表示可見性的符號有三種:3d

· + :表示public對象

· - :表示privateblog

· #:表示protected(friendly也納入這類)繼承

所以,上圖中的Employee類具備3個私有屬性和一個公有方法。接口

 

實際上,屬性的完整表示方式是這樣的:ip

可見性  名稱 :類型 [ = 缺省值]產品

中括號中的內容表示是可選的

 

2、類的方法的表示方式

上圖中咱們已經看到了方法的表示形式。實際上,方法的完整表示方式以下:

可見性  名稱(參數列表) [ : 返回類型]

一樣,中括號中的內容是可選的。

 

好比在下圖的Demo類中,定義了3個方法:

 

· public方法method1接收一個類型爲Object的參數,返回值類型爲void

· protected方法method2無參數,返回值類型爲String

· private方法method3接收類型分別爲int、int[]的參數,返回值類型爲int

 

3、類與類之間關係的表示方式

一、關聯關係

關聯關係又可進一步分爲單向關聯、雙向關聯和自關聯。

(1)單向關聯

咱們能夠看到,在UML類圖中單向關聯用一個帶箭頭的直線表示。上圖表示每一個顧客都有一個地址,這經過讓Customer類持有一個類型爲Address的成員變量類實現。

 

(2)雙向關聯

從上圖中咱們很容易看出,所謂的雙向關聯就是雙方各自持有對方類型的成員變量。在UML類圖中,雙向關聯用一個不帶箭頭的直線表示。上圖中在Customer類中維護一個Product[]數組,表示一個顧客購買了那些產品;在Product類中維護一個Customer類型的成員變量表示這個產品被哪一個顧客所購買。

 

(3)自關聯

自關聯在UML類圖中用一個帶有箭頭且指向自身的直線表示。上圖的意思就是Node類包含類型爲Node的成員變量,也就是「本身包含本身」。

 

二、聚合關係

上圖中的Car類與Engine類就是聚合關係(Car類中包含一個Engine類型的成員變量)。由上圖咱們能夠看到,UML中聚合關係用帶空心菱形和箭頭的直線表示。聚合關係強調是「總體」包含「部分」,可是「部分」能夠脫離「總體」而單獨存在。好比上圖中汽車包含了發動機,而發動機脫離了汽車也能單獨存在。

 

三、組合關係

組合關係與聚合關係見得最大不一樣在於:這裏的「部分」脫離了「總體」便不復存在。好比下圖:

顯然,嘴是頭的一部分且不能脫離了頭而單獨存在。在UML類圖中,組合關係用一個帶實心菱形和箭頭的直線表示。

 

四、依賴關係

從上圖咱們能夠看到,Driver的drive方法只有傳入了一個Car對象才能發揮做用,所以咱們說Driver類依賴於Car類。在UML類圖中,依賴關係用一條帶有箭頭的虛線表示。

 

五、繼承關係

繼承關係對應的是extend關鍵字,在UML類圖中用帶空心三角形的直線表示,以下圖所示中,Student類與Teacher類繼承了Person類。

 

六、接口實現關係

這種關係對應implement關鍵字,在UML類圖中用帶空心三角形的虛線表示。以下圖中,Car類與Ship類都實現了Vehicle接口。

 

到了這裏,UML類圖中最多見的表示方式咱們就介紹完了,有了這些咱們就能讀懂常見的UML類圖了,剩下的遇到時再查便可。

 

3、參考資料

http://www.uml.org.cn/oobject/201211231.asp

 

 

本貼原文:http://mp.weixin.qq.com/s?__biz=MzIzMjE1Njg4Mw==&mid=2650117683&idx=1&sn=85e9946c81a5c283a691acfca174d52a#rd

相關文章
相關標籤/搜索