[跟我学UML] UML中的对象图
生活随笔
收集整理的這篇文章主要介紹了
[跟我学UML] UML中的对象图
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
縮略語
??? UIS????? UML Infrastructure Specification?? UML基礎結構規范
??? UML????Unifed Modeling Language??????????? 統一建模語言
??? USS????UML Superstructure Specification??UML上層結構規范
參考資料
???? 《UML Infrastructure Specification, v2.2》
???? 《UML Superstructure Specification, v2.2》
???? 《UML類圖中的關聯、聚合和組合》
???? 《UML類圖中的依賴》
???? 《UML類圖中的泛化》
???? 《UML類圖中的類》
???? 《UML包圖中的包和命名空間》
1 對象圖
??? 對象圖用于描述被建模系統的模型元素實例之間的結構化信息,其所表達的是特定時間被建模系統在結構上的部分或是全部視圖。一個對象圖主要集中在特定的對象實例和其槽,以及實例之間的連接。同一個類圖所對應的對象圖可以有多個,多個對象圖合在一起共同展示了隨著時間的推移,在不同時間點系統的對象狀態。與類圖的抽象性相比,對象圖是具體的,其通常用來提供所對應類圖的結構示例,或者作為所對應類圖的測試用例。應當說每一幅對象圖都有其側重點,因而,每一幅對象圖應當只側重表達其所側重內容。
???
??? 在UML中,對象實例是采用實例規范(instance specification參見1.1)來表示的,對象實例所具有的結構化特性(feature)是采用槽(slot,參見1.2)來表示的,對象實例與對象實例之間的關系則是采用連接(link,參見1.3)來表示。與類圖相對比,實例對應于類對象,槽對應于類屬性的實例,而連接則對應于類與類之間關聯的實例。有了這些對應關系,在掌握了類圖的情況下,就更加的容易理解和掌握對象圖了。
???
??? 圖 1.1是對象圖相關建模元素在UML規范中的語法定義,后面在講解具體的概念時我們會更加具體的說明。
圖 1.1 類圖元素在UML規范中的語法
1.1 實例規范
??? 實例規范(instance specification,參見USS的7.3.22節)是用于表示被建模系統中的實例實體,它描述了模型實例實體的部分或是全部。我們平時編程時,口頭上所說的實例,在UML中就稱之為實例規范。實例規范所描述的內容可能包括:
??? 1)一個或是多個實例所屬的分類器。在實例規范中一個分類器如果是類,那么它所描述的是這個類的對象;如果一個分類器是關聯,那么它所描述的是這個關聯的一個連接。
??? 2)結構化特性的值。結構化特性對應于類的屬性用于描述類的結構組成,在類圖中行為化特性是采用操作(operation)來表示的,而在對象圖中并不表示類的行為特性。在實例規范中,我們并不是一定要表示所有實例的所有結構化特性。
??? 3)如何計算、推導或是構造實例。
???
??? 一個實例規范用于指示被建模系統中存在的實體,在實例規范中其信息可以是不完整的,其只側重于表達所關心的信息。從圖 1.1可以得到以下信息:
??? 1)一個實例規范是一個可打包元素,因為一個InstanceSpecification“是一個”PackageableElement。
??? 2)一個實例規范可以包含任意多個的槽,這從其slots組成屬性可以看出。
??? 3)一個實例規范最多可以包含一個值規范(value specification,參見USS的7.3.54節),這從其specification組成屬性可以看出。簡單地說,值規范就是表示對于一個對象的可取值范圍是什么。
??? 4)一個實例規范可以包含任意多個的分類器,這從其classifiers關聯屬性可以看出。
???
??? 一個實例規范可以包括槽,而每一個槽實際上是一個結構化特性的表達。實例規范是一個或是多個分類器的對象實例,因此,它是遵循分類器所定義的結構或是(和)行為規范的。一個沒有槽的實例規范,并不是表示它沒有結構化的特性,因為有可能那些結構特性并不是這一對象圖所關心的。
???
??? 需要注意的是實例規范并不是被建模系統運行時的精確描述,而只是一個示例,其只是表示了相關的結構信息。我們不能從實例規范中推導任何的運行時對象結構方面的詳細信息。
???
??? 圖 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是一個相對簡單的對象圖,而在現實應用中,我們可以通過多個對象圖來展現同樣的實例在不同時間點時各實例的狀態,不同的狀態是通過槽的不同值來表達的。比如,我們可以采用對象圖來表示一個算法,而對于同一算法在不同時間點各實例的狀態(表現在槽的值不同)采用不同的對象圖來表示。
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實例就不同了,有的叫“front left”,也有的叫“rear left”。相類似地,is_automatic槽用于表示每一個車窗是不是自動的。
1.3 連接
??? 在UML規范中沒有專門用于介紹連接(link)的章節,但在實例規范章節中有所提及。其定義了實例規范之間的關系,從類圖的角度來看,一個連接就是一個關聯關系的實例。圖 1.2中示例了Car類實例規范與Window類實例規范之間的四個連接。對比圖 1.2和圖 1.3我們可以發現,圖 1.2中的四個連接都是圖 1.3中關聯關系的實例。
2 總結
??? 對象圖用于表示被建模系統中不同對象在不同時間點的結構狀態快照,其所表達的是類圖中更為細化的結構化信息。當我們掌握了類圖后,學習對象圖就相對的簡單了許多。
致讀者
??? 如果你想參與討論UML相關的話題,請加入UML技術圈(g.51cto.com/UltraUML)。
??? UIS????? UML Infrastructure Specification?? UML基礎結構規范
??? UML????Unifed Modeling Language??????????? 統一建模語言
??? USS????UML Superstructure Specification??UML上層結構規范
參考資料
???? 《UML Infrastructure Specification, v2.2》
???? 《UML Superstructure Specification, v2.2》
???? 《UML類圖中的關聯、聚合和組合》
???? 《UML類圖中的依賴》
???? 《UML類圖中的泛化》
???? 《UML類圖中的類》
???? 《UML包圖中的包和命名空間》
1 對象圖
??? 對象圖用于描述被建模系統的模型元素實例之間的結構化信息,其所表達的是特定時間被建模系統在結構上的部分或是全部視圖。一個對象圖主要集中在特定的對象實例和其槽,以及實例之間的連接。同一個類圖所對應的對象圖可以有多個,多個對象圖合在一起共同展示了隨著時間的推移,在不同時間點系統的對象狀態。與類圖的抽象性相比,對象圖是具體的,其通常用來提供所對應類圖的結構示例,或者作為所對應類圖的測試用例。應當說每一幅對象圖都有其側重點,因而,每一幅對象圖應當只側重表達其所側重內容。
???
??? 在UML中,對象實例是采用實例規范(instance specification參見1.1)來表示的,對象實例所具有的結構化特性(feature)是采用槽(slot,參見1.2)來表示的,對象實例與對象實例之間的關系則是采用連接(link,參見1.3)來表示。與類圖相對比,實例對應于類對象,槽對應于類屬性的實例,而連接則對應于類與類之間關聯的實例。有了這些對應關系,在掌握了類圖的情況下,就更加的容易理解和掌握對象圖了。
???
??? 圖 1.1是對象圖相關建模元素在UML規范中的語法定義,后面在講解具體的概念時我們會更加具體的說明。
圖 1.1 類圖元素在UML規范中的語法
1.1 實例規范
??? 實例規范(instance specification,參見USS的7.3.22節)是用于表示被建模系統中的實例實體,它描述了模型實例實體的部分或是全部。我們平時編程時,口頭上所說的實例,在UML中就稱之為實例規范。實例規范所描述的內容可能包括:
??? 1)一個或是多個實例所屬的分類器。在實例規范中一個分類器如果是類,那么它所描述的是這個類的對象;如果一個分類器是關聯,那么它所描述的是這個關聯的一個連接。
??? 2)結構化特性的值。結構化特性對應于類的屬性用于描述類的結構組成,在類圖中行為化特性是采用操作(operation)來表示的,而在對象圖中并不表示類的行為特性。在實例規范中,我們并不是一定要表示所有實例的所有結構化特性。
??? 3)如何計算、推導或是構造實例。
???
??? 一個實例規范用于指示被建模系統中存在的實體,在實例規范中其信息可以是不完整的,其只側重于表達所關心的信息。從圖 1.1可以得到以下信息:
??? 1)一個實例規范是一個可打包元素,因為一個InstanceSpecification“是一個”PackageableElement。
??? 2)一個實例規范可以包含任意多個的槽,這從其slots組成屬性可以看出。
??? 3)一個實例規范最多可以包含一個值規范(value specification,參見USS的7.3.54節),這從其specification組成屬性可以看出。簡單地說,值規范就是表示對于一個對象的可取值范圍是什么。
??? 4)一個實例規范可以包含任意多個的分類器,這從其classifiers關聯屬性可以看出。
???
??? 一個實例規范可以包括槽,而每一個槽實際上是一個結構化特性的表達。實例規范是一個或是多個分類器的對象實例,因此,它是遵循分類器所定義的結構或是(和)行為規范的。一個沒有槽的實例規范,并不是表示它沒有結構化的特性,因為有可能那些結構特性并不是這一對象圖所關心的。
???
??? 需要注意的是實例規范并不是被建模系統運行時的精確描述,而只是一個示例,其只是表示了相關的結構信息。我們不能從實例規范中推導任何的運行時對象結構方面的詳細信息。
???
??? 圖 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是一個相對簡單的對象圖,而在現實應用中,我們可以通過多個對象圖來展現同樣的實例在不同時間點時各實例的狀態,不同的狀態是通過槽的不同值來表達的。比如,我們可以采用對象圖來表示一個算法,而對于同一算法在不同時間點各實例的狀態(表現在槽的值不同)采用不同的對象圖來表示。
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實例就不同了,有的叫“front left”,也有的叫“rear left”。相類似地,is_automatic槽用于表示每一個車窗是不是自動的。
1.3 連接
??? 在UML規范中沒有專門用于介紹連接(link)的章節,但在實例規范章節中有所提及。其定義了實例規范之間的關系,從類圖的角度來看,一個連接就是一個關聯關系的實例。圖 1.2中示例了Car類實例規范與Window類實例規范之間的四個連接。對比圖 1.2和圖 1.3我們可以發現,圖 1.2中的四個連接都是圖 1.3中關聯關系的實例。
2 總結
??? 對象圖用于表示被建模系統中不同對象在不同時間點的結構狀態快照,其所表達的是類圖中更為細化的結構化信息。當我們掌握了類圖后,學習對象圖就相對的簡單了許多。
致讀者
??? 如果你想參與討論UML相關的話題,請加入UML技術圈(g.51cto.com/UltraUML)。
總結
以上是生活随笔為你收集整理的[跟我学UML] UML中的对象图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用curl验证ssl网站(webser
- 下一篇: 2016年4月 之 《C程序设计语言》