UML 中的圖表

📢 本文由 gemini-3-flash-preview 翻譯

圖表 (Diagram) 是一組元素的圖形表示,大多數情況下將圖表畫成頂點 (代表事物) 和弧 (代表關係) 的連通圖。為了對系統進行視覺化,可以從不同的角度繪圖,這樣圖表就是對系統的投影。

UML 2.0 提供了 13 種圖表,分別是類別圖、物件圖、使用案例圖、循序圖、通訊圖、狀態圖、活動圖、元件圖、複合結構圖、部署圖、套件圖、互動概覽圖和計時圖。循序圖、通訊圖、互動概覽圖和計時圖均被稱為互動圖。

(一) 類別圖

類別圖 (Class Diagram) 展現了一組物件、介面、協同和它們之間的關係。在物件導向系統的塑模中所建立的最常見圖表就是類別圖。類別圖給出系統的靜態設計視圖。包含主動類別的類別圖給出了系統的靜態程序視圖。

類別圖中通常包括下述內容:

  1. 類別
  2. 介面
  3. 協同
  4. 相依、一般化和關聯關係

類

例如:

Student
+id: int
-name: String
#age: int
~borrow(): bool

+: public

-: private

#: protected

~: package

類圖

類別圖中也可以包含註解和限制。類別圖還可以含有套件或子系統,二者都用於把模型元素聚集成更大的區塊。

類別圖用於對系統的靜態設計視圖塑模。這種視圖主要支援系統的功能需求,即系統要提供給最終使用者的服務。當對系統的靜態設計視圖塑模時,通常以下述 3 種方式之一使用類別圖:

  1. 對系統的詞彙塑模
  2. 對簡單的協同塑模
  3. 對邏輯資料庫結構塑模

(二) 物件圖

物件圖 (Object Diagram) 展現了某一時刻一組物件以及它們之間的關係,描述了在類別圖中所建立的事物的實例的靜態快照。物件圖一般包括物件和鏈結。

物件名:類別名
屬性

物件圖

和類別圖一樣,物件圖給出系統的靜態設計視圖或靜態程序視圖。

(三) 使用案例圖

使用案例圖 (Use Case Diagram) 展現了一組使用案例、參與者 (Actor) 以及它們之間的關係。

使用案例圖通常包含以下內容:

  1. 使用案例
  2. 參與者
  3. 使用案例之間的擴充關係 <<extend>> 和包含關係 <<include>> ,參與者和使用案例之間的關聯關係,使用案例與使用案例以及參與者與參與者之間的一般化關係。
  • 包含關係

一個使用案例包含另一個使用案例。

基本使用案例 –<<include>>–> 被包含使用案例

  • 擴充關係

一個使用案例執行的時候,可能會發生一些特殊的情況或可選的情況,這種情況就是這個使用案例的擴充使用案例。

擴充使用案例 –<<extend>>–> 基本使用案例

用例圖

使用案例圖用於對系統的靜態使用案例視圖進行塑模。這個視圖主要支援系統的行為,即該系統在它的周邊環境的語境中所提供的外部可見服務。

當對系統的靜態使用案例視圖塑模時,可以用下列兩種方式來使用使用案例圖:

  1. 對系統的語境塑模
  2. 對系統的需求塑模

(四) 互動圖

互動圖用於對系統的動態方面進行塑模。一張互動圖表現的是一個互動,由一組物件和它們之間的關係組成,包含它們之間可能傳遞的訊息。互動圖表現為循序圖、通訊圖、互動概覽圖和計時圖,每種針對不同的目的,能適用於不同的情況。循序圖是強調訊息時間順序的互動圖;通訊圖是強調接受和發生訊息的物件的結構組織的互動圖;互動概覽圖強調控制流的互動圖。

互動圖一般包含物件、鏈結和訊息。

循序圖

循序圖 (Sequence Diagram) 是情境 (Scenario) 的圖形化表示,描述了以時間順序組織的物件之間的互動活動。形成循序圖時,首先把參加互動的物件放在圖的上方,沿水平方向排列。通常把發起互動的物件放在左邊,下級物件依此放在右邊。然後,把這些物件發生和接收的訊息沿著垂直方向按時間順序從上到下放置。這樣,就提供了控制流隨時間推移的清晰的視覺化軌跡。

序列圖

循序圖有兩個不同於通訊圖的特徵:

  1. 循序圖有物件生命線。物件生命線是一條垂直的虛線,表示一個物件在一段時間內存在。
  2. 循序圖有控制焦點。控制焦點是一個瘦高的矩形,表示一個物件執行一個動作所經歷的時間段,既可以是直接執行,也可以是通過下級過程執行。矩形的頂部表示動作的開始,底部表示動作的結束。

通訊圖

通訊圖 (Communication Diagram) 強調收發訊息的物件的結構組織,在早期的版本中也被稱作協同圖。通訊圖強調參加互動的物件的組織。產生一張通訊圖,首先要將參加互動的物件作為圖的頂點,然後把連接這些物件的鏈結表示為圖的弧,最後用物件發送和接收的訊息來修飾這些鏈結。這就提供了在協同物件的結構組織的語境中觀察控制流的一個清晰的視覺化軌跡。

通信圖

