類之間的關係(UML)

前言

  在軟件系統中,類並不是孤立存在的,類與類之間存在各種關係,對於不同類型的關係,UML提供了不同的表示方式。


敘述

今天我們主要來看一下UML中常見的幾種關係圖。
在這裏插入圖片描述

依賴

  在UML中,依賴關係用帶箭頭的虛線表示,由依賴的一方指向被依賴的一方。

  例如:駕駛員開車,在Driver類的drive()方法中將Car類型的對象car作爲一個參數傳遞,以便在drive()方法中能夠調用car的move()方法,且駕駛員的drive()方法依賴車的move()方法,因此類Driver依賴類Car,如圖1所示:
在這裏插入圖片描述

public class Driver {
	public void drive(Car car) {
		car.move();
	}
    ……
}
 
public class Car {
	public void move() {
		......
	}
    ……
}

關聯

  此處的關聯關係指的是單向關聯。表示has的關係。

  單向關聯用帶箭頭的實線表示。

  例如:顧客(Customer)擁有地址(Address),則Customer類與Address類具有單向關聯關係。
在這裏插入圖片描述

public class Customer {
private Address address;
……
}
 
public class Address {
……
}

聚合

  在UML中,聚合關係用帶空心菱形的直線表示

  例如:汽車發動機(Engine)是汽車(Car)的組成部分,但是汽車發動機可以獨立存在,因此,汽車和發動機是聚合關係。
在這裏插入圖片描述

public class Car {
	private Engine engine;
 
    //構造注入
	public Car(Engine engine) {
		this.engine = engine;
	}
    
    //設值注入
public void setEngine(Engine engine) {
    this.engine = engine;
}
……
}
 
public class Engine {
	……
}

組合

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

  在UML中,組合關係用帶實心菱形的直線表示。

  例如:人的頭(Head)與嘴巴(Mouth),嘴巴是頭的組成部分之一,而且如果頭沒了,嘴巴也就沒了,因此頭和嘴巴是組合關係
在這裏插入圖片描述

public class Head {
	private Mouth mouth;
 
	public Head() {
		mouth = new Mouth(); //實例化成員類
	}
……
}
 
public class Mouth {
	……
}

繼承

  在UML中,泛化關係用帶空心三角形的直線來表示。
在這裏插入圖片描述

//父類
public class Person {
protected String name;
protected int age;
 
public void move() {
        ……
}
 
    public void say() {
    ……
    }
}
 
//子類
public class Student extends Person {
private String studentNo;
 
public void study() {
    ……
    }
}
 
//子類
public class Teacher extends Person {
private String teacherNo;
 
public void teach() {
    ……
    }
}

實現

  在UML中,類與接口之間的實現關係用帶空心三角形的虛線來表示。
在這裏插入圖片描述

public interface Vehicle {
public void move();
}
 
public class Ship implements Vehicle {
public void move() {
    ……
    }
}
 
public class Car implements Vehicle {
public void move() {
    ……
    }
}

小結

以上是比較常用的幾種uml關係,更多的關係請參考https://blog.csdn.net/LoveLion/article/details/7843308

感謝您的閱讀~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章