在UML(統一建模語言)中,**用例圖(Use Case Diagram)和類圖(Class Diagram)**是兩種最常用的圖表類型,分別用于描述系統的高層功能和靜態結構。以下是它們的核心概念、用途及區別:
1. 用例圖(Use Case Diagram)
用途
描述系統的功能需求和用戶(或其他系統)與系統的交互,聚焦于**“系統做什么”**,而不關心具體實現細節。
核心元素
-
參與者(Actor):系統外部的實體(如用戶、外部系統),用小人圖標表示。
-
用例(Use Case):系統提供的功能單元,用橢圓表示,描述參與者與系統的交互。
-
關系:
-
關聯(Association):參與者與用例之間的連線,表示交互。
-
包含(Include):一個用例必須調用另一個用例(如“支付”必須包含“驗證密碼”)。
-
擴展(Extend):一個用例在特定條件下擴展另一個用例(如“訂單”可能擴展“申請折扣”)。
-
泛化(Generalization):用例或參與者之間的繼承關系(如“VIP用戶”繼承自“普通用戶”)。
-
示例場景
-
在線購物系統中:
-
參與者:顧客、管理員、支付系統。
-
用例:瀏覽商品、下單、支付、管理庫存。
-
特點
-
面向用戶視角,易于與非技術人員溝通。
-
不涉及實現細節(如類、方法)。
2. 類圖(Class Diagram)
用途
描述系統的靜態結構,展示類、接口、屬性、方法以及它們之間的關系,聚焦于**“系統如何構建”**。
核心元素
-
類(Class):矩形框,分三部分:類名、屬性(字段)、方法(操作)。
-
關系:
-
關聯(Association):類之間的引用(如“學生”與“課程”)。
-
聚合(Aggregation):弱“整體-部分”關系(如“汽車”與“輪胎”)。
-
組合(Composition):強“整體-部分”關系,生命周期一致(如“公司”與“部門”)。
-
繼承(Generalization):父子類關系(如“動物”與“貓”)。
-
依賴(Dependency):一個類的變化影響另一個類(如“訂單”依賴“支付服務”)。
-
接口實現(Realization):類實現接口(如“PDFGenerator”實現“IExport”)。
-
示例場景
-
電商系統中的類:
-
Product
(屬性:id, name;方法:getPrice())。 -
Order
(關聯Product
,依賴PaymentService
)。
-
特點
-
面向開發者,指導代碼實現。
-
可標注多重性(如1對多)、可見性(+public, -private)。
關鍵區別
維度 | 用例圖 | 類圖 |
---|---|---|
目的 | 描述系統功能需求(做什么) | 描述系統靜態結構(如何構建) |
受眾 | 用戶、需求分析師 | 開發者、架構師 |
內容 | 參與者、用例、功能流程 | 類、屬性、方法、關系 |
抽象級別 | 高層次,不涉及實現 | 低層次,直接映射代碼 |
實際應用中的聯系
-
從用例圖到類圖:用例圖中的功能需求可轉化為類圖中的類和方法。
-
例如,“支付”用例可能對應類圖中的
Payment
類、processPayment()
方法。
-
-
互補性:用例圖定義需求邊界,類圖實現這些需求的具體結構。
通過結合這兩種圖,可以從需求分析平滑過渡到系統設計,確保開發與用戶期望一致。