http://gaojiewyh.iteye.com/blog/407013
UML類圖中的關係分爲四種:泛化、依賴、關聯、實現;關聯關係又可以細化爲聚合和組合。
1. 泛化(Generalization)
泛化是父類和子類之間的關係,子類繼承父類的所有結構和行爲。在子類中可以增加新的結構和行爲,也可以覆寫父類的行爲。
2. 依賴(Dependency)
依賴關係是一種使用關係,特定事物的改變有可能會影響到使用該事物的事物,反之不成立。在你想顯示一個事物使用另一個事物時使用。
通常情況下,依賴關係體現在某個類的方法使用另一個類作爲參數 。
如果模塊A調用模塊B提供的方法,或訪問模塊B中的某些數據成員(當然,在面向對象開發中一般不提倡這樣做),我們就認爲模塊A依賴於模塊B,模塊A和模塊B之間發生了耦合。
3. 關聯(Dependency)
關聯是一種結構化的關係,指一種對象和另一種對象有聯繫。給定有關聯的兩個類,可以從一個類的對象得到另一個類的對象。關聯有兩元關係和多元關係。兩元關係是指一種一對一的關係,多元關係是一對多或多對一的關係。一般用實線連接有關聯的同一個類或不同的兩個類。當你想要表示結構化關係時使用關聯。
關聯關係是通過類的成員變量 來實現的。
3.1 聚合(Aggregation)
聚合是一種特殊的關聯。它描述了“has a”關係,表示整體對象擁有部分對象。
關聯關係和聚合關係來語法上是沒辦法區分的,從語義 上才能更好的區分兩者的區別。聚合是較強的關聯關係,強調的是整體與部分 之間的關係。
與關聯關係一樣,聚合關係也是通過類的成員變量來實現的。
3.2 組合(Composition)
組合是聚合的一種形式,它具有更強的擁有關係,強調整體與部分的生命週期 是一致的。整體負責部分的生命週期的管理。如果整體被銷燬,部分也必須跟着一起被銷燬,如果所有者被複制,部分也必須一起被複制。
與關聯關係一樣,組合關係也是通過類的成員變量 來實現的。
聚合和組合的區別在於:聚合關係是“has-a”關係,組合關係是“contains-a”關係;聚合關係表示整體與部分的關係比較弱,而組合比較強;聚合關係中代表部分事物的對象與代表聚合事物的對象的生存期無關,一旦刪除了聚合對象不一定就刪除了代表部分事物的對象。組合中一旦刪除了組合對象,同時也就刪除了代表部分事物的對象。
4. 實現(Realization)
實現關係指定兩個實體之間的一個合約。換言之,一個實體定義一個 合約 ,而另一個實體保證履行該 合約 。
類間關係有很多種,在大的類別上可以分爲兩種:縱向關係、橫向關係。
縱向關係就是繼承關係,它的概念非常明確,也成爲OO的三個重要特徵之一,這裏不過多的討論。
橫向關係較爲微妙,按照UML的建議大體上可以分爲四種:
依賴 (Dependency)
關聯 (Association)
聚合 (Aggregation)
組合 (Composition)
它們的強弱關係是沒有異議的:依賴 < 關聯 < 聚合 < 組合<泛化(繼承)
在UML系統開發中有三個主要的模型:
功能模型: 從用戶的角度展示系統的功能,包括用例圖。
對象模型: 採用對象,屬性,操作,關聯等概念展示系統的結構和基礎,包括類圖。
動態模型: 展現系統的內部行爲。 包括序列圖,活動圖,狀態圖。