java中類與類的關係以及UML類圖
阿新 • • 發佈:2019-01-24
類圖主要是用來顯示系統中的類、介面以及它們之間的靜態結構和關係的一種靜態模型。
類圖的3個基本元件:類名、屬性、方法。
關係 | 內容 |
---|---|
is-a | 繼承 實現 |
use-a | 依賴 |
has-a | 關聯 聚合 |
contains-a | 組合 |
繼承
繼承表示一種is-a的關係,是物件間耦合度最大的一種關係,子類繼承父類所有的細節。類圖表示如下:
實現
依賴
依賴表示的是use-a的關係,是物件之間最弱的一種關係,是臨時的關聯。程式碼中一般指由區域性變數、函式引數、返回值建立的對於其他物件的呼叫關係。
程式碼:
class Car{
public void move(){}
}
class Person{
public void move(Car car){
car.move();
}
}
類圖:
關聯
關聯是物件之間的一種引用關係,關係比依賴強,是一種長期性的關係。在程式碼中通常是以類的屬性的形式類表達,也就是全域性變數。關聯分為一般關聯、聚合關聯和組合關聯。關聯可以是單向的也可以是雙向的。
程式碼:
//一般的單向關聯
class Car{
public void move(){}
}
class Person{
private Car car;//作為屬性存在於類中,
public void setCar(Car car){
this.car = car;
}
}
//一般的雙向關聯
class Car{
private Person person;
public void setDriver(Person person){
this.person = person;
}
}
class Person{
private Car car;//作為屬性存在於類中,
public void setCar(Car car){
this.car = car;
}
}
類圖:
聚合
聚合表示has-a 的關係,是一種不穩定的包含關係。強於一般的關聯,有整體與區域性的關係,沒有了整體,區域性也可單獨存在。比如公司與員工的關係,公司包含員工, 如果公司倒閉了,員工依然可以換公司。
程式碼:
class Employee{
}
class Company{
private Employee employee;
public Company(Employee employee) {
this.employee = employee;
}
}
類圖:
組合
組合表示一種contains-a的關係,是一種強烈的包含關係 。組合類負責被組合類的生命週期,是一種更強的聚合關係。部分不能脫離整體。
程式碼:
class Heart{}
class Person{
private Heart heart;//心臟,
public Person(){
this.heart = new Heart();
}
}
類圖: