UML對象圖
概述:
對象圖都來源於類圖,依賴類圖對象圖。
對象圖表示一個類圖的一個實例。類圖和對象圖的基本概念是相似的。對象圖也代表了一個系統的靜態視圖,但這種靜態視圖是系統在某一時刻的一個快照。
對象圖是用於呈現一組對象和它們之間的關係作爲一個實例。
目的:
圖的目的應該清楚地理解去實現它。對象圖的目的與類圖類似。
不同的是,一個類圖代表一個抽象的模型,包括類和它們之間的關係。但是,對象圖表示在某一時刻,這在本質上是具體的實例。
這意味着對象圖是更接近實際的系統行爲。目的是在一個特定的時刻捕捉到靜態的系統視圖。
因此,對象圖的目的可概括爲:
正向和逆向工程。
一個系統的對象間的關係
一個交互的靜態視圖。
瞭解對象的行爲和他們的關係從實用的角度來看
如何繪製對象圖?
我們已經討論過的一個對象圖是類圖的一個實例。它意味着一個對象圖包含在類圖中所用的東西的實例。
因此,這兩個圖均採用相同的基本元素,但在不同的形式。在類圖中的元素是抽象的形式來表示藍圖,並在對象圖中元素的具體形式來表示真實世界中的對象。
爲了捕捉一個特定的系統,類圖的數量是有限的。但是,如果我們考慮對象圖,那麼我們就可以有無限數量的實例在本質上是獨一無二的。因此,只有這些情況下被認爲是對系統的影響。
從上面的討論,很顯然,一個單一的對象圖不能捕獲所有必要的實例,而不能指定一個系統的所有對象。因此,解決方案是:
首先,分析系統,並決定哪些情況下有重要的數據和關聯。
其次,只考慮那些實例將涵蓋功能。
第三,做一些優化實例的數量是無限的。
繪製對象圖之前,應該記住以下事情,並清楚地理解:
對象圖是由對象。
對象圖中的鏈接是用來連接對象。
對象和鏈接的兩個要素,用於構造一個對象圖。
在開始構建圖前,現在來決定下列事項:
對象圖應該有一個有意義的名稱,以表明其目的。
最重要的要素是要確定。
對象之間的關聯,應該予以明確。
不同元素的值需要捕獲包含在對象圖。
添加適當的註釋,需要更清晰點。
下面的圖是一個對象圖的一個例子。它代表了訂單管理系統,我們已經討論了在類圖。下圖是該系統的一個實例,在一個特定的時間購買。它具有以下的對象
顧客
訂單
特殊訂單
一般訂單
現在客戶對象(C)是與三階對象(O1,O2和O3)。這些訂單對象相關聯的特殊訂單和一般訂單對象(S1,S2和N1)。顧客具有以下三個具有不同數目的訂單(12,32和40),用於所考慮的特定的時間。
現在,客戶可以在將來增加的訂單數量,在這種情況下對象圖將反映。如果訂單、特殊訂單和正常秩訂單對象那麼觀察會發現,他們有一些值。
訂單的值是12,32和40,這意味着,這些對象都擁有這些實例時,捕獲特定時刻的值(這裏是購買時的時刻被視爲特定時間)。
相同特別訂訂單和正常訂單對象所具有的訂單數分別爲20,30和60。如果被認爲是一個不同的時間購買,那麼這些值將發生相應的變化。
因此,下面的對象圖已經繪就考慮到所有上述提到的幾點:
在哪裏使用對象圖?
對象圖可以被想象成正在運行的系統在某一時刻的快照。現在加以闡明,我們可以舉一個例子,一個正在運行的列車。
現在,如果把一個單元列車運行,那麼會發現它具有以下靜態圖片:
這是一個特別的狀態運行
一個特定的乘客數量。如果捕捉在不同的時間,這將在不斷改變。
所以,在這裏我們可以想像的列車運行的管理單元是一個對象,具有上述值。任何現實生活中的簡單或複雜的系統而且的確如此。在一個簡短的,對象圖用於:
使一個系統的原型。
逆向工程。
造型複雜的數據結構。
從實用的角度瞭解系統。