首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

UML 常用圖類型速查與核心符號對照表

     編輯:Java 綜合教學

UML 圖分類總覽

UML 2.x 定義 14 種圖,分為結構圖(靜態)與行為圖(動態)兩大類:

類別圖類型核心用途關鍵元素
結構圖類別圖系統靜態結構:類、介面、關係、屬性、方法類、介面、泛化、實現、關聯、聚合、組合、依賴
物件圖特定時刻的類別實例快照物件、連結、屬性值
元件圖實體元件與依賴關係元件、介面、埠、連接器、組件
部署圖硬體節點與軟體部署拓撲節點、制品、部署規範、執行環境
封裝圖模型組織與可見性套件、匯入、存取控制
複合結構圖類別內部結構與協作部件、連接器、埠、協作
剖面圖UML 擴充機制型別、刻板印象、元類別
行為圖用例圖系統功能需求與參與者互動參與者、用例、關聯、包含、擴充、泛化
序列圖物件間訊息時間順序生命線、訊息、片段、互動用途
通訊圖物件間結構化訊息傳遞物件、關聯、訊息編號
時序圖狀態隨時間變化的約束生命線、狀態、時間約束、持續觀察
活動圖流程邏輯與業務流程動作、決策/合併節點、分叉/合併、游泳道
狀態機圖物件生命週期狀態轉換狀態、轉換、事件、守衛條件、動作
互動概觀圖互動片段的高層流程互動用途、決策/合併、分叉/合併

核心關係符號速查(類別圖/物件圖)

關係符號語意程式碼映射強度
泛化實線空心三角箭頭 → 父類繼承:子類是父類的一種class Child extends Parent最強
實現虛線空心三角箭頭 → 介面實作介面契約class Impl implements Interface最強
組合實線實心菱形 → 整體強擁有:部分與整體同生共死成員變數 new Part() 在建構子初始化強
聚合實線空心菱形 → 整體弱擁有:部分可獨立存在成員變數,透過建構子/Setter 注入中
關聯實線箭頭(可雙向/單向)結構性關係:知道對方成員變數中
依賴虛線箭頭 → 被依賴者臨時使用:參數、區域變數、靜態方法呼叫方法參數、區域變數、Class.staticMethod()最弱

關係強度排序

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

可見性符號

修飾符符號範例
public++ getName() : String
private-- name : String
protected## calculateTax() : double
package-private~~ validate() : boolean

常用圖範例說明

類別圖關鍵要素

+---------------------+
|    Order            |
+---------------------+
| - id : Long         |
| - status : Enum     |
| + addItem() : void  |
| + calculateTotal()  |
+---------------------+
         ▲
         | 泛化
         |
+---------------------+
|   OnlineOrder       |
+---------------------+
| - trackingNo : String|
+---------------------+

序列圖核心元素

  • 生命線:參與者/物件的垂直虛線,頂端為類別名稱。
  • 訊息:實線箭頭(同步呼叫)、虛線箭頭(回傳/非同步)、實線實心箭頭(建立物件)。
  • 片段:alt(替選)、opt(可選)、loop(迴圈)、par(平行)。

活動圖核心元素

  • 動作:圓角矩形,代表具體步驟。
  • 決策/合併節點:菱形,守衛條件控制流向。
  • 分叉/合併:粗實線,平行執行與同步等待。
  • 游泳道:垂直/水平分區,劃分職責(如前台/後台/系統)。

繪圖工具推薦

  • PlantUML:文字描述生成圖表,版控友善,IDE 整合佳。
  • Mermaid:Markdown 內嵌,GitHub/GitLab 原生渲染。
  • StarUML / Visual Paradigm:GUI 拖拉,適合正式文件產出。
  • draw.io (diagrams.net):免費線上/離線,雲端同步。

PlantUML 快速範例

@startuml
class User {
    - id: Long
    - name: String
    + getName(): String
}
class Order {
    - id: Long
    - user: User
    + getUser(): User
}
Order *-- User : "聚合/關聯"
@enduml

最佳實踐建議

  1. 根據溝通對象選擇圖類:業務溝通用用例圖/活動圖;技術設計用類別圖/序列圖。
  2. 圖表聚焦單一主題,避免一圖塞滿所有細節。
  3. 關係箭頭方向指向被依賴/被繼承者,別畫反。
  4. 配合刻板印象(<<interface>>、<<entity>>、<<service>>)增強語意。
  5. 將圖表納入版本控制(PlantUML/Mermaid 原始碼),實現文件與代碼同步演進。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved