您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關UML對象圖的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
1.UML對象圖
對象圖用于描述被建模系統的模型元素實例之間的結構化信息,其所表達的是特定時間被建模系統在結構上的部分或是全部視圖。一個UML對象圖主要集中在特定的對象實例和其槽,以及實例之間的連接。同一個類圖所對應的對象圖可以有多個,多個對象圖合在一起共同展示了隨著時間的推移,在不同時間點系統的對象狀態。與類圖的抽象性相比,對象圖是具體的,其通常用來提供所對應類圖的結構示例,或者作為所對應類圖的測試用例。應當說每一幅對象圖都有其側重點,因而,每一幅對象圖應當只側重表達其所側重內容。
在UML中,對象實例是采用實例規范(instancespecification參見1.1)來表示的,對象實例所具有的結構化特性(feature)是采用槽(slot,參見1.2)來表示的,對象實例與對象實例之間的關系則是采用連接(link,參見1.3)來表示。與類圖相對比,實例對應于類對象,槽對應于類屬性的實例,而連接則對應于類與類之間關聯的實例。有了這些對應關系,在掌握了類圖的情況下,就更加的容易理解和掌握對象圖了。
圖1.1是對象圖相關建模元素在UML規范中的語法定義,后面在講解具體的概念時我們會更加具體的說明。
圖1.1類圖元素在UML規范中的語法
1.1實例規范
UML對象圖實例規范(instancespecification,參見USS的7.3.22節)是用于表示被建模系統中的實例實體,它描述了模型實例實體的部分或是全部。我們平時編程時,口頭上所說的實例,在UML中就稱之為實例規范。實例規范所描述的內容可能包括:
1)一個或是多個實例所屬的分類器。在實例規范中一個分類器如果是類,那么它所描述的是這個類的對象;如果一個分類器是關聯,那么它所描述的是這個關聯的一個連接。
2)結構化特性的值。結構化特性對應于類的屬性用于描述類的結構組成,在類圖中行為化特性是采用操作(operation)來表示的,而在對象圖中并不表示類的行為特性。在實例規范中,我們并不是一定要表示所有實例的所有結構化特性。
3)如何計算、推導或是構造實例。
一個實例規范用于指示被建模系統中存在的實體,在實例規范中其信息可以是不完整的,其只側重于表達所關心的信息。從圖1.1可以得到以下信息:
1)一個實例規范是一個可打包元素,因為一個InstanceSpecification“是一個”PackageableElement。
2)一個實例規范可以包含任意多個的槽,這從其slots組成屬性可以看出。
3)一個實例規范最多可以包含一個值規范(valuespecification,參見USS的7.3.54節),這從其specification組成屬性可以看出。簡單地說,值規范就是表示對于一個對象的可取值范圍是什么。
4)一個實例規范可以包含任意多個的分類器,這從其classifiers關聯屬性可以看出。
一個實例規范可以包括槽,而每一個槽實際上是一個結構化特性的表達。UML對象圖中實例規范是一個或是多個分類器的對象實例,因此,它是遵循分類器所定義的結構或是(和)行為規范的。一個沒有槽的實例規范,并不是表示它沒有結構化的特性,因為有可能那些結構特性并不是這一對象圖所關心的。
需要注意的是實例規范并不是被建模系統運行時的精確描述,而只是一個示例,其只是表示了相關的結構信息。我們不能從實例規范中推導任何的運行時對象結構方面的詳細信息。
圖1.2是一個使用實例規范的一個例子,其中每一個矩形框都是一個實例規范。圖1.3是其所對應的類圖。其中my_car是一個不帶有槽的實例,而其它的Window實例都是帶有兩個槽。你會注意到,實例規范的表示方法與類圖中的類是相似的,但也有以下的區別:
1)其名稱下面具有一根下劃線,在線上標明了這一實例的名稱以及其所屬的分類器),實例名與分類器之間采用‘:’進行分割,而如果有多個所屬分類器,那么分類器之間采用逗號分開。圖1.2中所有的實例規范都只有一個分類器,比如my_car所屬分類器是Car類,也就是說my_car是Car類的一個實例,而front_left、front_right、rear_left和rear_right都分別是Window類的一個實例。
2)槽對應于類中的屬性,但其在實例規范中都會有值。如果沒有值那么通常不用在實例規范中表示出來。
圖1.2使用實例規范的一個例子
圖1.3圖1.2對象圖所對應的類圖
圖1.2是一個相對簡單的UML對象圖,而在現實應用中,我們可以通過多個對象圖來展現同樣的實例在不同時間點時各實例的狀態,不同的狀態是通過槽的不同值來表達的。比如,我們可以采用對象圖來表示一個算法,而對于同一算法在不同時間點各實例的狀態(表現在槽的值不同)采用不同的對象圖來表示。
1.2槽
槽(slot,參見USS的7.3.48節)是用于表示實例規范中被建模實體結構特征的值,槽對應于類圖中類的屬性,是類屬性的實例,而屬性是類的結構化特性的描述。從圖1.1中可以看出,一個槽具有三個屬性:
1)definingFeature表示這一槽所對應的結構化特性是什么。
2)owningInstance表示這一槽是屬于哪一個實例規范的。
3)value指示槽的值是多少。
圖1.2中每一個Window實例規范都有兩個槽。其中name槽的definingFeature應當就是窗口名稱,顯然name槽的owningInstance是各Window實例,而value對于每一個Window實例就不同了,有的叫“frontleft”,也有的叫“rearleft”。相類似地,is_automatic槽用于表示每一個車窗是不是自動的。
1.3連接
在UML規范中沒有專門用于介紹連接(link)的章節,但在實例規范章節中有所提及。其定義了實例規范之間的關系,從類圖的角度來看,一個連接就是一個關聯關系的實例。圖1.2中示例了Car類實例規范與Window類實例規范之間的四個連接。對比圖1.2和圖1.3我們可以發現,圖1.2中的四個連接都是圖1.3中關聯關系的實例。
感謝各位的閱讀!關于“UML對象圖的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。