欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入了解Java設(shè)計模式之UML類圖

 更新時間:2022年11月21日 09:27:52   作者:準Java全棧開發(fā)工程師  
UML?即?Unified?Modeling?Language?統(tǒng)一建模語言,是用來設(shè)計軟件的可視化建模語言。本文就帶大家了解一下UML中類圖的定義與使用,感興趣的小伙伴可以跟隨小編一起學習一下

前言:什么是 UML

定義:UML 即 Unified Modeling Language 統(tǒng)一建模語言,是用來設(shè)計軟件的可視化建模語言。

特點:簡單、統(tǒng)一、圖形化、可以表達軟件設(shè)計中的動態(tài)與靜態(tài)信息。

分類:用例圖、類圖、對象圖、狀態(tài)圖、活動圖、時序圖、協(xié)作圖、構(gòu)件圖、部署圖 9 種。

類圖概念

定義:類圖是面向?qū)ο蠼5闹饕M成部分,顯示了模型的靜態(tài)結(jié)構(gòu),特別是模型中存在的類、類的內(nèi)部結(jié)構(gòu)以及它們與其他類的關(guān)系等,但不顯示暫時性的信息。

作用:系統(tǒng)分析和設(shè)計階段的重要產(chǎn)物,系統(tǒng)編碼和測試的重要模型。

類的表示方式

可見性符號

  • + :表示 public
  • - :表示 private
  • # :表示 protected
  • 什么都不寫 表示 default

屬性的表示方式:可見性 屬性名 : 屬性類型 [ = 默認值]

方法的表示方式:可見性 方法名(參數(shù)列表) [ : 返回值類型]

其中,[ ] 里的內(nèi)容是可選的,可寫可不寫。

public class Employee {
    private String name;
    private int age;
    private String address;
    public void work(){
        // doSomething
    }
}

類與類之間關(guān)系的表示方式

關(guān)聯(lián)關(guān)系

關(guān)聯(lián)關(guān)系是對象之間的一種引用關(guān)系,用于表示一個類對象對另一個類對象之間的聯(lián)系。

關(guān)聯(lián)關(guān)系也是類與類之間最常用的一種關(guān)系,分為一般關(guān)聯(lián)關(guān)系、聚合關(guān)系和組合關(guān)系

關(guān)聯(lián)又分為單向關(guān)聯(lián)、雙向關(guān)聯(lián)和自關(guān)聯(lián)。

單向關(guān)聯(lián)

單向關(guān)聯(lián)使用帶箭頭的實直線表示,箭頭指向被引用的對象。

public class Address {
}

public class Customer {
    private Address address;
}

雙向關(guān)聯(lián)

雙向關(guān)聯(lián)使用不帶箭頭的實直線表示,因為雙方各自都持有對方類型的成員變量,所以不用使用箭頭刻意的表示誰引用了誰。

public class Product {
    private Customer customer;
}

public class Customer {
    private List<Product> products;
}

自關(guān)聯(lián)

自關(guān)聯(lián)使用一個帶箭頭且指向自己的實直線表示,自己包含自己。

public class Node {
    private Node subNode;
}

聚合關(guān)系

聚合關(guān)系其實是關(guān)聯(lián)關(guān)系的一種,是強關(guān)聯(lián)關(guān)系,是整體和部分之間的關(guān)系。

聚合關(guān)系通過成員對象來實現(xiàn),其中成員對象是整體對象的一部分,但成員對象可以脫離整體對象而獨立存在。如:大學(整體)里有很多老師(部分),這些老師屬于這個大學,但他們又可以脫離學校單獨存在。

聚合關(guān)系使用帶空心菱形的實直線來表示,菱形指向整體。

組合關(guān)系

組合關(guān)系是一種更強烈的聚合關(guān)系,同樣表示的是類之間整體和部分的關(guān)系,但相較于聚合關(guān)系,組合關(guān)系中的整體對象可以控制部分對象的生命周期,一旦整體對象不存在了,部分對象也將不復存在。如:頭(整體)和嘴(部分)的關(guān)系,頭沒了,嘴自然也不在了。

組合關(guān)系使用帶實心菱形的實直線表示,菱形指向整體。

public class Head {
    private Mouth mouth;
}

public class Mouth {
    public void eat() {
        // doSomething
    }
}

依賴關(guān)系

依賴關(guān)系是一種使用關(guān)系,是對象之間耦合性最弱的一種關(guān)聯(lián)方式,是臨時性的關(guān)聯(lián)。使用場景主要為某個類的方法通過局部變量、方法的參數(shù)來訪問另一個類(被依賴類)中的某些方法。

