UML 之 各種檢視簡介 & UML類圖幾種關係的總結

love_Aym發表於2018-05-21

轉載:https://www.cnblogs.com/xinaixia/p/4424443.html



  統一建模語言(Unified Modeling Language,UML)中各種檢視並沒有明顯的概念區別。

  在最上一層,檢視被劃分為三個檢視域:結構,動態行為,模型管理。

      結構主要描述了系統中的結構成員及其相互關係。結構元素包括類,用例,構件和節點。結構元素為研究系統的動態行為奠定了基礎。結構檢視包括靜態檢視,用例檢視和實現檢視。

      動態行為描述了系統隨時間變化的行為。行為用從靜態檢視中抽取出來的系統的瞬間值變化來描述。動態行為檢視包括狀態機檢視,活動檢視和互動檢視。

      模型管理說明了模型的分層組織結構。包是模型的基本組織單元。特殊的包還包括模型和子系統。模型管理檢視跨越了其他檢視並根據系統的開發和配置組織這些檢視。

      UML還有多種具有擴充套件能力的元件,這些擴充套件能力有限但很有用。這些元件包括約束,構造型和標記值,適用所有的檢視元素。

      UML的檢視表,如下:

主要域檢視主要概念
結構靜態檢視類圖類、關聯、泛化、依賴關係、實現、介面
用例檢視用例圖用例、參與者、關聯、擴充套件、包括、用例泛化
實現檢視構件圖構件、介面、依賴關係、實現
部署檢視部署圖節點、構件、依賴關係、位置
動態狀態機檢視狀態機圖狀態、事件、轉換、動作
活動檢視活動圖狀態、活動、完成轉換、分叉、結合
互動圖順序圖互動、物件、訊息、啟用
協作圖協作、互動、協作角色、訊息
模型管理模型管理檢視類圖包、子系統、模型
可擴充套件性所有所有約束、構造型、標記值

  

一、靜態檢視

       它對應用領域中的概念和系統實現有關的內部概念建模。它因為不描述與時間有關的系統行為被稱作靜態檢視。靜態檢視主要由類以及類之間的相互關係組成,這些關係包括:關聯,泛化和各種依賴關係,如何使用和實現關係。類是應用領域或應用解決方案中概念的描述。類圖是以類為中心組織的,類圖中的其他元素或屬於某個類或與類相關聯。靜態檢視用類圖來實現,正因為他以類為中心,所以稱其為類圖。下面是個類圖的例子:

 

  私下裡覺得這張圖很複雜,尤其是不知道這張圖是用來幹什麼的時候!

 

二:用例檢視

  用例檢視被稱為參與者的外部使用者所能觀察到的系統功能模型圖。用例是系統中的一個功能單元,可以描述為參與者與系統之間的一次互動。用例模型的用途是列出系統的用例和參與者,並顯示了哪個參與者參與了哪個用例的執行。下面是個用例檢視的例子:

   個人觀點,這個圖很傻,不過還是很有意思的,最起碼能夠顯示正常開發中各個參與者的活動情況。

 

三:互動檢視

       互動檢視描述了執行系統功能的各個角色之間相互傳遞資訊的順序關係。互動檢視顯示跨越了多個物件的系統控制流程。互動檢視可用兩種檢視來表示:順序圖和協作圖,它們各有不同的側重點。

   1:順序圖

       順序圖描述的是一個事務的流程,這個流程和麵向過程程式設計中的順序結構是一樣的,從上到下。下面是一個圖例:

    這個圖讓我想起很久很久以前沒有ajax時候的網路服務,就是一直用同步的方式操作,不堪回首!

 

    2:協作圖

           協作圖是對在一次互動中有意義的物件和物件間的鏈建模,物件和關係只有在互動的語境中才有意義。協作圖用幾何排列來表示互動作用中的各角色。附在類元角色上的箭頭表示訊息,訊息的發生順序用編號數字表示。下面是一個協作圖圖例:

        這個圖有個特點,與順序圖不一樣,它展示了引數,方法名稱,不是基於時間序列,是基於邏輯序列。

 

四:狀態機檢視

      狀態機檢視是一個類物件可能經歷的的所有歷程的模型圖。狀態機由物件的各個狀態和連線這些狀態的轉換組成。每個狀態對一個物件在其生命週期中滿足某種條件的一段時間段建模。當一個事件發生時觸發狀態的轉換,從一個狀態轉化為另一個狀態。下面是一個圖例:

    這個狀態機我認為最好參考一下設計模式裡面的狀態模式,狀態模式的實現就是這個狀態圖的程式碼描述。

 

