天天看點

UML的五種關系

http://blog.csdn.net/zfrong/article/details/3771842

http://www.51testing.com/html/93/n-234293.html

http://www.guan8.net/Java/109821.html

UML中有依賴(dependency),關聯(association),聚合(aggregation),組合(composition)和泛化(generalization)。他們之間的依賴性由弱到強為:依賴—>關聯—>聚合-->組合—>泛化

依賴(dependency)

表現為函數中的參數(use a)。就是一個類使用到了另外一個類,而這種使用關系是具有偶然性、臨時性,非常弱,但是另外一個類的變化會影響到這個類。是類與類之間的連接配接,表示一個類依賴于另一個類的定義,其中一個類的變化将影響另外一個類。是一種典型的臨時關系,代表了類之間一種短暫的互動。例如表現在代碼層面如果A依賴于B,則B展現為局部變量,方法的參數、或靜态方法的調用。

UML的五種關系

關聯(association)

表現為變量(has-a)。類與類之間的聯接,表示類之間的一種持續一段時間的合作關系,但是二者生命線不被綁定。是一種強依賴關系,不存在依賴關系的偶然性,也不是臨時性的,一般是長期性的,而且雙方的關系一般是平等的。它使一個類知道另一個類的屬性和方法。例如如果A依賴于B,則B展現為A的全局變量。關聯關系有雙向關聯和單向關聯。雙向關聯:兩個類都知道另一個類的公共屬性和操作。單向關聯:隻有一個類知道另外一個類的公共屬性和操作。大多數關聯應該是單向的,單向關系更容易建立和維護。

UML的五種關系

聚合(aggregation)

關聯關系的一種,是強的關聯關系。展現的是整體與部分,擁有的關系即owns關系。此時整體與部分之間是可分離的,他們可以具有各自的生命周期,部分可以屬于多個整體對象,也可以為多個整體對象共享。聚合關系是整體和個體的關系。普通關聯關系的兩個類處于同一層次上,而聚合關系的兩個類處于不同的層次,一個是整體,一個是部分。同時,是一種弱的“擁有”關系。展現的是A對象可以包含B對象,但B對象不是A對象的組成部分。具體表現為,如果A由B聚合成,表現為A包含有B的全局對象,但是B對象可以不在A建立的時刻建立。

UML的五種關系

組合(composite)

關聯關系的一種,是比聚合關系強的關系(is part of),也稱之為強聚合。這種關系是非共享的,也就是說在任何時間,部分隻能包含在一個整體中,二者的生命線總是相連的。這裡非共享的關系是指執行個體,就是說一個類的不同執行個體可以屬于不同擁有者,但是一個特定的執行個體隻能有一個擁有者。它要求普通的聚合關系中代表整體的對象負責代表部分的對象的生命周期。Composition(組合關系)是一種強的“擁有”關系,展現了嚴格的部分和整體的關系,部分和整體的生命周期一緻。如果A由B組成,表現為A包含有B的全局對象,并且B對象在A建立的時刻建立。

UML的五種關系

泛化(generalization)

Generalization(泛化)表現為繼承或實作關系(is a)。具體形式為類與類之間的繼承關系,接口與接口之間的繼承關系,類對接口的實作關系。繼承值得是一個類繼承另外一個類的功能,并可以增加它自己的功能。實作值得是一個類實作父類的接口,實作是類接口之間最常見的關系。

UML的五種關系

繼續閱讀