最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言:什么是 UML

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

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

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

類圖概念

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

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

類的表示方式

可見(jiàn)性符號(hào)

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

屬性的表示方式:可見(jiàn)性 屬性名 : 屬性類型 [ = 默認(rèn)值]

方法的表示方式:可見(jiàn)性 方法名(參數(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)系是對(duì)象之間的一種引用關(guān)系,用于表示一個(gè)類對(duì)象對(duì)另一個(gè)類對(duì)象之間的聯(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)使用帶箭頭的實(shí)直線表示,箭頭指向被引用的對(duì)象。

public class Address {
}

public class Customer {
    private Address address;
}

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

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

public class Product {
    private Customer customer;
}

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

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

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

public class Node {
    private Node subNode;
}

聚合關(guān)系

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

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

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

組合關(guān)系

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

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

public class Head {
    private Mouth mouth;
}

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

依賴關(guān)系

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

依賴關(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)系是對(duì)象之間耦合性最大的一種關(guān)系,表示一般與特殊的關(guān)系,是父子類之間的一種繼承關(guān)系。

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

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
    }
}

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

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

實(shí)現(xiàn)關(guān)系使用帶空心三角箭頭的虛線表示,箭頭從實(shí)現(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è)計(jì)模式之UML類圖的文章就介紹到這了,更多相關(guān)Java UML類圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談java安全編碼指南之堆污染

    淺談java安全編碼指南之堆污染

    什么是堆污染呢?是指當(dāng)參數(shù)化類型變量引用的對(duì)象不是該參數(shù)化類型的對(duì)象時(shí)而發(fā)生的。我們知道在JDK5中,引入了泛型的概念,在創(chuàng)建集合類的時(shí)候,指定該集合類中應(yīng)該存儲(chǔ)的對(duì)象類型。如果在指定類型的集合中,引用了不同的類型,那么這種情況就叫做堆污染。
    2021-06-06
  • 使用mtrace追蹤JVM堆外內(nèi)存泄露的方法

    使用mtrace追蹤JVM堆外內(nèi)存泄露的方法

    這篇文章主要給大家介紹了如何使用mtrace追蹤JVM堆外內(nèi)存泄露,文章通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-09-09
  • spring cglib 與 jdk 動(dòng)態(tài)代理

    spring cglib 與 jdk 動(dòng)態(tài)代理

    本篇文章主要介紹了spring cglib與jdk動(dòng)態(tài)代理的相關(guān)知識(shí),具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-05-05
  • 詳解java==運(yùn)算符和equals()方法的區(qū)別

    詳解java==運(yùn)算符和equals()方法的區(qū)別

    這篇文章主要介紹了java==運(yùn)算符和equals()方法的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 解決Hibernate4執(zhí)行save()或update()無(wú)效問(wèn)題的方法

    解決Hibernate4執(zhí)行save()或update()無(wú)效問(wèn)題的方法

    這篇文章主要為大家詳細(xì)介紹了解決Hibernate4執(zhí)行save()或update()無(wú)效問(wèn)題的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Springboot?中的?Filter?實(shí)現(xiàn)超大響應(yīng)?JSON?數(shù)據(jù)壓縮的方法

    Springboot?中的?Filter?實(shí)現(xiàn)超大響應(yīng)?JSON?數(shù)據(jù)壓縮的方法

    這篇文章主要介紹了Springboot?中的?Filter?實(shí)現(xiàn)超大響應(yīng)?JSON?數(shù)據(jù)壓縮,定義GzipFilter對(duì)輸出進(jìn)行攔截,定義 Controller該 Controller 非常簡(jiǎn)單,主要讀取一個(gè)大文本文件,作為輸出的內(nèi)容,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • Spring Cloud Stream 高級(jí)特性使用詳解

    Spring Cloud Stream 高級(jí)特性使用詳解

    這篇文章主要為大家介紹了Spring Cloud Stream 高級(jí)特性使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Mybatis-Plus中分頁(yè)插件PaginationInterceptor的使用

    Mybatis-Plus中分頁(yè)插件PaginationInterceptor的使用

    我們?cè)陂_(kāi)發(fā)的過(guò)程中,經(jīng)常會(huì)遇到分頁(yè)操作,本文主要介紹了Mybatis-Plus中分頁(yè)插件PaginationInterceptor的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 基于Spring框架由ConditionalOnMissingBean注解引發(fā)的問(wèn)題

    基于Spring框架由ConditionalOnMissingBean注解引發(fā)的問(wèn)題

    這篇文章主要介紹了基于Spring框架由ConditionalOnMissingBean注解引發(fā)的問(wèn)題,具有很好
    2023-11-11
  • Java實(shí)現(xiàn)圖像分割功能

    Java實(shí)現(xiàn)圖像分割功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)圖像分割功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06

最新評(píng)論

萍乡市| 科尔| 赞皇县| 北安市| 西吉县| 天长市| 迭部县| 乌审旗| 来凤县| 扎囊县| 胶州市| 通江县| 离岛区| 左贡县| 饶阳县| 天津市| 长兴县| 剑阁县| 威远县| 建始县| 云和县| 绍兴市| 高碑店市| 宁阳县| 福建省| 潍坊市| 响水县| 阜新市| 洛扎县| 姜堰市| 正宁县| 新昌县| 弥勒县| 上饶市| 轮台县| 金坛市| 景德镇市| 宜兰县| 遂昌县| 鄂尔多斯市| 西乌珠穆沁旗|