前言:UML的構造塊包含以下3種
(1) 事物(4種):結構事物,行為事物,分組事物,注釋事物
(2) 關系(4種):泛化關系,實現關系,依賴關系,關聯關系
(3) 圖(10種):用例圖,類圖,對象圖,包圖,組件圖,部署圖,狀態圖,活動圖,序列圖,協作圖
其中:
事物是對模型中最具代表性的成分的抽象;
關系把事物結合在一起;
圖聚集了相關的事物。
(一)在UML類圖中常見的幾種關系
- 泛化(Generalization)
- 實現(Realization)
- 關聯(Association)
- 聚合(Aggregation)
- **組合 (Composition) **
- **依賴 (Dependency) **
(二)關系的大致介紹
1. 泛化(Generalization)是一種 繼承( is kind of) 關系,表示一般與特殊的關系,箭頭指向父類
2. 實現(Realization)是一種 類與接口 的關系,表示類是接口所有特征和行為的實現;箭頭指向接口
3.關聯(Association)是一種 擁有 的關系,它使一個類知道另一個類的屬性和方法;指向被擁有者
4.聚合(Aggregation)是 整體與部分( has a ) 的關系,菱形頭指向整體。
5.組合(Composition)是 整體與部分(contains a) 的關系,菱形頭指向整體。
6.依賴(Dependency)是一種 使用 的關系,即一個類的實現需要另一個類的協助,所以要盡量不使用雙向的互相依賴,箭頭指向被依賴元素。
(三)幾種關系的詳解
1)泛化
- 泛化關系的三個要求:
- 1、子類與父類應該完全一致,父類所具有的屬性、操作,子類應該都有;
- 2、子類中除了與父類一致的信息以外,還包括額外的信息;
- 3、可以使用父類的實例的地方,也可以使用子類的實例。
2)關聯
-
**Note: **
- 關聯可以是雙向的、單向的、自身的。
- 雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭。
-
數字表示兩者的關系的限制,通常:
- * ——(表示所有)
- 1 ——(表示有且僅有一個)
- 0... ——(表示0個或者多個)
- 0,1 ——(表示0個或者一個)
- n...m ——(表示n到 m個都可以)
- m...* ——(表示至少m個)
-
舉例:
上圖中,老師與學生是雙向關聯,老師有多名學生,學生也可能有多名老師。但學生與某課程間的關系為單向關聯,一名學生可能要上多門課程,課程是個抽象的東西他不擁有學生。
3)聚合
舉例:
車和輪胎是整體和部分的關系,輪胎離開車仍然可以存在。
**Note: **
部分可以離開整體而單獨存在,他們可以具有各自的生命周期。
4)組合
舉例:
公司和部門是整體和部分的關系,沒有公司就不存在部門。
**Note: **
部分不能離開整體而單獨存在,整體的生命周期結束也就意味著部分的生命周期結束;
聚合關系表示整體與部分的關系比較弱,而組合比較強,也稱為強聚合;
關聯和聚合在語法上無法區分,必須考察具體的邏輯關系。
5)關聯與依賴的關系
- **Note: **
- 依賴描述了對象之間的調用關系;
- 關聯描述了對象之間的結構關系。
6)關系間的強弱順序
- 泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴
- **Note: **
- 依賴關系是一種比較弱的關聯;
- 聚合是一種比較強的關聯;
- 而組合則是一種更強的關聯,
所以籠統的來區分的話,實際上這四種關系、都是關聯關系,因此在不確定的情況下,可以以關聯關系來描述它們。
(四)舉個例子
下面這張UML圖,比較形象地展示了類圖之間的各種關系
把這個圖走一遍的話,就可以理解這幾種關系啦!~