通訊圖有兩個不同於循序圖的特性:

  1. 通訊圖有路徑。為了指出一個物件如何與另一個物件連結,可以在鏈結的末端附上一個路徑構造型。
  2. 通訊圖有順序號。為表示一個訊息的時間順序,可以給訊息加一個數字前綴,在控制流中,每個新訊息的順序號單調增加。為了使用巢狀,可使用帶小數點的號碼。

循序圖和通訊圖是同構的,它們之間可以相互轉換。

(五) 狀態圖

狀態圖 (State Diagram) 展現了一個狀態機,它由狀態、轉換、事件和活動組成。狀態圖關注系統的動態視圖,對於介面、類別和協同的行為塑模尤為重要,強調物件行為的事件順序。

狀態圖通常包括簡單狀態和組合狀態、轉換 (事件和動作)。

狀態

狀態是任何可以被觀察到的系統行為模式,一個狀態代表系統的一種行為模式。狀態規定了系統對事件的響應方式。系統對事件的響應,既可以是做一個 (或一系列) 動作,也可以是僅僅改變系統本身的狀態,還可以是既改變狀態,又做動作。

在狀態圖中定義的狀態主要有:初態 (即初始狀態) 、終態 (即最終狀態) 和中間狀態。初態用一個黑圓點表示,終態用黑圓點外加一個圓表示,狀態圖中的狀態用一個圓角四邊形表示。

狀態之間為狀態轉換,用一條帶箭頭的線表示。帶箭頭的線上的事件發生時,狀態轉換開始。一張狀態圖中只能有一個初態,而終態可以沒有,也可以有多個。

狀態圖中使用的主要符號

三種標準事件:

  • entry: 進入動作,進入狀態時立即執行
  • exit: 結束動作,退出狀態時立即執行
  • do: 內部活動,佔用有限時間,並可以中斷的工作

狀態圖-狀態-例子

以上圖例:

  • entry/turnON: 當轉入該狀態時,執行開燈動作
  • do/blinkFivetimes: 當處於該狀態時,燈閃爍 5 次
  • exit/turnOFF: 當轉出該狀態時,執行關燈動作

事件與轉換

事件是在某個特定時刻發生的事情,它是對引起系統做動作或 (和) 從一個狀態轉換到另一個狀態的外界事件的抽象。例如,觀眾使用電視遙控器,使用者移動滑鼠、點擊滑鼠等都是事件。簡而言之,事件就是引起系統做動作或 (和) 轉換狀態的控制資訊。

狀態變遷通常是由事件觸發的,在這種情況下,應在表示狀態轉換的箭頭上標出觸發轉換的事件表達式。

如果在箭頭線上未標明事件,則表示在源狀態的內部活動執行完之後自動觸發轉換,事件表達式的語法如下:

事件說明[防護條件]動作表達式

其中,事件說明的語法為:事件名(參數表)

防護條件 (或者守護條件) 是一個布林表達式。如果同時使用事件說明和防護條件,則當且僅當事件發生且布林表達式為真時,狀態轉換才發生。如果只有防護條件沒有事件說明時,則只要守護條件為真,狀態轉換就發生。

狀態圖-轉換

轉換包括兩個狀態 (原狀態,目標狀態)、事件、防護條件、動作。

事件觸發轉換 (遷移)。

活動 (動作) 可以在狀態內執行,也可以在狀態轉換 (遷移) 時執行。

狀態圖-轉換-例子

完整圖

狀態圖

可以用狀態圖對系統的動態方面塑模。這些動態方面可以包括出現在系統體系結構的任何視圖中的任何一種物件的按事件排序的行為,這些物件包括類別 (各主動類別) 、介面、元件和節點。

當對系統、類別或使用案例的動態方面塑模時,通常是對反應型物件塑模。

(六) 活動圖

活動圖 (Activity Diagram) 是一種特殊的狀態圖,它展現了在系統內從一個活動到另一個活動的流程。活動圖專注於系統的動態視圖,它對於系統的功能塑模特別重要,並強調物件間的控制流程。

活動圖一般包括活動狀態和動作狀態、轉換和物件。

活動圖可以表示分岔 (Branch)、合併 (Merge)、分叉 (Fork) 和匯合 (Join)。

活動圖

當對一個系統的動態方面塑模時,通常有兩種使用活動圖的方式:

  1. 對工作流程塑模
  2. 對操作塑模

(七) 元件圖

元件圖 (Component Diagram) 展現了一組元件之間的組織和相依。元件圖專注於系統的靜態實作視圖。它與類別圖相關,通常把元件映射為一個或多個類別、介面或協同。

元件圖

(八) 部署圖

部署圖 (Deployment Diagram) 是用來對物件導向系統的物理方面塑模的方法,展現了執行時處理節點以及其中元件 (成品) 的配置。部署圖對系統的靜態部署視圖進行塑模,它與元件圖相關。通常,一個節點是一個在執行時存在並代表一項計算資源的物理元素,至少擁有一些內容,常常具有處理能力,包含一個或多個元件。其中 <<artifact>> 表示成品 (或成果物)。

部署圖

總結

  • 靜態塑模:類別圖、物件圖、使用案例圖

  • 動態塑模:循序圖 (順序圖,時序圖)、通訊圖 (協同圖)、狀態圖、活動圖

  • 物理塑模:元件圖 (組件圖)、部署圖

互動圖:循序圖 (順序圖,時序圖)、通訊圖 (協同圖)