1. 程式人生 > 實用技巧 >淺談UML中常用的幾種圖

淺談UML中常用的幾種圖

淺談UML中常用的幾種圖


Update Time:2020年1月5日20:17:47 Author:要你命三千又 三千 type:筆記整理

做一個簡單的UML總結
學習UML 的各個用圖;
如果詳細學習每一個部分,是看一篇總結是遠遠不夠的。

1 UML簡介

統一建模語言(Unified Modeling Language,UML)又稱標準建模語言,是始於1997年的一個OMG標準,它是一個支援模型化和軟體系統開發的圖形化語言,為軟體開發的所有階段提供模型化和視覺化支援,包括由需求分析到規格,到構造和配置。‘UML感興趣的可以閱讀UML 1規 範,包含了UML 的所有知識內容。
注:OMG, Object Management Group 物件管理組織

2 UML常見圖分類

UML從考慮系統的不同角度出發,定義了用況圖類圖物件圖包圖狀態圖活動圖序列圖通訊圖構件圖、部署圖等10種圖。

分類:

面向物件動態建模,用於建立行為的實體間行為互動的四種圖:狀態圖(Stage Diagram),序列圖(Sequence Diagram),協作圖(Communication Diagram),活動圖(Activity Diagram) 。
序列圖”與“協作圖”表述的是相似的訊息,“活動圖”是“狀態圖”的一種。

  • 靜態結構圖Static Structure Diagram
    類圖Class Diagram
    物件圖Object Diagram
    用況圖Use Case Diagram
  • 互動圖Interaction Diagram
    順序圖Sequence Diagram
    協作圖Collaboration Diagram
    狀態圖State chart Diagrams
    活動圖Activity Diagrams
  • 實現圖Implementation Diagrams
    構件圖Component Diagram
    部署圖Deployment Diagram

3 用況圖(用例)

用例圖,展現了一組用例、參與者(actor)以及它們之間的關係。
用例圖從使用者角度描述系統的靜態使用情況,用於建立需求模型。(用於需求分析)

  • 參與者(Actor)
      在系統外部與系統直接互動的人或事物。需要注意以下兩點:
      1)參與者是角色而不是具體的人(可以是外部系統),它代表了參與者在與系統打交道的過程中所扮演的角色。所以在系統的實際運作中,一個實際使用者可能對應系統的多個參與者。不同的使用者也可以只對應於一個參與者,從而代表同一參與者的不同例項。
      2)參與者作為外部使用者(而不是內部)與系統發生互動作用,是它的主要特徵。

在UML中,參與者使用如圖所示的一個小人表示:

用例(Use Case)用況

系統外部可見的一個系統功能單元。系統的功能由系統單元所提供,並通過一系列系統單元與一個或多個參與者之間交換的訊息所表達。用橢圓表示,橢圓中的文字簡述系統的功能:

子系統(Subsystem)
用來展示系統的一部分功能,這部分功能聯絡緊密。

關係(Relationship)
  常見關係型別有關聯、泛化、包含和擴充套件。
  以上各關係在uml圖中的表示方式,如下表所示:
  

  a. 關聯(Association)
  表示參與者與用例之間的通訊,任何一方都可傳送或接受訊息。
  【箭頭指向】:指向訊息接收方

  b. 泛化(Inheritance)
  就是通常理解的繼承關係,子用例和父用例相似,但表現出更特別的行為;子用例將繼承父用例的所有結構、行為和關係。子用例可以使用父用例的一段行為,也可以過載它。父用例通常是抽象的。
  【箭頭指向】:指向父用例

  c. 包含(Include)
包含關係用來把一個較複雜用例所表示的功能分解成較小的步驟。
  【箭頭指向】:指向分解出來的功能用例

  d. 擴充套件(Extend)
  擴充套件關係是指用例功能的延伸,相當於為基礎用例提供一個附加功能。
  【箭頭指向】:指向基礎用例

包含(include)、擴充套件(extend)、泛化(Inheritance) 的區別:
  條件性:泛化中的子用例和include中的被包含的用例會無條件發生,而extend中的延伸用例的發生是有條件的;
  直接性:泛化中的子用例和extend中的延伸用例為參與者提供直接服務,而include中被包含的用例為參與者提供間接服務。
  對extend(擴充套件)而言,延伸用例並不包含基礎用例的內容,基礎用例也不包含延伸用例的內容。
  對Inheritance(泛化)而言,子用例包含基礎用例的所有內容及其和其他用例或參與者之間的關係;

4 類圖

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

  1. 泛化(Generalization)
    【泛化關係】:是一種繼承關係,表示一般與特殊的關係,它指定了子類如何特化父類的所有特徵和行為。例如:老虎是動物的一種,即有老虎的特性也有動物的共性。
    【箭頭指向】:帶三角箭頭的實線,箭頭指向父類

實現類的繼承關係

  1. 實現(Realization)
    【實現關係】:是一種類與介面的關係,表示類是介面所有特徵和行為的實現.
    【箭頭指向】:帶三角箭頭的虛線,箭頭指向介面

