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