前言
在軟件系統中,類並不是孤立存在的,類與類之間存在各種關係,對於不同類型的關係,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
感謝您的閱讀~~