五分鐘讀懂UML類圖
相信各位同學在閱讀一些原始碼分析類文章或是設計應用架構時沒少與UML類圖打交道。實際上,UML類圖中最常用到的元素五分鐘就能掌握,經常看到UML類圖但還不太熟悉的小夥伴趕緊來一起認識一下它吧:)
類的屬性的表示方式
在UML類圖中,類使用包含類名、屬性(field)和方法(method)且帶有分隔線的矩形來表示,比如下圖表示一個Employee類,它包含name、age和email這3個屬性,以及modifyInfo()方法。
那麼屬性/方法名稱前的加號和減號是什麼意思呢?它們表示了這個屬性或方法的可見性,UML類圖中表示可見性的符號有三種:
+: 表示public
-: 表示private
#: 表示protected(friendly也歸入這類)
因此,上圖中的Employee類具有3個私有屬性和一個公有方法。
實際上,屬性的完整表示方式是這樣的:
可見性 名稱:型別 [ = 預設值 ]
中括號中的內容表示是可選的。
類的方法的表示方式
上圖中我們已經看到了方法的表現形式。實際上,方法的完整表示方式如下:
可見性 名稱(引數列表) [ : 返回型別]
同樣,中括號中的內容是可選的。
比如在下圖的Demo類中,定義了3個方法:
Demo.png
public方法method1接受一個型別為Object的引數,返回值型別為void。
protected方法method2無引數,返回值型別為String。
private方法method3接收型別分別為int、int[]的引數,返回值型別為int。
類與類之間關係的表示方式
關聯關係
關聯關係又可進一步分為單向關聯、雙向關聯和自關聯。
單向關聯
single.png
我們可以看到,在UML類圖中單向關聯用一個帶箭頭的直線表示。上圖表示每個顧客都有一個地址,這透過讓Customer類持有一個型別為Address的成員變數來實現。
雙向關聯
double.png
從上圖中我們很容易看出,所謂的雙向關聯就是雙方各自持有對方型別的成員變數。在UML類圖中,雙向關聯用一個不帶箭頭的直線來表示。上圖中在Customer類中維護一個Product[]陣列表示一個顧客購買了哪些產品;在Product類中維護一個Customer型別的成員變數表示這個產品被那個顧客所購買。
自關聯
self.png
自關聯在UML類圖中用一個帶有箭頭且指向自身的直線表示。上圖的意思就是Node類包含型別為Node的成員變數,也就是“自己包含自己”。
聚合關係
poly.png
上圖中的Car類與Engine類就是聚合關係(Car類中包含一個Engine型別的成員變數)。由上圖我們可以看到,UML中聚合關係用帶空心菱形和箭頭的直線表示。聚合關係強調是“整體”包含“部分”,但是“部分”可以脫離“整體”而單獨存在。比如上圖中汽車包含了發動機,而發動機脫離了汽車也能夠單獨存在。
組合關係
組合關係與聚合關係間的最大不同在於:這裡的“部分”脫離了“整體”便不復存在。比如下圖:
comp.png
顯然,嘴是頭的一部分且不能脫離了頭而單獨存在。在UML類圖中,組合關係用一個帶實心菱形和箭頭的直線表示。
依賴關係
rely.png
從上圖中我們可以看到,Driver的drive方法只有傳入了一個Car物件才能發揮作用,因此我們說Driver類依賴於Car類。在UML類圖中,依賴關係用一條帶有箭頭的虛線表示。
繼承關係
繼承關係對應的是extend關鍵字,在UML類圖中用帶空心三角形的直線表示,如下圖所示中,Student類與Teacher類繼承了Person類。
extend.png
介面實現關係
這種關係對應implements關鍵字,比如下圖中,Car類與Ship類都實現了Vehicle介面。
impl.png
到了這裡,UML類圖中最常見的表示方式我們就介紹完了,有了這些我們就能讀懂常見的UML類圖了,剩下的遇到時再查即可。
參考資料
作者:absfree
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1762/viewspace-2809495/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 透過一份經典的UML類圖來學會如何讀懂UML類圖
- UML類圖
- 五分鐘看懂UML類圖與類的關係詳解
- UML類圖詳解
- 2分鐘讀懂javaJava
- 看懂UML類圖和時序圖時序圖
- UML類圖--類之間的關係
- UML類圖繪製例項
- UML設計:類圖說明及一步一步製作UML類圖
- 團隊溝通利器之UML——類圖
- python遞迴(一分鐘讀懂)Python遞迴
- UML類圖介紹&類的六大關係
- uml類圖中類版型區分--邊界類,控制類,實體類
- UML 類圖看這篇文章就夠了
- 輕鬆理解UML用例圖時序圖類圖的教程時序圖
- 五分鐘讀懂什麼是容器雲
- UML筆記——14種UML圖筆記
- 三分鐘讀懂客戶端證書客戶端
- 3分鐘讀懂火熱的人工智慧!人工智慧
- UML 之 各種檢視簡介 & UML類圖幾種關係的總結
- 【UML】UML幾種圖的繪製
- UML圖,時序圖時序圖
- 【Flutter】一文讀懂混入類MixinFlutter
- Javascript 設計模式之物件導向與 UML 類圖JavaScript設計模式物件
- 詳解建造者模式(含圖例、UML類圖、原始碼示例等)模式原始碼
- 專案UML圖
- UML用例圖
- UML順序圖
- UML狀態圖
- UML活動圖
- UML 活動圖
- UML-類圖-Composition(組合)和Aggregation(聚合)的區別
- 設計模式不得不知道的 UML 類圖設計模式
- 5分鐘讀懂設計模式(2)---裝飾者模式設計模式
- 一圖讀懂FISCO BCOS MVP計劃MVP
- 一圖讀懂DCI版權服務
- 一圖讀懂京東赴港上市
- 專案UML圖(2)