注意可以理解類的繼承的關係的另外一種表現形式。

  1. 關聯(Association)
    【關聯關係】:是一種擁有的關係,它使一個類知道另一個類的屬性和方法;如:老師與學生,丈夫與妻子關聯可以是雙向的,也可以是單向的。雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭。
    【程式碼體現】:成員變數
    【箭頭及指向】:帶普通箭頭的實心線,指向被擁有者


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

  1. 聚合(Aggregation)
    【聚合關係】:是整體與部分的關係,且部分可以離開整體而單獨存在。如車和輪胎是整體和部分的關係,輪胎離開車仍然可以存在。
    聚合關係是關聯關係的一種,是強的關聯關係;關聯和聚合在語法上無法區分,必須考察具體的邏輯關係。
    【程式碼體現】:成員變數
    【箭頭及指向】:帶空心菱形的實心線,菱形指向整體

  1. 組合(Composition)
    【組合關係】:是整體與部分的關係,但部分不能離開整體而單獨存在。如公司和部門是整體和部分的關係,沒有公司就不存在部門。組合關係是關聯關係的一種,是比聚合關係還要強的關係,它要求普通的聚合關係中代表整體的物件負責代表部分的物件的生命週期。
    【程式碼體現】:成員變數
    【箭頭及指向】:帶實心菱形的實線,菱形指向整體

  2. 依賴(Dependency)
    【依賴關係】:是一種使用的關係,即一個類的實現需要另一個類的協助,所以要儘量不使用雙向的互相依賴.
    【程式碼表現】:區域性變數、方法的引數或者對靜態方法的呼叫
    【箭頭及指向】:帶箭頭的虛線,指向被使用者

各種關係的強弱順序:
泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴
下面這張UML圖,比較形象地展示了各種類圖關係:

圖片轉自:http://blog.csdn.net/tianhai110/article/details/6339565

注意這裡的雁群和大雁的關係畫反了。

簡單類圖使用 舉例

  1. 根據下面的陳述畫出類圖
    1)學生包括本科生、研究生兩種。
    2)研究生的一部分利用課餘時間擔任助教。
    3)教師包括講師和教授兩種。
    4)一名助教可以為一位講師或一位教授助課,一位講師只能有一名助教,一位教授可以有5名助教。

  2. 按如下描述畫出一個自治機器人的類圖。
    這張圖的焦點是聚集在那些讓機器人在路上行走的機制所對應的類上。你可以發現一個虛類Motor和兩個從它派生出來的類: SteeringMotor和MainMotor。這兩個類都從它的父親Motor繼承了五個方法:move()、stop()、resetCounter()、statues()、distance()。這兩個類又是另一個類Driver的一部分。類PathAgent 和Driver有一個1對1的關係,和CollisionSensor有1對n的關係。

【問題:】綜上所述請你用UML來繪製分析類圖。
參考答案:

5 其他輔助用圖

時序圖(順序圖)

時序圖別稱為順序圖、序列圖,在我的大致印象中時序圖是以時間為主線,有生命線的動態檢視,主要描述的物件是物件。是互動圖的一種。主要的作用是表達設計者心中對於未來程式在運作時的物件協作建模,驗證軟體領域模型的正確性,為程式設計師提供編碼的藍圖。

(一)概念

  1. 定義:
    時序圖是以時間為序的表示方法,主要用來描述物件之間的時間順序。將互動關係表示為二維圖的。縱軸為時間,橫軸為在協作中各個獨立的物件。物件存在時用一條虛線表示,當物件的過程處於啟用狀態是,生命線是一個雙道線。訊息用從一個物件的生命線到另一個物件生命線的箭頭表示。箭頭以時間順序在圖中從上到下排列。如下圖:
  2. 四個元素(物件,生命線,訊息,啟用)
    (1)物件
    物件的概念就不多說了,就是類的例項化,在系統中隨便都可以找到一個物件,因為我們使用的是基於OO程式設計的VB。
    (2)生命線
    表示物件的存在存在多久的時間
    (3)訊息
    物件之間的單路通訊,人有人的語言,機器有機器的語言,人和機器都是靠訊息傳遞資訊和指令的。
    訊息的型別大致有:同步與非同步,返回、阻止和超時
    (4)啟用
    表示這個時間,物件實現操作。時序圖是將互動關係表示為二維圖的。縱軸為時間,橫軸為在協作中各個獨立的物件。物件存在時用一條虛線表示,當物件的過程處於啟用狀態,生命線是一個雙道線。訊息用從一個物件的生命線到另一個物件生命線的箭頭表示。箭頭以時間順序在圖中從上到下排列。

(二)建模
主要是按時間順序對控制流建模

