五分鐘讀懂UML詳解

2021-08-09 12:43:55 字數 2583 閱讀 6334

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

一、類的屬性的表示方式

在uml類圖中,類使用包含類名、屬性(field) 和方法(method) 且帶有分割線的矩形來表示,比如下圖表示乙個employee類,它包含name,age和email這3個屬性,以及modifyinfo()方法。

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

· + :表示public

· - :表示private

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

因此,上圖中的employee類具有3個私有屬性和乙個公有方法。

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

可見性  名稱 :型別 [ = 預設值]

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

二、類的方法的表示方式

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

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

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

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

· public方法method1接收乙個型別為object的引數,返回值型別為void

· protected方法method2無引數,返回值型別為string

· private方法method3接收型別分別為int、int的引數,返回值型別為int

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

1、關聯關係

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

(1)單向關聯

我們可以看到,在uml類圖中單向關聯用乙個帶箭頭的直線表示。上圖表示每個顧客都有乙個位址,這通過讓customer類持有乙個型別為address的成員變數類實現。

(2)雙向關聯

從上圖中我們很容易看出,所謂的雙向關聯就是雙方各自持有對方型別的成員變數。在uml類圖中,雙向關聯用乙個不帶箭頭的直線表示。上圖中在customer類中維護乙個product陣列,表示乙個顧客購買了那些產品;在product類中維護乙個customer型別的成員變數表示這個產品被哪個顧客所購買。

(3)自關聯

自關聯在uml類圖中用乙個帶有箭頭且指向自身的直線表示。上圖的意思就是node類包含型別為node的成員變數,也就是「自己包含自己」。

2、聚合關係

上圖中的car類與engine類就是聚合關係(car類中包含乙個engine型別的成員變數)。由上圖我們可以看到,uml中聚合關係用帶空心菱形和箭頭的直線表示。聚合關係強調是「整體」包含「部分」,但是「部分」可以脫離「整體」而單獨存在。比如上圖中汽車包含了發動機,而發動機脫離了汽車也能單獨存在。

3、組合關係

組合關係與聚合關係見得最大不同在於:這裡的「部分」脫離了「整體」便不復存在。比如下圖:

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

4、依賴關係

從上圖我們可以看到,driver的drive方法只有傳入了乙個car物件才能發揮作用,因此我們說driver類依賴於car類。在uml類圖中,依賴關係用一條帶有箭頭的虛線表示。

5、繼承關係

繼承關係對應的是extend關鍵字,在uml類圖中用帶空心三角形的直線表示,如下圖所示中,student類與teacher類繼承了person類。

6、介面實現關係

這種關係對應implement關鍵字,在uml類圖中用帶空心三角形的虛線表示。如下圖中,car類與ship類都實現了vehicle介面。

到了這裡,uml類圖中最常見的表示方式我們就介紹完了,有了這些我們就能讀懂常見的uml類圖了,剩下的遇到時再查即可。

python命名空間(五分鐘讀懂)

1.命名空間指的是變數儲存的位置,每乙個變數都需要儲存到指定的命名空間當中 2.每乙個作用域都會有乙個它對應的命名空間 3.全域性命名空間,用來儲存全域性變數。函式命名空間用來儲存函式中的變數 4.命名空間實際上就是乙個字典,是乙個專門用來儲存變數的字典 1.在全域性作用域中呼叫locals 則獲取...

五分鐘講清楚UML

蔣彪2010 4 28 最近一段時間做專案,需要做機能模組的設計。客戶方指名要用 uml圖作設計資料。但是跟日本人打了這麼多年交道,uml圖是什麼東西,我早就忘記光了,沒辦法,只好從頭查資料。於是做出來了這樣乙個資料,把我學習 uml的方法和結論告訴大家,讓大家在 5分鐘之內都能學會 uml。進入 ...

五分鐘講清楚UML

蔣彪2010 4 28 最近一段時間做專案,需要做機能模組的設計。客戶方指名要用 uml圖作設計資料。但是跟日本人打了這麼多年交道,uml圖是什麼東西,我早就忘記光了,沒辦法,只好從頭查資料。於是做出來了這樣乙個資料,把我學習 uml的方法和結論告訴大家,讓大家在 5分鐘之內都能學會 uml。進入 ...