概述
靜態圖包含類圖、對象圖和包圖的主要目的是在系統詳細設計階段,幫助系統設計人員以一種可視化的方式來理解系統的內部結構和代碼結構,包括類的細節、類的屬性和操作、類的依賴關系和調用關系、類的包和包的依賴關系。
對象圖與類圖之間的關系,就好比對象與類之間的關系,對象是賦予了某種特殊值時的類的實例。對象圖擁有與類圖不一樣的表示法和應用場景。
一、對象圖表示法
對象圖用來表示類的實例。對象圖顯示某時刻對象和對象之間的關系,是類圖的變化,一個對象圖可看成一個類圖的實例(Instance),對象圖表示的是類的對象實例而不是真實的類。由于對象存在生命周期,因此對象圖只能在系統某一時間段存在。
與類圖中的表示法一樣,對象圖中并無新的表示法,唯一的區別是對象名下要加下畫線,可以認為,只有對象而無類的類圖就是一個“對象圖”。
如圖 3-15 所示,它表示了類 User 的對象圖。
在對象圖中,對象名可以有3種表示形式:
(1)對象名:類名。
(2):類名。
(3)對象名。
二、對象圖的使用場景–席列圖和協作圖
實際上,對象圖幾乎很少被用到,它包含的信息量太小,僅僅用于呈現某一時刻對象的值,對軟件的設計幾乎沒有太大的幫助,使用遠沒有類圖廣泛。不過它們在解釋復雜關系的細小問題時(特別是遞歸關系時)很有用。例如,一個類圖表示一個大學的Department 可以包括其他很多的Departments。
對于對象圖來說無須提供單獨的形式。類圖中就包含了對象,所以只有對象而無類的類圖就是個“對象圖”。然而,“對象圖”這條短語在刻畫各方面特定使用時非常有用。
對象圖顯示對象集及其聯系,代表了系統某時刻的狀態。它包含帶有值的對象,而非描述符,當然,在許多情況下對象可以是原型。用協作圖可顯示一個可多次實例化的對象及其聯系的總體模型,合作圖包含對象和鏈的描述符(類元角色和聯系角色)。如果協作圖實例化,則產生了對象圖。
對象圖不顯示系統的演化過程,為此目的,可用帶消息的協作圖或用序列圖表示一次交互。例如,如圖3-16所示顯示了一個序列圖,序列圖上方的3個操作對象就是采用對象圖來表示的。
再比如圖 3-17所示的協作圖中,其中的3個操作對象也是采用了對象圖來表示的。