(三)例項
首先要分析用例的正常流
,學生刷卡上機
,系統記錄學生上機時間,同時顯示學生的基本資訊
,此時的學生資訊時系統更新
,系統根據學生上機時長和類別計算上機費用
,系統儲存學上上機資訊。
,學生下機
,系統記錄時間,跟新資料庫
,資料庫更新,反饋學生資訊
,系統根據學生上機和下機時間、類別計算上機費用
,系統儲存學生上機費用
然後開始畫圖:
)建立時序圖
)新增物件並設定物件屬性,持續性
)新增訊息(訊息的編號,顯示或取消啟用顯示)
如圖:(圖片有錯,不提供參考)

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/tsj11514oo/article/details/38179121

協作圖(Collaboration Diagram/communication Diagram)/通訊圖

協作圖(Collaboration Diagram /Communication Diagram,也叫合作圖)是一種互動圖(interaction diagram),強調的是傳送和接收訊息的物件之間的組織結構。一個協作圖顯示了一系列的物件和在這些物件之間的聯絡以及物件間傳送和接收的訊息。物件通常是命名或匿名的類的例項,也可以代表其他事物的例項,例如協作、元件和節點。使用協作圖來說明系統的動態情況。

下面這張圖介紹協作圖的基本內容:


下面一張圖是一個協作圖的例項,建立課程的協作圖:

由於協作圖和時序圖在語意上是相通的,所以可以互相轉換,下面是利用ROSE把上面的協作圖轉換成的時序圖的例項,可以直接使用功能進行轉換:

由於協作圖和時序圖在作用上可以替代的,在使用中,一般有了時序圖就沒有必要使用協作圖。

狀態圖

1.概述:
狀態圖(Statechart Diagram)主要用於描述一個特定的物件的所有可能狀態以及由於各種事件的發生而引起的狀態之間的轉換
2.構成要素:
狀態圖由狀態轉移事件組成。聯合使用狀態和轉移可以更好地建模它們,有時需要包含決策點和同步條來顯示更高層次的細節資訊。
2.1狀態(States):
在物件的生命週期中滿足某些條件、執行某些活動或等待某些事件的一個條件或狀況。所有的物件都有狀態,狀態是物件執行了一系列活動的結果,當某個事件發生後,物件的狀態將發生變化。

狀態圖中可以包含0個多個開始狀態,也可以包含多個結束狀態。模型不必同時具有開始和結束狀態,因為模型可以總是執行,從不停止。
2.2轉移(Transitions):
兩個狀態之間的一種關係,表示物件將在第一個狀態中執行一定的動作並在某個特定事件發生或某個特定條件滿足時進入第二個狀態。

2.3事件:
使狀態發生變化的某時刻發生的動作或活動,用來指示是什麼觸發了轉移從而導致狀態發生了改變。事件通常在從一個狀態到另一個狀態的轉移路徑上直接指定。
2.4判斷:
判斷點通過對事件判斷分組轉移到各自方向,提高了狀態圖的可視性。

2.4同步:
使用同步和活動圖一樣是為了說明併發工作流的分叉與聯合。

3.機房例項(註冊部分):總結:狀態圖重點在與描述物件的狀態及其狀態之間的轉移,與活動圖區別在於狀態圖注重的是行為的結果,活動圖更注重是行為的動作。

活動圖(Activity Diagram)

“活動圖”可通過一系列操作將業務流程或軟體程序以工作流的形式顯示出來。這些操作可以由人、軟體元件或計算機來執行。
使用活動圖可以描述多種型別的流程,如下:
1、使用者和您的系統之間的業務流程或工作流。
2、某一用例中執行的步驟。
3、軟體協議,即允許在元件間進行的互動序列。
4、軟體演算法。
下面用一張圖來介紹活動圖的基本內容

下面是用rose 和 onenote結合畫的一張活動圖的例項,基本囊括了活動圖的重要元素。

6 元件圖(ComponentDiagram)、配置圖(Deployment Diagram)

元件(構件圖)和配置圖(部署圖)是面向物件系統的物理建模時使用的兩種圖。

  • 元件圖:描述軟體元件以及元件之間的關係。
    元件圖元素:元件、介面、依賴關係
    元件:是定義良好介面的物理實現單元,遵從同一組介面,提供實現物理的可替換的部分。
    介面:一個類提供另一個類的一組操作。
    依賴關係:一種使用關係(這裡不做詳解)

  • 構件與結構之間關係:
    構件與構件之間關係:依賴
    構件與其對應介面之間關係:實現
    匯出介面:元件實現的介面,由提供操作的元件提供
    匯入介面:訪問服務的元件使用匯入介面

機房收費系統構件圖:機房收費系統引用控制元件與報表生成器,匯出EXcel,列印報表,通過程式碼與資料庫連線實時更新資料。

  • 配置圖:描述系統硬體的物理結構以及如何將軟體部署在硬體上。用於對系統的實現檢視建模,主要是為了描述系統各個物理組成部分的分佈、提交、安裝過程。
    組成元素:節點、關係
    機房收費系統部署圖:

github上的地址
補充:UML是不斷修訂的 在UML 中,主要是使用了9 張圖,到了UML 2 中有新增了幾張圖;概覽


注意:UML 1.0中協作圖改為了UML 2 通訊圖