1. 程式人生 > >UML類圖中的幾種關系總結

UML類圖中的幾種關系總結

技術分享 name dos track text ive implement fonts 結構

UML類圖,描寫敘述對象和類之間相互關系的方式包含:依賴(Dependency)、關聯(Association)、聚合(Aggregation)、組合(Composition)、泛化(Generalization)、實現(Realization)等。

依賴(Dependency)

A依賴B,表示A會使用B的行為或屬性,但B不能使用A的行為、屬性,那麽A和B的關系是依賴關系。 uml中用帶箭頭的虛線表示Dependency關系,箭頭指向被依賴元素

技術分享 演示樣例代碼 :
class B {
	public void doSth() {
		System.out.println("do sth in class b.");
	}
}

//
class A {
	public void doSthInA(B b) {
		b.doSth();
		// others
	}
}

泛化(Generalization)

就是通常所說的繼承關系,不必多解釋了。uml中用帶空心箭頭的實線線表示Generalization關系,箭頭指向被繼承的類。

技術分享 技術分享 技術分享
// 形狀
class Shape {
	
}

// 方形繼承自Shape
class Square extends Shape{
	
}

實現(Realize)

A定義一個約定,B實現這個約定,則B和A的關系是實現,B實現A。這個關系最經常使用於接口。因此A代表接口, B代表實現接口A的詳細類。uml中用空心箭頭和虛線表示Realize關系。箭頭指向定義約定(A)的元素。 技術分享 技術分享
技術分享
演示樣例代碼 :
public interface Runnable {
    public abstract void run();
}

// 實現Runnable接口
public class Thread implements Runnable {
        @Override
    public void run() {
        // do sth
    }
}

關聯(Association)

元素間的結構化關系,是一種弱關系,被關聯的元素間通常能夠獨立存在。uml中用實線(單向關聯帶箭頭) 表示Association關系。箭頭指向被依賴元素。

技術分享
技術分享
技術分享
每一個人都能夠有書籍。可是書籍與人之間並不存在強關系,兩者能夠各自獨立。

演示樣例代碼 :

class Book {
	
}

// 
class People {
	// 學生能夠獨立於老師而存在
	List<Book> mBooks = new ArrayList<Book>();
}

聚合(Aggregation)

聚合是關聯關系的一種特例,是強的關聯關系;關聯和聚會在語義上無法區分,僅僅能依據考察詳細的邏輯來加以區分。
聚合關系表示部分和總體的關系 ( 關聯僅僅是表示單純的依賴 ),部分能夠獨立於總體而存在。

UML中用帶空心菱形頭的實線

表示Aggregation關系,菱形頭指向總體

技術分享
技術分享 技術分享 車輪屬於車的一部分。但車輪能夠獨立於車存在。

代碼演示樣例 :
class Wheel {
}

class Car {
	List<Wheel> mWheels = new ArrayList<Wheel>();
}

組合(Composition)

組合是聚合關系的變種,表示元兩者之間具有更強的聚合關系,它通常要求總體代表部分的生命周期

假設是組合關系,部分(個體)不能獨立於總體而存在。

UML中用帶實心菱形頭的實線表示Composition關系。

菱形頭指向總體

技術分享
技術分享 技術分享 手是人體的一部分,可是手不能獨立於人體而存在。
class Hand {

}

class People {
	List<Hand> mHands = new ArrayList<Hand>();
}

當中依賴(Dependency)的關系最弱,而關聯(Association)。聚合(Aggregation),組合(Composition)表示的關系依次增強。換言之關聯,聚合,組合都是依賴關系的一種,聚合是表明對象之間的總體與部分關系的關聯。而組合是表明總體與部分之間有同樣生命周期關系的聚合。


各種關系的強弱順序:

泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴


參考推薦:

UML類圖幾種關系的總結

UML類圖符號 各種關系說明以及舉例

UML建模免費工具


UML類圖中的幾種關系總結