UML類圖詳解和示例


ps:博客園markdown不能自動生成列表,更好的閱讀體驗可訪問我的個人博客http://www.isspark.com/archives/UMLDescription

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中類可表示為一個划分為三個格子的長方形,第一個格子包含類名,中間的格子包含類的屬性,最后個格子包含類的操作。如下圖:
CatUML
第一個方格,貓是這個類的類名。

第二個方格包含了兩個部分,左邊的+、-、# 表示了屬性的可見性,分表表示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或多個關聯數目
* 表示有多個關聯數目

轉載於:https://www.cnblogs.com/warmsmile/p/11449197.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM