UML - 物件圖



物件圖是從類圖派生的,因此物件圖依賴於類圖。

物件圖表示類圖的一個例項。類圖和物件圖的基本概念是相似的。物件圖也表示系統的靜態檢視,但此靜態檢視是系統在特定時刻的快照。

物件圖用於呈現一組物件及其關係作為例項。

物件圖的目的

要實際地實現物件圖,必須清楚地理解其目的。物件圖的目的與類圖類似。

不同之處在於,類圖表示由類及其關係組成的抽象模型。然而,物件圖表示特定時刻的例項,其本質是具體的。

這意味著物件圖更接近實際系統的行為。其目的是捕獲系統在特定時刻的靜態檢視。

物件圖的目的可以概括為:

  • 正向和反向工程。

  • 系統的物件關係

  • 互動的靜態檢視。

  • 從實踐的角度理解物件行為及其關係

如何繪製物件圖?

我們已經討論過,物件圖是類圖的一個例項。這意味著物件圖由類圖中使用的例項組成。

因此,這兩個圖都是由相同的基本元素組成,但形式不同。在類圖中,元素是抽象形式,用於表示藍圖;在物件圖中,元素是具體形式,用於表示現實世界中的物件。

為了捕獲特定系統,類圖的數量是有限的。但是,如果我們考慮物件圖,則可以有無限數量的例項,這些例項本質上是唯一的。只考慮那些對系統有影響的例項。

從上面的討論可以看出,單個物件圖無法捕獲所有必要的例項,或者更確切地說,無法指定系統的全部物件。因此,解決方案是:

  • 首先,分析系統並確定哪些例項具有重要資料和關聯。

  • 其次,只考慮那些能夠覆蓋功能的例項。

  • 第三,進行一些最佳化,因為例項的數量是無限的。

在繪製物件圖之前,應記住並清楚地理解以下幾點:

  • 物件圖由物件組成。

  • 物件圖中的連結用於連線物件。

  • 物件和連結是用於構建物件圖的兩個元素。

之後,在開始構建圖表之前,需要確定以下事項:

  • 物件圖應該有一個有意義的名稱來指示其目的。

  • 要識別最重要的元素。

  • 要闡明物件之間的關聯。

  • 需要捕獲不同元素的值以包含在物件圖中。

  • 在需要更多清晰度的地方新增適當的註釋。

下圖是一個物件圖的示例。它表示我們在類圖章節中討論過的訂單管理系統。下圖是系統在特定購買時間的例項。它包含以下物件:

  • 客戶

  • 訂單

  • 特價訂單

  • 普通訂單

現在,客戶物件 (C) 與三個訂單物件 (O1、O2 和 O3) 關聯。這些訂單物件與特價訂單和普通訂單物件 (S1、S2 和 N1) 關聯。客戶在考慮的特定時間有以下三個訂單,編號分別為 (12、32 和 40)。

客戶將來可以增加訂單數量,在這種情況下,物件圖將反映這一點。如果觀察訂單、特價訂單和普通訂單物件,您會發現它們具有一些值。

對於訂單,值分別為 12、32 和 40,這意味著物件在捕獲例項的特定時刻(此處,購買完成的特定時間被視為時刻)具有這些值。

特價訂單和普通訂單物件也是如此,它們的訂單數量分別為 20、30 和 60。如果考慮不同的購買時間,這些值將相應地發生變化。

下圖是考慮上述所有要點繪製的物件圖。

UML Object Diagram

在何處使用物件圖?

可以將物件圖想象成在特定時刻執行系統的快照。讓我們考慮一個正在執行的火車為例。

現在,如果您拍攝正在執行的火車的照片,您會發現它具有以下靜態影像:

  • 正在執行的特定狀態。

  • 特定數量的乘客,如果在不同的時間拍攝照片,這個數量將會改變。

在這裡,我們可以想象正在執行的火車的照片是一個具有上述值的物體。對於任何現實生活中簡單或複雜的系統,這都是正確的。

簡而言之,可以說物件圖用於:

  • 製作系統的原型。

  • 反向工程。

  • 對複雜資料結構建模。

  • 從實踐的角度理解系統。

廣告