揭秘五種UML類(lèi)圖關(guān)系
本節(jié)和大家一起來(lái)學(xué)習(xí)一下幾種UML類(lèi)圖關(guān)系, 主要包括一般化,關(guān)聯(lián),聚合,合成和依賴等關(guān)系,相信通過(guò)本節(jié)的學(xué)習(xí)你對(duì)UML類(lèi)圖關(guān)系 一定會(huì)有全面的認(rèn)識(shí)。下面請(qǐng)看詳細(xì)介紹。
幾種UML類(lèi)圖關(guān)系
一般化關(guān)系
一般化(Generalization)關(guān)系表示類(lèi)與類(lèi)之間的繼承關(guān)系,接口與接口之間的繼承關(guān)系,或類(lèi)對(duì)接口的實(shí)現(xiàn)關(guān)系。一般化的關(guān)系是從子類(lèi)指向父類(lèi)的,或從實(shí)現(xiàn)接口的類(lèi)指向被實(shí)現(xiàn)的接口,與繼承或?qū)崿F(xiàn)的方向相反
關(guān)聯(lián)關(guān)系
UML類(lèi)圖關(guān)系中關(guān)聯(lián)(Association)關(guān)系是類(lèi)與類(lèi)之間的聯(lián)接,它使一個(gè)類(lèi)知道另一個(gè)類(lèi)的屬性和方法。關(guān)聯(lián)可以是雙向的,也可以是單向的。雙向的關(guān)聯(lián)可以有兩個(gè)箭頭或者沒(méi)有箭頭。單向的關(guān)聯(lián)有一個(gè)箭頭,表示關(guān)聯(lián)的方向,如下圖所示。單向的關(guān)聯(lián)更為普遍,通常不鼓勵(lì)使用雙向的關(guān)聯(lián)。關(guān)聯(lián)關(guān)系是使用實(shí)例變量實(shí)現(xiàn)的。在每個(gè)關(guān)聯(lián)的端點(diǎn),還可以有一個(gè)基數(shù)(Multiplicity),表明這一端的類(lèi)可以有幾個(gè)實(shí)例
聚合關(guān)系
聚合(Aggregation)關(guān)系是關(guān)聯(lián)關(guān)系的一種,是強(qiáng)的關(guān)聯(lián)關(guān)系。聚合是整體和個(gè)人之間的關(guān)系。與關(guān)聯(lián)關(guān)系一樣,聚合關(guān)系也是通過(guò)實(shí)例變量實(shí)現(xiàn)的。但是,關(guān)聯(lián)關(guān)系所涉及的兩個(gè)類(lèi)是處在同一個(gè)層次上的,而聚合關(guān)系中,兩個(gè)類(lèi)是處在不平等的層次上的,一具代表整體,另一個(gè)代表部分。關(guān)聯(lián)與聚合僅僅從語(yǔ)法上是分辨不出的,需要考察所涉及的類(lèi)之間的邏輯關(guān)系。如果不是很確定一個(gè)關(guān)系是不是聚合關(guān)系,可以將之設(shè)置為關(guān)聯(lián)關(guān)系。
合成關(guān)系
UML類(lèi)圖關(guān)系中合成(Composition)關(guān)系是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系強(qiáng)的關(guān)系。它要求普通的聚合關(guān)系中代表整體的對(duì)象負(fù)責(zé)代表部分的對(duì)象的生命周期,合成關(guān)系是不能共享的。代表整體的對(duì)象需要負(fù)責(zé)保持部分對(duì)象的存活,在一些情況下負(fù)責(zé)將代表部分的對(duì)象湮滅掉。代表整體的對(duì)象可以將代表部分的對(duì)象傳遞給另一個(gè)對(duì)象,由后者負(fù)責(zé)此對(duì)象的生命周期。換言之,代表部分的對(duì)象在每一個(gè)時(shí)刻只能與一個(gè)對(duì)象發(fā)生合成關(guān)系,由后者排他地負(fù)責(zé)其生命周期。如果不能確定一個(gè)關(guān)系是不是合成關(guān)系,可以將之設(shè)置為聚合關(guān)系,甚至關(guān)聯(lián)關(guān)系
依賴關(guān)系
依賴(Dependency)也是類(lèi)與類(lèi)之間的連接,依賴總是單向的,依賴關(guān)系表示一個(gè)類(lèi)依賴于另一個(gè)類(lèi)的定義。一般而言,依賴關(guān)系在語(yǔ)言中體現(xiàn)為局域變量、方法的參量,以及對(duì)靜態(tài)方法的調(diào)用。換言之,一個(gè)類(lèi)A的某一個(gè)局域變量的類(lèi)型是另一個(gè)類(lèi)B,那么類(lèi)A就依賴于類(lèi)B。如果一個(gè)方法的參量是另一個(gè)類(lèi)B的實(shí)例,那么這個(gè)方法所在的類(lèi)A依賴于類(lèi)B。如果一個(gè)類(lèi)A調(diào)用另一個(gè)類(lèi)B的靜態(tài)方法,那么類(lèi)A依賴于類(lèi)B。如果類(lèi)B出現(xiàn)在類(lèi)A的實(shí)例變量中,那么類(lèi)A與類(lèi)B的關(guān)系就超越了依賴關(guān)系,而變成了某一種關(guān)聯(lián)關(guān)系。
【編輯推薦】