UML對象圖

概述:

對象圖都來源於類圖,依賴類圖對象圖。

對象圖表示一個類圖的一個實例。類圖和對象圖的基本概念是相似的。對象圖也代表了一個系統的靜態視圖,但這種靜態視圖是系統在某一時刻的一個快照。

對象圖是用於呈現一組對象和它們之間的關係作爲一個實例。

目的:

圖的目的應該清楚地理解去實現它。對象圖的目的與類圖類似。

不同的是,一個類圖代表一個抽象的模型,包括類和它們之間的關係。但是,對象圖表示在某一時刻,這在本質上是具體的實例。

這意味着對象圖是更接近實際的系統行爲。目的是在一個特定的時刻捕捉到靜態的系統視圖。

因此,對象圖的目的可概括爲:

  • 正向和逆向工程。

  • 一個系統的對象間的關係

  • 一個交互的靜態視圖。

  • 瞭解對象的行爲和他們的關係從實用的角度來看

如何繪製對象圖?

我們已經討論過的一個對象圖是類圖的一個實例。它意味着一個對象圖包含在類圖中所用的東西的實例。

因此,這兩個圖均採用相同的基本元素,但在不同的形式。在類圖中的元素是抽象的形式來表示藍圖,並在對象圖中元素的具體形式來表示真實世界中的對象。

爲了捕捉一個特定的系統,類圖的數量是有限的。但是,如果我們考慮對象圖,那麼我們就可以有無限數量的實例在本質上是獨一無二的。因此,只有這些情況下被認爲是對系統的影響。

從上面的討論,很顯然,一個單一的對象圖不能捕獲所有必要的實例,而不能指定一個系統的所有對象。因此,解決方案是:

  • 首先,分析系統,並決定哪些情況下有重要的數據和關聯。

  • 其次,只考慮那些實例將涵蓋功能。

  • 第三,做一些優化實例的數量是無限的。

繪製對象圖之前,應該記住以下事情,並清楚地理解:

  • 對象圖是由對象。

  • 對象圖中的鏈接是用來連接對象。

  • 對象和鏈接的兩個要素,用於構造一個對象圖。

在開始構建圖前,現在來決定下列事項:

  • 對象圖應該有一個有意義的名稱,以表明其目的。

  • 最重要的要素是要確定。

  • 對象之間的關聯,應該予以明確。

  • 不同元素的值需要捕獲包含在對象圖。

  • 添加適當的註釋,需要更清晰點。

下面的圖是一個對象圖的一個例子。它代表了訂單管理系統,我們已經討論了在類圖。下圖是該系統的一個實例,在一個特定的時間購買。它具有以下的對象

  • 顧客

  • 訂單

  • 特殊訂單

  • 一般訂單

現在客戶對象(C)是與三階對象(O1,O2和O3)。這些訂單對象相關聯的特殊訂單和一般訂單對象(S1,S2和N1)。顧客具有以下三個具有不同數目的訂單(12,32和40),用於所考慮的特定的時間。

現在,客戶可以在將來增加的訂單數量,在這種情況下對象圖將反映。如果訂單、特殊訂單和正常秩訂單對象那麼觀察會發現,他們有一些值。

訂單的值是12,32和40,這意味着,這些對象都擁有這些實例時,捕獲特定時刻的值(這裏是購買時的時刻被視爲特定時間)。

相同特別訂訂單和正常訂單對象所具有的訂單數分別爲20,30和60。如果被認爲是一個不同的時間購買,那麼這些值將發生相應的變化。

因此,下面的對象圖已經繪就考慮到所有上述提到的幾點:

UML

在哪裏使用對象圖?

對象圖可以被想象成正在運行的系統在某一時刻的快照。現在加以闡明,我們可以舉一個例子,一個正在運行的列車。

現在,如果把一個單元列車運行,那麼會發現它具有以下靜態圖片:

  • 這是一個特別的狀態運行

  • 一個特定的乘客數量。如果捕捉在不同的時間,這將在不斷改變。

所以,在這裏我們可以想像的列車運行的管理單元是一個對象,具有上述值。任何現實生活中的簡單或複雜的系統而且的確如此。在一個簡短的,對象圖用於:

  • 使一個系統的原型。

  • 逆向工程。

  • 造型複雜的數據結構。

  • 從實用的角度瞭解系統。