1. 程式人生 > >java中類與類的關係以及UML類圖

java中類與類的關係以及UML類圖

類圖主要是用來顯示系統中的類、介面以及它們之間的靜態結構和關係的一種靜態模型。
類圖的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();
        }
    }

類圖:
這裡寫圖片描述