轉發:UML類圖詳解和示例(超詳細)

寫在前面

日常工作中用到UML類圖,從網上找到一篇博客關於其用法寫的不錯,在此轉發一下方便自己以後查看
原文鏈接:UML類圖詳解和示例

UML類圖概述

什麼是UML類圖

要認識UML類圖,要從UML是什麼開始.UML(Unified Modeling Language)即統一建模語言,是用於系統可視化建模語言。它是國際統一軟件建模標準,融合了OMT、OOSE、Booch方法中的建模語言。

UML是一種可視化、可用於詳細描述、文檔化的語言。UML就像數學中的數字和加減符號一樣,爲所有軟件開發的人員提供了一種圖形化表達、標準化的語言。通過UML,軟件開發人員可以準備的描述軟件結構和建模,並通過UML建立整個系統架構和詳細文檔。

UML類圖正是UML建模元素中的一種。

擴展
UML2.0包括14種不同的圖,非爲表示系統靜態結構的靜態模型和表示系統動態結構的動態模型。
靜態模型:類圖、對象圖、包圖、構件圖、部署圖、製品圖
動態模式:對象圖、用例圖、順序圖、通信圖、定時圖、狀態圖、活動圖、交互概覽圖
爲什麼要使用UML類圖
由於UML類圖的精確、無歧義、完整的建模,通常,我們通過使用UML類圖來詳細的描述系統中的對象和他們的關係。認識UML類圖也能幫助我們快速瞭解、理清系統中對象之間的關係。

UML類圖的組成

UML是OO方法(面向對象設計分析方法)的核心。類圖包含了:類和對象、類之間的關係、類之間的多重性。

類和對象

對象是描述客觀世界中某個具體的實體,而類是對一類具有相同特徵的對象的描述。對象是類的實例。在UML中類可表示爲一個劃分爲三個格子的長方形,第一個格子包含類名,中間的格子包含類的屬性,最後個格子包含類的操作。如下圖:
在這裏插入圖片描述
第一個方格,貓是這個類的類名。

第二個方格包含了兩個部分,左邊的+、-、# 表示了屬性的可見性,分表表示public、private、protected
右邊表示類的屬性。

第三個方格同屬性一樣,包含了兩部分,前面的符號表示了方法的可見性,後面表示類的方法。

類之間的關係

建立模型時,類不可能是單獨存在的。比如貓咪的抓如果沒有其他對象,抓這個方法顯得毫無意義。UML類圖中類之間的關係主要包括:依賴關係、泛化關係、關聯關係、實現關係。關聯關係包含了聚合關係、組合關係。

依賴關係

定義:有兩個元素X、Y,如果修改X的定義可能會引起對Y的定義修改,則稱Y依賴與元素X

產生依賴的原因有很多,通常表現爲:一個類向另一個類發送信息;一個類是另一個類的數據成員;一個類是另一個類的操作參數等。如下圖:
在這裏插入圖片描述
銀行作爲用戶貸款操作的參數,用戶依賴與銀行,UML類圖中用帶箭頭的虛線表示依賴關係

泛化關係

泛化關係描述了一般事物與該事物中的特殊種類之間的關係。Java中的繼承關係,父類就是子類泛化。
在UML中,泛化關係有三個條件:

1.付類所具有的關聯、屬性和操作,子類都應該具有
2.子類除了與父類一致的信息外還包含額外的信息
3.可以使用父類的地方,也可以使用子類實例
泛化關係使用帶空心箭頭的實現表示,箭頭指向父類。如下圖:
泛化
在這裏插入圖片描述

關聯關係

關聯關係表示兩個類之間存在某種語義上的聯繫,比如一個公司有多個部門,一個部門有多個員工。
關聯關係是所有關係語義最弱的關聯。UML類中中,用實線來表示

在這裏插入圖片描述

在上圖中1、1…n是用來表示關聯的兩個類之間的數量關係。具體參見類的多重性。

聚合關係

聚合關係是一種特殊的關聯關係。聚合關係表示了類之間的整體與部分的關係。整體與部分之間並沒有相同的生命週期,整體消亡後部分可依舊存在。在UML中用帶有空心菱形的實線表示,空心菱形指向代表整體的類。比如:電腦是由CPU、主板等組成的。UML表示圖如下:
在這裏插入圖片描述

組合關係

組合關係也是部分和整體的關係,相對聚合關係,組合關係中的部分和整體聯繫更爲緊密。整體與部分之間有相同的生命週期,整體消亡後部分也隨之消亡。比如公司和部門之間的關係,一旦公司解散,部門也隨之解散。UML中用帶有實心菱形的實線表示。UML圖如下:

在這裏插入圖片描述

實現關係

實現關係用來規定接口和實現接口的類或組件之間的關係。接口可以看作是操作的集合,這些操作用於規定類或組件的服務。在UML中,用一個帶空心箭頭的虛線來表示。比如我們抽象出飛行這個動作,而對於不同的類可以通過實現飛行接口來作個性化處理。UML圖如下:

在這裏插入圖片描述

類的多重性

多重性是用來說明兩個類之間的數量關係,表示爲一個整數範圍n…m,整數n定義所鏈接的最少對象的數目,m爲最多對象數目(但不確定最大數時,可以*號表示)。常見的多重性如下表

表示 含義
0…1 表示0或者1的關聯數目
0…* 表示0或多個關聯數目
1…1 表示1個關聯數目
1…* 表示1或多個關聯數目
* 表示有多個關聯數目
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章