依賴關(guān)系使用帶箭頭的虛直線表示,箭頭指向被依賴類。

public class Car {
    public void move() {
        // doSomething
    }
}

public class Driver {
    private String name;
    public void drive(Car car) {
        car.move();
    }
}

繼承關(guān)系

繼承關(guān)系是對象之間耦合性最大的一種關(guān)系,表示一般與特殊的關(guān)系,是父子類之間的一種繼承關(guān)系。

繼承關(guān)系又可稱為泛化關(guān)系,使用帶空心三角箭頭的實直線表示,箭頭從子類指向父類。

public class Person {
    private String name;
    private int age;
    public void speak() {
        // doSomething
    }
}

public class Student extends Person{
    private String studentNo;
    public void study() {
        // doSomething
    }
}

public class Teacher extends Person{
    private String teacherNo;
    public void teach() {
        // doSomething
    }
}

實現(xiàn)關(guān)系

實現(xiàn)關(guān)系是接口與實現(xiàn)類之間的關(guān)系。

實現(xiàn)關(guān)系使用帶空心三角箭頭的虛線表示,箭頭從實現(xiàn)類指向接口,箭頭也是虛線。

public interface Vehicle {
    void move();
}

public class Car implements Vehicle {
	@Override
    public void move() {
        // doSomething
    }
}

public class Ship implements Vehicle {
    @Override
    public void move() {
        // doSomething
    }
}

到此這篇關(guān)于深入了解Java設(shè)計模式之UML類圖的文章就介紹到這了,更多相關(guān)Java UML類圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用String轉(zhuǎn)換到Map結(jié)構(gòu)

    使用String轉(zhuǎn)換到Map結(jié)構(gòu)

    這篇文章主要介紹了使用String轉(zhuǎn)換到Map結(jié)構(gòu),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java?Spring?boot實現(xiàn)生成二維碼

    Java?Spring?boot實現(xiàn)生成二維碼

    大家好,本篇文章主要講的是Java?Spring?boot實現(xiàn)生成二維碼,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • XSS攻擊以及java應對xss攻擊的解決方案

    XSS攻擊以及java應對xss攻擊的解決方案

    XSS是跨站腳本攻擊Cross Site Scripting的縮寫,為了和層疊樣式表CSS加以區(qū)分,因此將跨站腳本攻擊縮寫為XSS,這篇文章主要給大家介紹了關(guān)于XSS攻擊以及java應對xss攻擊的解決方案,需要的朋友可以參考下
    2024-02-02
  • Java將Word文件轉(zhuǎn)為OFD文件

    Java將Word文件轉(zhuǎn)為OFD文件

    大家好,本篇文章主要講的是Java將Word文件轉(zhuǎn)為OFD文件,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Fluent Mybatis,原生Mybatis,Mybatis Plus三者功能對比

    Fluent Mybatis,原生Mybatis,Mybatis Plus三者功能對比

    本文主要介紹了Fluent Mybatis,原生Mybatis,Mybatis Plus三者功能對比,分享給大家,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 基于Java編寫一個簡單的風控組件

    基于Java編寫一個簡單的風控組件

    這篇文章主要為大家詳細介紹了如何基于Java編寫一個簡單的風控組件,文中的示例代碼講解詳細,對我們學習Java有一定的幫助,需要的可以參考一下
    2022-12-12
  • Go反射底層原理及數(shù)據(jù)結(jié)構(gòu)解析

    Go反射底層原理及數(shù)據(jù)結(jié)構(gòu)解析

    這篇文章主要介紹了Go反射底層原理及數(shù)據(jù)結(jié)構(gòu)解析,反射的實現(xiàn)和interface的組成很相似,都是由“類型”和“數(shù)據(jù)值”構(gòu)成,下面小編分享更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-06-06
  • Java中jqGrid 學習筆記整理——進階篇(二)

    Java中jqGrid 學習筆記整理——進階篇(二)

    這篇文章主要介紹了Java中jqGrid 學習筆記整理——進階篇(二)的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • Java 異常詳解

    Java 異常詳解

    本文主要介紹了異常與錯誤的區(qū)別,異常的體現(xiàn)分類,異常的處理機制,如何自定義異常等,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • java equals和==的區(qū)別詳解

    java equals和==的區(qū)別詳解

    這篇文章主要介紹了java equals和==的區(qū)別詳解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10

最新評論