[跟我学UML] UML中的对象图
生活随笔
收集整理的這篇文章主要介紹了
[跟我学UML] UML中的对象图
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
縮略語
??? UIS????? UML Infrastructure Specification?? UML基礎(chǔ)結(jié)構(gòu)規(guī)范
??? UML????Unifed Modeling Language??????????? 統(tǒng)一建模語言
??? USS????UML Superstructure Specification??UML上層結(jié)構(gòu)規(guī)范
參考資料
???? 《UML Infrastructure Specification, v2.2》
???? 《UML Superstructure Specification, v2.2》
???? 《UML類圖中的關(guān)聯(lián)、聚合和組合》
???? 《UML類圖中的依賴》
???? 《UML類圖中的泛化》
???? 《UML類圖中的類》
???? 《UML包圖中的包和命名空間》
1 對象圖
??? 對象圖用于描述被建模系統(tǒng)的模型元素實(shí)例之間的結(jié)構(gòu)化信息,其所表達(dá)的是特定時間被建模系統(tǒng)在結(jié)構(gòu)上的部分或是全部視圖。一個對象圖主要集中在特定的對象實(shí)例和其槽,以及實(shí)例之間的連接。同一個類圖所對應(yīng)的對象圖可以有多個,多個對象圖合在一起共同展示了隨著時間的推移,在不同時間點(diǎn)系統(tǒng)的對象狀態(tài)。與類圖的抽象性相比,對象圖是具體的,其通常用來提供所對應(yīng)類圖的結(jié)構(gòu)示例,或者作為所對應(yīng)類圖的測試用例。應(yīng)當(dāng)說每一幅對象圖都有其側(cè)重點(diǎn),因而,每一幅對象圖應(yīng)當(dāng)只側(cè)重表達(dá)其所側(cè)重內(nèi)容。
???
??? 在UML中,對象實(shí)例是采用實(shí)例規(guī)范(instance specification參見1.1)來表示的,對象實(shí)例所具有的結(jié)構(gòu)化特性(feature)是采用槽(slot,參見1.2)來表示的,對象實(shí)例與對象實(shí)例之間的關(guān)系則是采用連接(link,參見1.3)來表示。與類圖相對比,實(shí)例對應(yīng)于類對象,槽對應(yīng)于類屬性的實(shí)例,而連接則對應(yīng)于類與類之間關(guān)聯(lián)的實(shí)例。有了這些對應(yīng)關(guān)系,在掌握了類圖的情況下,就更加的容易理解和掌握對象圖了。
???
??? 圖 1.1是對象圖相關(guān)建模元素在UML規(guī)范中的語法定義,后面在講解具體的概念時我們會更加具體的說明。
圖 1.1 類圖元素在UML規(guī)范中的語法
1.1 實(shí)例規(guī)范
??? 實(shí)例規(guī)范(instance specification,參見USS的7.3.22節(jié))是用于表示被建模系統(tǒng)中的實(shí)例實(shí)體,它描述了模型實(shí)例實(shí)體的部分或是全部。我們平時編程時,口頭上所說的實(shí)例,在UML中就稱之為實(shí)例規(guī)范。實(shí)例規(guī)范所描述的內(nèi)容可能包括:
??? 1)一個或是多個實(shí)例所屬的分類器。在實(shí)例規(guī)范中一個分類器如果是類,那么它所描述的是這個類的對象;如果一個分類器是關(guān)聯(lián),那么它所描述的是這個關(guān)聯(lián)的一個連接。
??? 2)結(jié)構(gòu)化特性的值。結(jié)構(gòu)化特性對應(yīng)于類的屬性用于描述類的結(jié)構(gòu)組成,在類圖中行為化特性是采用操作(operation)來表示的,而在對象圖中并不表示類的行為特性。在實(shí)例規(guī)范中,我們并不是一定要表示所有實(shí)例的所有結(jié)構(gòu)化特性。
??? 3)如何計算、推導(dǎo)或是構(gòu)造實(shí)例。
???
??? 一個實(shí)例規(guī)范用于指示被建模系統(tǒng)中存在的實(shí)體,在實(shí)例規(guī)范中其信息可以是不完整的,其只側(cè)重于表達(dá)所關(guān)心的信息。從圖 1.1可以得到以下信息:
??? 1)一個實(shí)例規(guī)范是一個可打包元素,因?yàn)橐粋€InstanceSpecification“是一個”PackageableElement。
??? 2)一個實(shí)例規(guī)范可以包含任意多個的槽,這從其slots組成屬性可以看出。
??? 3)一個實(shí)例規(guī)范最多可以包含一個值規(guī)范(value specification,參見USS的7.3.54節(jié)),這從其specification組成屬性可以看出。簡單地說,值規(guī)范就是表示對于一個對象的可取值范圍是什么。
??? 4)一個實(shí)例規(guī)范可以包含任意多個的分類器,這從其classifiers關(guān)聯(lián)屬性可以看出。
???
??? 一個實(shí)例規(guī)范可以包括槽,而每一個槽實(shí)際上是一個結(jié)構(gòu)化特性的表達(dá)。實(shí)例規(guī)范是一個或是多個分類器的對象實(shí)例,因此,它是遵循分類器所定義的結(jié)構(gòu)或是(和)行為規(guī)范的。一個沒有槽的實(shí)例規(guī)范,并不是表示它沒有結(jié)構(gòu)化的特性,因?yàn)橛锌赡苣切┙Y(jié)構(gòu)特性并不是這一對象圖所關(guān)心的。
???
??? 需要注意的是實(shí)例規(guī)范并不是被建模系統(tǒng)運(yùn)行時的精確描述,而只是一個示例,其只是表示了相關(guān)的結(jié)構(gòu)信息。我們不能從實(shí)例規(guī)范中推導(dǎo)任何的運(yùn)行時對象結(jié)構(gòu)方面的詳細(xì)信息。
???
??? 圖 1.2是一個使用實(shí)例規(guī)范的一個例子,其中每一個矩形框都是一個實(shí)例規(guī)范。圖 1.3是其所對應(yīng)的類圖。其中my_car是一個不帶有槽的實(shí)例,而其它的Window實(shí)例都是帶有兩個槽。你會注意到,實(shí)例規(guī)范的表示方法與類圖中的類是相似的,但也有以下的區(qū)別:
??? 1)其名稱下面具有一根下劃線,在線上標(biāo)明了這一實(shí)例的名稱以及其所屬的分類器),實(shí)例名與分類器之間采用‘:’進(jìn)行分割,而如果有多個所屬分類器,那么分類器之間采用逗號分開。圖 1.2中所有的實(shí)例規(guī)范都只有一個分類器,比如my_car所屬分類器是Car類,也就是說my_car是Car類的一個實(shí)例,而front_left、front_right、rear_left和rear_right都分別是Window類的一個實(shí)例。
??? 2)槽對應(yīng)于類中的屬性,但其在實(shí)例規(guī)范中都會有值。如果沒有值那么通常不用在實(shí)例規(guī)范中表示出來。
圖 1.2 使用實(shí)例規(guī)范的一個例子
圖 1.3 圖 1.2對象圖所對應(yīng)的類圖
??? 圖 1.2是一個相對簡單的對象圖,而在現(xiàn)實(shí)應(yīng)用中,我們可以通過多個對象圖來展現(xiàn)同樣的實(shí)例在不同時間點(diǎn)時各實(shí)例的狀態(tài),不同的狀態(tài)是通過槽的不同值來表達(dá)的。比如,我們可以采用對象圖來表示一個算法,而對于同一算法在不同時間點(diǎn)各實(shí)例的狀態(tài)(表現(xiàn)在槽的值不同)采用不同的對象圖來表示。
1.2 槽
??? 槽(slot,參見USS的7.3.48節(jié))是用于表示實(shí)例規(guī)范中被建模實(shí)體結(jié)構(gòu)特征的值,槽對應(yīng)于類圖中類的屬性,是類屬性的實(shí)例,而屬性是類的結(jié)構(gòu)化特性的描述。從圖 1.1中可以看出,一個槽具有三個屬性:
??? 1)definingFeature表示這一槽所對應(yīng)的結(jié)構(gòu)化特性是什么。
??? 2)owningInstance表示這一槽是屬于哪一個實(shí)例規(guī)范的。
??? 3)value指示槽的值是多少。
???
??? 圖 1.2中每一個Window實(shí)例規(guī)范都有兩個槽。其中name槽的definingFeature應(yīng)當(dāng)就是窗口名稱,顯然name槽的owningInstance是各 Window實(shí)例,而value對于每一個Window實(shí)例就不同了,有的叫“front left”,也有的叫“rear left”。相類似地,is_automatic槽用于表示每一個車窗是不是自動的。
1.3 連接
??? 在UML規(guī)范中沒有專門用于介紹連接(link)的章節(jié),但在實(shí)例規(guī)范章節(jié)中有所提及。其定義了實(shí)例規(guī)范之間的關(guān)系,從類圖的角度來看,一個連接就是一個關(guān)聯(lián)關(guān)系的實(shí)例。圖 1.2中示例了Car類實(shí)例規(guī)范與Window類實(shí)例規(guī)范之間的四個連接。對比圖 1.2和圖 1.3我們可以發(fā)現(xiàn),圖 1.2中的四個連接都是圖 1.3中關(guān)聯(lián)關(guān)系的實(shí)例。
2 總結(jié)
??? 對象圖用于表示被建模系統(tǒng)中不同對象在不同時間點(diǎn)的結(jié)構(gòu)狀態(tài)快照,其所表達(dá)的是類圖中更為細(xì)化的結(jié)構(gòu)化信息。當(dāng)我們掌握了類圖后,學(xué)習(xí)對象圖就相對的簡單了許多。
致讀者
??? 如果你想?yún)⑴c討論UML相關(guān)的話題,請加入UML技術(shù)圈(g.51cto.com/UltraUML)。
??? UIS????? UML Infrastructure Specification?? UML基礎(chǔ)結(jié)構(gòu)規(guī)范
??? UML????Unifed Modeling Language??????????? 統(tǒng)一建模語言
??? USS????UML Superstructure Specification??UML上層結(jié)構(gòu)規(guī)范
參考資料
???? 《UML Infrastructure Specification, v2.2》
???? 《UML Superstructure Specification, v2.2》
???? 《UML類圖中的關(guān)聯(lián)、聚合和組合》
???? 《UML類圖中的依賴》
???? 《UML類圖中的泛化》
???? 《UML類圖中的類》
???? 《UML包圖中的包和命名空間》
1 對象圖
??? 對象圖用于描述被建模系統(tǒng)的模型元素實(shí)例之間的結(jié)構(gòu)化信息,其所表達(dá)的是特定時間被建模系統(tǒng)在結(jié)構(gòu)上的部分或是全部視圖。一個對象圖主要集中在特定的對象實(shí)例和其槽,以及實(shí)例之間的連接。同一個類圖所對應(yīng)的對象圖可以有多個,多個對象圖合在一起共同展示了隨著時間的推移,在不同時間點(diǎn)系統(tǒng)的對象狀態(tài)。與類圖的抽象性相比,對象圖是具體的,其通常用來提供所對應(yīng)類圖的結(jié)構(gòu)示例,或者作為所對應(yīng)類圖的測試用例。應(yīng)當(dāng)說每一幅對象圖都有其側(cè)重點(diǎn),因而,每一幅對象圖應(yīng)當(dāng)只側(cè)重表達(dá)其所側(cè)重內(nèi)容。
???
??? 在UML中,對象實(shí)例是采用實(shí)例規(guī)范(instance specification參見1.1)來表示的,對象實(shí)例所具有的結(jié)構(gòu)化特性(feature)是采用槽(slot,參見1.2)來表示的,對象實(shí)例與對象實(shí)例之間的關(guān)系則是采用連接(link,參見1.3)來表示。與類圖相對比,實(shí)例對應(yīng)于類對象,槽對應(yīng)于類屬性的實(shí)例,而連接則對應(yīng)于類與類之間關(guān)聯(lián)的實(shí)例。有了這些對應(yīng)關(guān)系,在掌握了類圖的情況下,就更加的容易理解和掌握對象圖了。
???
??? 圖 1.1是對象圖相關(guān)建模元素在UML規(guī)范中的語法定義,后面在講解具體的概念時我們會更加具體的說明。
圖 1.1 類圖元素在UML規(guī)范中的語法
1.1 實(shí)例規(guī)范
??? 實(shí)例規(guī)范(instance specification,參見USS的7.3.22節(jié))是用于表示被建模系統(tǒng)中的實(shí)例實(shí)體,它描述了模型實(shí)例實(shí)體的部分或是全部。我們平時編程時,口頭上所說的實(shí)例,在UML中就稱之為實(shí)例規(guī)范。實(shí)例規(guī)范所描述的內(nèi)容可能包括:
??? 1)一個或是多個實(shí)例所屬的分類器。在實(shí)例規(guī)范中一個分類器如果是類,那么它所描述的是這個類的對象;如果一個分類器是關(guān)聯(lián),那么它所描述的是這個關(guān)聯(lián)的一個連接。
??? 2)結(jié)構(gòu)化特性的值。結(jié)構(gòu)化特性對應(yīng)于類的屬性用于描述類的結(jié)構(gòu)組成,在類圖中行為化特性是采用操作(operation)來表示的,而在對象圖中并不表示類的行為特性。在實(shí)例規(guī)范中,我們并不是一定要表示所有實(shí)例的所有結(jié)構(gòu)化特性。
??? 3)如何計算、推導(dǎo)或是構(gòu)造實(shí)例。
???
??? 一個實(shí)例規(guī)范用于指示被建模系統(tǒng)中存在的實(shí)體,在實(shí)例規(guī)范中其信息可以是不完整的,其只側(cè)重于表達(dá)所關(guān)心的信息。從圖 1.1可以得到以下信息:
??? 1)一個實(shí)例規(guī)范是一個可打包元素,因?yàn)橐粋€InstanceSpecification“是一個”PackageableElement。
??? 2)一個實(shí)例規(guī)范可以包含任意多個的槽,這從其slots組成屬性可以看出。
??? 3)一個實(shí)例規(guī)范最多可以包含一個值規(guī)范(value specification,參見USS的7.3.54節(jié)),這從其specification組成屬性可以看出。簡單地說,值規(guī)范就是表示對于一個對象的可取值范圍是什么。
??? 4)一個實(shí)例規(guī)范可以包含任意多個的分類器,這從其classifiers關(guān)聯(lián)屬性可以看出。
???
??? 一個實(shí)例規(guī)范可以包括槽,而每一個槽實(shí)際上是一個結(jié)構(gòu)化特性的表達(dá)。實(shí)例規(guī)范是一個或是多個分類器的對象實(shí)例,因此,它是遵循分類器所定義的結(jié)構(gòu)或是(和)行為規(guī)范的。一個沒有槽的實(shí)例規(guī)范,并不是表示它沒有結(jié)構(gòu)化的特性,因?yàn)橛锌赡苣切┙Y(jié)構(gòu)特性并不是這一對象圖所關(guān)心的。
???
??? 需要注意的是實(shí)例規(guī)范并不是被建模系統(tǒng)運(yùn)行時的精確描述,而只是一個示例,其只是表示了相關(guān)的結(jié)構(gòu)信息。我們不能從實(shí)例規(guī)范中推導(dǎo)任何的運(yùn)行時對象結(jié)構(gòu)方面的詳細(xì)信息。
???
??? 圖 1.2是一個使用實(shí)例規(guī)范的一個例子,其中每一個矩形框都是一個實(shí)例規(guī)范。圖 1.3是其所對應(yīng)的類圖。其中my_car是一個不帶有槽的實(shí)例,而其它的Window實(shí)例都是帶有兩個槽。你會注意到,實(shí)例規(guī)范的表示方法與類圖中的類是相似的,但也有以下的區(qū)別:
??? 1)其名稱下面具有一根下劃線,在線上標(biāo)明了這一實(shí)例的名稱以及其所屬的分類器),實(shí)例名與分類器之間采用‘:’進(jìn)行分割,而如果有多個所屬分類器,那么分類器之間采用逗號分開。圖 1.2中所有的實(shí)例規(guī)范都只有一個分類器,比如my_car所屬分類器是Car類,也就是說my_car是Car類的一個實(shí)例,而front_left、front_right、rear_left和rear_right都分別是Window類的一個實(shí)例。
??? 2)槽對應(yīng)于類中的屬性,但其在實(shí)例規(guī)范中都會有值。如果沒有值那么通常不用在實(shí)例規(guī)范中表示出來。
圖 1.2 使用實(shí)例規(guī)范的一個例子
圖 1.3 圖 1.2對象圖所對應(yīng)的類圖
??? 圖 1.2是一個相對簡單的對象圖,而在現(xiàn)實(shí)應(yīng)用中,我們可以通過多個對象圖來展現(xiàn)同樣的實(shí)例在不同時間點(diǎn)時各實(shí)例的狀態(tài),不同的狀態(tài)是通過槽的不同值來表達(dá)的。比如,我們可以采用對象圖來表示一個算法,而對于同一算法在不同時間點(diǎn)各實(shí)例的狀態(tài)(表現(xiàn)在槽的值不同)采用不同的對象圖來表示。
1.2 槽
??? 槽(slot,參見USS的7.3.48節(jié))是用于表示實(shí)例規(guī)范中被建模實(shí)體結(jié)構(gòu)特征的值,槽對應(yīng)于類圖中類的屬性,是類屬性的實(shí)例,而屬性是類的結(jié)構(gòu)化特性的描述。從圖 1.1中可以看出,一個槽具有三個屬性:
??? 1)definingFeature表示這一槽所對應(yīng)的結(jié)構(gòu)化特性是什么。
??? 2)owningInstance表示這一槽是屬于哪一個實(shí)例規(guī)范的。
??? 3)value指示槽的值是多少。
???
??? 圖 1.2中每一個Window實(shí)例規(guī)范都有兩個槽。其中name槽的definingFeature應(yīng)當(dāng)就是窗口名稱,顯然name槽的owningInstance是各 Window實(shí)例,而value對于每一個Window實(shí)例就不同了,有的叫“front left”,也有的叫“rear left”。相類似地,is_automatic槽用于表示每一個車窗是不是自動的。
1.3 連接
??? 在UML規(guī)范中沒有專門用于介紹連接(link)的章節(jié),但在實(shí)例規(guī)范章節(jié)中有所提及。其定義了實(shí)例規(guī)范之間的關(guān)系,從類圖的角度來看,一個連接就是一個關(guān)聯(lián)關(guān)系的實(shí)例。圖 1.2中示例了Car類實(shí)例規(guī)范與Window類實(shí)例規(guī)范之間的四個連接。對比圖 1.2和圖 1.3我們可以發(fā)現(xiàn),圖 1.2中的四個連接都是圖 1.3中關(guān)聯(lián)關(guān)系的實(shí)例。
2 總結(jié)
??? 對象圖用于表示被建模系統(tǒng)中不同對象在不同時間點(diǎn)的結(jié)構(gòu)狀態(tài)快照,其所表達(dá)的是類圖中更為細(xì)化的結(jié)構(gòu)化信息。當(dāng)我們掌握了類圖后,學(xué)習(xí)對象圖就相對的簡單了許多。
致讀者
??? 如果你想?yún)⑴c討論UML相關(guān)的話題,請加入UML技術(shù)圈(g.51cto.com/UltraUML)。
總結(jié)
以上是生活随笔為你收集整理的[跟我学UML] UML中的对象图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用curl验证ssl网站(webser
- 下一篇: 2016年4月 之 《C程序设计语言》