深入學(xué)習(xí)UML對象及關(guān)系圖
本文和大家重點討論一下UML對象及關(guān)系圖,主要向大家介紹一下UML對象圖和UML關(guān)系圖,希望通過本文的學(xué)習(xí)你對UML對象及關(guān)系圖有明確的認識。
UML對象圖
對象與類的關(guān)系
對象的概念與特性
◆對象代表一個單獨的、可確認的物體、單元或?qū)嶓w,它可以是具體的也可以是抽象的,在問題領(lǐng)域里有確切定義的角色。換句話說,對象是邊界非常清楚的任何事物
◆狀態(tài)(屬性):對象的狀態(tài)包括對象的所有屬性(通常是靜態(tài)的)和這些屬性的當(dāng)前值(通常是動態(tài)的)
◆行為(方法,事件):沒有一個對象是孤立存在的,對象可以被操作,也可以操作別的對象。而行為就是一個對象根據(jù)它的狀態(tài)改變和消息傳送所采取的行動和所做出的反應(yīng)
◆標(biāo)識(名字):為了將一個對象與其它所有對象區(qū)分開來,我們通常會給它起一個“標(biāo)識”
UML對象及關(guān)系圖中對象與類
◆對象是一個存在于時間和空間中的具體實體,而類僅代表一個抽象,抽象出對象的“本質(zhì)”。
◆類是共享一個公用結(jié)構(gòu)和一個公共行為對象集合
◆類是靜態(tài)的,對象是動態(tài)的;類是一般化,對象是個性化;類是定義,對象是實例;類是抽象、對象是具體
UML關(guān)系圖
類之間的UML關(guān)系圖軟件開發(fā)
UML對象及關(guān)系圖中類間關(guān)系有很多種,在大的類別上可以分為兩種:縱向關(guān)系、橫向關(guān)系。
縱向關(guān)系就是繼承關(guān)系,它的概念非常明確,也成為OO的三個重要特征之一,這里不過多的討論。
橫向關(guān)系較為微妙,按照UML的建議大體上可以分為四種:
1.依賴(Dependency)
2.關(guān)聯(lián)(Association)
3.聚合(Aggregation)
4.組合(Composition)
它們的強弱關(guān)系是沒有異議的:依賴<關(guān)聯(lián)<聚合<組合
然而UML對象及關(guān)系圖中它們四個之間的差別卻又不那么好拿捏,需要好好體會。
1.依賴:
UML表示法:虛線+箭頭
關(guān)系:"...usesa..."
UML對象及關(guān)系圖中的依賴關(guān)系最為簡單,也***理解,所謂依賴就是某個對象的功能依賴于另外的某個對象,而被依賴的對象只是作為一種工具在使用,而并不持有對它的引用。
2.關(guān)聯(lián):
UML表示法:實線+箭頭
關(guān)系:"...hasa..."
UML對象及關(guān)系圖中所謂關(guān)聯(lián)就是某個對象會長期的持有另一個對象的引用,而二者的關(guān)聯(lián)往往也是相互的。關(guān)聯(lián)的兩個對象彼此間沒有任何強制性的約束,只要二者同意,可以隨時解除關(guān)系或是進行關(guān)聯(lián),它們在生命期問題上沒有任何約定。被關(guān)聯(lián)的對象還可以再被別的對象關(guān)聯(lián),所以關(guān)聯(lián)是可以共享的。
3.聚合:
UML表示法:空心菱形+實線+箭頭
關(guān)系:"...ownsa..."
UML對象及關(guān)系圖中的聚合是強版本的關(guān)聯(lián)。它暗含著一種所屬關(guān)系以及生命期關(guān)系。被聚合的對象還可以再被別的對象關(guān)聯(lián),所以被聚合對象是可以共享的。雖然是共享的,聚合代表的是一種更親密的關(guān)系。
4.組合:
UML表示法:實心菱形+實線+箭頭
關(guān)系:"...isapartof..."
UML對象及關(guān)系圖中的組合是關(guān)系當(dāng)中的***版本,它直接要求包含對象對被包含對象的擁有以及包含對象與被包含對象生命期的關(guān)系。被包含的對象還可以再被別的對象關(guān)聯(lián),所以被包含對象是可以共享的,然而絕不存在兩個包含對象對同一個被包含對象的共享。
【編輯推薦】
- UML對象圖和類圖關(guān)系解析
- 深入剖析建模工具UML中有哪些UML圖
- UML圖中用例圖和活動圖簡介
- 實例解析四大UML類關(guān)系圖
- 解析UML對象圖建模技術(shù)及類圖和對象圖區(qū)別