UML類圖小結

類與類之間的關係



1. 關聯關係



關聯(Association)關係是類與類之間最常用的一種關係,它是一種結構化關係,用於表示一類對象與另一類對象之間有聯繫,如汽車和輪胎、師傅和徒弟、班級和學生等等。

圖1 關聯關係實例

(1) 雙向關聯

默認情況下,關聯是雙向的。例如:顧客(Customer)購買商品(Product)並擁有商品,反之,賣出的商品總有某個顧客與之相關聯。因此,Customer類和Product類之間具有雙向關聯關係,如圖2所示:

圖2 雙向關聯實例

(2) 單向關聯

類的關聯關係也可以是單向的,單向關聯用帶箭頭的實線表示。例如:顧客(Customer)擁有地址(Address),則Customer類與Address類具有單向關聯關係,如圖3所示:

圖3 單向關聯實例

(3) 自關聯

在系統中可能會存在一些類的屬性對象類型爲該類本身,這種特殊的關聯關係稱爲自關聯。例如:一個節點類(Node)的成員又是節點Node類型的對象,如圖4所示:

圖4 自關聯實例

(4) 多重性關聯

多重性關聯關係又稱爲重數性(Multiplicity)關聯關係,表示兩個關聯對象在數量上的對應關係。在UML中,對象之間的多重性可以直接在關聯直線上用一個數字或一個數字範圍表示。

例如:一個界面(Form)可以擁有零個或多個按鈕(Button),但是一個按鈕只能屬於一個界面,因此,一個Form類的對象可以與零個或多個Button類的對象相關聯,但一個Button類的對象只能與一個Form類的對象關聯,如圖5所示:

(5) 聚合關係

聚合(Aggregation)關係表示整體與部分的關係。在聚合關係中,成員對象是整體對象的一部分,但是成員對象可以脫離整體對象獨立存在。

圖6 聚合關係實例

(6) 組合關係

組合(Composition)關係也表示類之間整體和部分的關係,但是在組合關係中整體對象可以控制成員對象的生命週期,一旦整體對象不存在,成員對象也將不存在,成員對象與整體對象之間具有同生共死的關係。

圖7 組合關係實例



2. 依賴關係


依賴(Dependency)關係是一種使用關係,特定事物的改變有可能會影響到使用該事物的其他事物,在需要表示一個事物使用另一個事物時使用依賴關係。大多數情況下,依賴關係體現在某個類的方法使用另一個類的對象作爲參數。


圖1 依賴關係實例

在系統實施階段,依賴關係通常通過三種方式來實現,第一種也是最常用的一種方式是如圖1所示的將一個類的對象作爲另一個類中方法的參數,第二種方式是在一個類的方法中將另一個類的對象作爲其局部變量,第三種方式是在一個類的方法中調用另一個類的靜態方法。


3. 泛化關係


泛化(Generalization)關係也就是繼承關係,用於描述父類與子類之間的關係,父類又稱作基類或超類,子類又稱作派生類。

圖2 泛化關係實例



4. 接口與實現關係



在很多面嚮對象語言中都引入了接口的概念,如Java、C#等,在接口中,通常沒有屬性,而且所有的操作都是抽象的,只有操作的聲明,沒有操作的實現。UML中用與類的表示法類似的方式表示接口,如圖3所示:

圖3 接口的UML圖示

接口之間也可以有與類之間關係類似的繼承關係和依賴關係,但是接口和類之間還存在一種實現(Realization)關係,在這種關係中,類實現了接口,類中的操作實現了接口中所聲明的操作。在UML中,類與接口之間的實現關係用帶空心三角形的虛線來表示。例如:定義了一個交通工具接口Vehicle,包含一個抽象操作move(),在類Ship和類Car中都實現了該move()操作,不過具體的實現細節將會不一樣,如圖4所示:



發佈了0 篇原創文章 · 獲贊 14 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章