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();
        }
    }

類圖:
這裏寫圖片描述

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