五:活動檢視

      活動檢視是狀態機的一種變體,用來描述執行演算法的工作流程中涉及到的活動。活動狀態代表了一個活動:一個工作流執行步驟或一個操作的執行。活動圖描述了一組順序的或併發的活動。活動檢視用活動來體現。下面是一個圖例:

     這個與狀態機還是有很大的變化的,它是一個線性的執行步驟,狀態機是一種環形觸發的情況。狀態機是每種情況很複雜,有一定觸發狀態存在於其中。活動圖可能沒有這些,但是符合現實的工作流程。

 

六:物理檢視

       物理檢視對應自身的結構實現建模,圖中的類將會對映稱為物理結構中的節點。物理檢視分為實現檢視和部署檢視。實現檢視為系統中的構件建模,以及構件之間的依賴關係,通過對依賴關係修改評估對系統可能帶來的影響。下面是一個實現檢視的圖例:

   這個圖很有意思吧,剛開始我還以為是電路板之類的圖呢。接下來是一個部署圖,仔細找找區別:

 

六:模型管理檢視

     它是對模型自身組織的建模。模型是從某一觀點以一定精確度對系統所進行的完整性描述。下面是一個圖例:

 這樣的系統圖看著非常的不錯,很容易理解和接受。

 

七:擴充套件元件

     元件作為一種提供特定功能的模型存在,包含約束,構造型和標記值。約束是用某種形式化的語言或者自然語言表達的語義關係的文字說明。構造型是指建模者設計的新的模型元素,但是它要在已有的UML模型基礎上。標記值是附加到任何模型元素上的命名的資訊塊。下面是例圖:

 

八:各種檢視之間的關係

 

九:個人學習經驗分享

       有些東西是很簡單的,關鍵是沒有了去學習的動力,沒有了自己前進的方向。我一直覺得能夠只需要背誦下來的東西是最簡單,需要理解並推陳出新的是最難的。每一次推陳出新都是自己能力進步的體現,要不進步也太平凡了,不值得自己去歡呼雀躍了。學習,哪怕是僅僅只是源於對一句話的感悟,也是進步。


U在UML類圖中,常見的有以下幾種關係: 泛化(Generalization), 實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)

1. 泛化(Generalization)

【泛化關係】:是一種繼承關係,表示一般與特殊的關係,它指定了子類如何特化父類的所有特徵和行為。例如:老虎是動物的一種,即有老虎的特性也有動物的共性。

【箭頭指向】:帶三角箭頭的實線,箭頭指向父類

2. 實現(Realization)

【實現關係】:是一種類與介面的關係,表示類是介面所有特徵和行為的實現.

【箭頭指向】:帶三角箭頭的虛線,箭頭指向介面

3. 關聯(Association)

【關聯關係】:是一種擁有的關係,它使一個類知道另一個類的屬性和方法;如:老師與學生,丈夫與妻子關聯可以是雙向的,也可以是單向的。雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭。

【程式碼體現】:成員變數

【箭頭及指向】:帶普通箭頭的實心線,指向被擁有者

上圖中,老師與學生是雙向關聯,老師有多名學生,學生也可能有多名老師。但學生與某課程間的關係為單向關聯,一名學生可能要上多門課程,課程是個抽象的東西他不擁有學生。

下圖為自身關聯:

4. 聚合(Aggregation)

【聚合關係】:是整體與部分的關係,且部分可以離開整體而單獨存在。如車和輪胎是整體和部分的關係,輪胎離開車仍然可以存在。

聚合關係是關聯關係的一種,是強的關聯關係;關聯和聚合在語法上無法區分,必須考察具體的邏輯關係。

【程式碼體現】:成員變數

【箭頭及指向】:帶空心菱形的實心線,菱形指向整體

5. 組合(Composition)

【組合關係】:是整體與部分的關係,但部分不能離開整體而單獨存在。如公司和部門是整體和部分的關係,沒有公司就不存在部門。

組合關係是關聯關係的一種,是比聚合關係還要強的關係,它要求普通的聚合關係中代表整體的物件負責代表部分的物件的生命週期。

【程式碼體現】:成員變數

【箭頭及指向】:帶實心菱形的實線,菱形指向整體

6. 依賴(Dependency)

【依賴關係】:是一種使用的關係,即一個類的實現需要另一個類的協助,所以要儘量不使用雙向的互相依賴.

【程式碼表現】:區域性變數、方法的引數或者對靜態方法的呼叫

【箭頭及指向】:帶箭頭的虛線,指向被使用者

各種關係的強弱順序:

泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴

下面這張UML圖,比較形象地展示了各種類圖關係:


相關文章