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