
- UML 教程
- UML - 首頁
- UML - 概述
- UML - 構建塊
- UML - 架構
- UML - 建模型別
- UML - 基本符號
- UML - 標準圖
- UML - 類圖
- UML - 物件圖
- UML - 元件圖
- UML - 部署圖
- UML - 用例圖
- UML - 互動圖
- UML - 狀態圖
- UML - 活動圖
- UML - 總結
- UML 2.0 概述
- UML 2.0 - 概述
- UML 有用資源
- UML - 有用資源
- UML - 知識測試
- 實用工具
- UML - 工具與實用工具
- UML - 討論
UML - 物件圖
物件圖是從類圖派生的,因此物件圖依賴於類圖。
物件圖表示類圖的一個例項。類圖和物件圖的基本概念是相似的。物件圖也表示系統的靜態檢視,但此靜態檢視是系統在特定時刻的快照。
物件圖用於呈現一組物件及其關係作為例項。
物件圖的目的
要實際地實現物件圖,必須清楚地理解其目的。物件圖的目的與類圖類似。
不同之處在於,類圖表示由類及其關係組成的抽象模型。然而,物件圖表示特定時刻的例項,其本質是具體的。
這意味著物件圖更接近實際系統的行為。其目的是捕獲系統在特定時刻的靜態檢視。
物件圖的目的可以概括為:
正向和反向工程。
系統的物件關係
互動的靜態檢視。
從實踐的角度理解物件行為及其關係
如何繪製物件圖?
我們已經討論過,物件圖是類圖的一個例項。這意味著物件圖由類圖中使用的例項組成。
因此,這兩個圖都是由相同的基本元素組成,但形式不同。在類圖中,元素是抽象形式,用於表示藍圖;在物件圖中,元素是具體形式,用於表示現實世界中的物件。
為了捕獲特定系統,類圖的數量是有限的。但是,如果我們考慮物件圖,則可以有無限數量的例項,這些例項本質上是唯一的。只考慮那些對系統有影響的例項。
從上面的討論可以看出,單個物件圖無法捕獲所有必要的例項,或者更確切地說,無法指定系統的全部物件。因此,解決方案是:
首先,分析系統並確定哪些例項具有重要資料和關聯。
其次,只考慮那些能夠覆蓋功能的例項。
第三,進行一些最佳化,因為例項的數量是無限的。
在繪製物件圖之前,應記住並清楚地理解以下幾點:
物件圖由物件組成。
物件圖中的連結用於連線物件。
物件和連結是用於構建物件圖的兩個元素。
之後,在開始構建圖表之前,需要確定以下事項:
物件圖應該有一個有意義的名稱來指示其目的。
要識別最重要的元素。
要闡明物件之間的關聯。
需要捕獲不同元素的值以包含在物件圖中。
在需要更多清晰度的地方新增適當的註釋。
下圖是一個物件圖的示例。它表示我們在類圖章節中討論過的訂單管理系統。下圖是系統在特定購買時間的例項。它包含以下物件:
客戶
訂單
特價訂單
普通訂單
現在,客戶物件 (C) 與三個訂單物件 (O1、O2 和 O3) 關聯。這些訂單物件與特價訂單和普通訂單物件 (S1、S2 和 N1) 關聯。客戶在考慮的特定時間有以下三個訂單,編號分別為 (12、32 和 40)。
客戶將來可以增加訂單數量,在這種情況下,物件圖將反映這一點。如果觀察訂單、特價訂單和普通訂單物件,您會發現它們具有一些值。
對於訂單,值分別為 12、32 和 40,這意味著物件在捕獲例項的特定時刻(此處,購買完成的特定時間被視為時刻)具有這些值。
特價訂單和普通訂單物件也是如此,它們的訂單數量分別為 20、30 和 60。如果考慮不同的購買時間,這些值將相應地發生變化。
下圖是考慮上述所有要點繪製的物件圖。

在何處使用物件圖?
可以將物件圖想象成在特定時刻執行系統的快照。讓我們考慮一個正在執行的火車為例。
現在,如果您拍攝正在執行的火車的照片,您會發現它具有以下靜態影像:
正在執行的特定狀態。
特定數量的乘客,如果在不同的時間拍攝照片,這個數量將會改變。
在這裡,我們可以想象正在執行的火車的照片是一個具有上述值的物體。對於任何現實生活中簡單或複雜的系統,這都是正確的。
簡而言之,可以說物件圖用於:
製作系統的原型。
反向工程。
對複雜資料結構建模。
從實踐的角度理解系統。