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

IDEA如何快速構(gòu)建UML類圖

 更新時(shí)間:2025年02月14日 10:56:04   作者:趙廣陸  
UML類圖是一種用于描述軟件系統(tǒng)靜態(tài)結(jié)構(gòu)的可視化建模語(yǔ)言,它通過類、屬性、方法以及它們之間的關(guān)系來表示系統(tǒng),類圖主要用于面向?qū)ο笤O(shè)計(jì),幫助理解系統(tǒng)的結(jié)構(gòu)和類之間的關(guān)系,IDEA提供了自動(dòng)生成UML類圖的功能,但其局限性在于只能基于現(xiàn)有代碼生成

1 UML圖

統(tǒng)一建模語(yǔ)言(Unified Modeling Language,UML)是用來設(shè)計(jì)軟件的可視化建模語(yǔ)言。它的特點(diǎn)是簡(jiǎn)單、統(tǒng)一、圖形化、能表達(dá)軟件設(shè)計(jì)中的動(dòng)態(tài)與靜態(tài)信息。

UML 從目標(biāo)系統(tǒng)的不同角度出發(fā),定義了用例圖、類圖、對(duì)象圖、狀態(tài)圖、活動(dòng)圖、時(shí)序圖、協(xié)作圖、構(gòu)件圖、部署圖等 9 種圖。

1.1 類圖概述

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

1.2 類圖的作用

  • 在軟件工程中,類圖是一種靜態(tài)的結(jié)構(gòu)圖,描述了系統(tǒng)的類的集合,類的屬性和類之間的關(guān)系,可以簡(jiǎn)化了人們對(duì)系統(tǒng)的理解;
  • 類圖是系統(tǒng)分析和設(shè)計(jì)階段的重要產(chǎn)物,是系統(tǒng)編碼和測(cè)試的重要模型。

1.3 類圖表示法

1.3.1 類的表示方式

在UML類圖中,類使用包含類名、屬性(field) 和方法(method) 且?guī)в蟹指罹€的矩形來表示,比如下圖表示一個(gè)Employee類,它包含name,age和address這3個(gè)屬性,以及work()方法。

屬性/方法名稱前加的加號(hào)和減號(hào)表示了這個(gè)屬性/方法的可見性,UML類圖中表示可見性的符號(hào)有三種:

  • +:表示public
  • -:表示private
  • #:表示protected

屬性的完整表示方式是: 可見性 名稱 :類型 [ = 缺省值]

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

注意:

  • 中括號(hào)中的內(nèi)容表示是可選的
  • 也有將類型放在變量名前面,返回值類型放在方法名前面

舉個(gè)栗子:

上圖Demo類定義了三個(gè)方法:

  • method()方法:修飾符為public,沒有參數(shù),沒有返回值。
  • method1()方法:修飾符為private,沒有參數(shù),返回值類型為String。
  • method2()方法:修飾符為protected,接收兩個(gè)參數(shù),第一個(gè)參數(shù)類型為int,第二個(gè)參數(shù)類型為String,返回值類型是int。

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

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

關(guān)聯(lián)關(guān)系是對(duì)象之間的一種引用關(guān)系,用于表示一類對(duì)象與另一類對(duì)象之間的聯(lián)系,如老師和學(xué)生、師傅和徒弟、丈夫和妻子等。關(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)。

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

在UML類圖中單向關(guān)聯(lián)用一個(gè)帶箭頭的實(shí)線表示。上圖表示每個(gè)顧客都有一個(gè)地址,這通過讓Customer類持有一個(gè)類型為Address的成員變量類實(shí)現(xiàn)。

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

從上圖中我們很容易看出,所謂的雙向關(guān)聯(lián)就是雙方各自持有對(duì)方類型的成員變量。

在UML類圖中,雙向關(guān)聯(lián)用一個(gè)不帶箭頭的直線表示。上圖中在Customer類中維護(hù)一個(gè)List<Product>,表示一個(gè)顧客可以購(gòu)買多個(gè)商品;在Product類中維護(hù)一個(gè)Customer類型的成員變量表示這個(gè)產(chǎn)品被哪個(gè)顧客所購(gòu)買。

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

自關(guān)聯(lián)在UML類圖中用一個(gè)帶有箭頭且指向自身的線表示。上圖的意思就是Node類包含類型為Node的成員變量,也就是“自己包含自己”。

1.3.2.2 聚合關(guān)系

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

聚合關(guān)系也是通過成員對(duì)象來實(shí)現(xiàn)的,其中成員對(duì)象是整體對(duì)象的一部分,但是成員對(duì)象可以脫離整體對(duì)象而獨(dú)立存在。例如,學(xué)校與老師的關(guān)系,學(xué)校包含老師,但如果學(xué)校停辦了,老師依然存在。

在 UML 類圖中,聚合關(guān)系可以用帶空心菱形的實(shí)線來表示,菱形指向整體。下圖所示是大學(xué)和教師的關(guān)系圖:

1.3.2.3 組合關(guān)系

組合表示類之間的整體與部分的關(guān)系,但它是一種更強(qiáng)烈的聚合關(guān)系。

在組合關(guān)系中,整體對(duì)象可以控制部分對(duì)象的生命周期,一旦整體對(duì)象不存在,部分對(duì)象也將不存在,部分對(duì)象不能脫離整體對(duì)象而存在。例如,頭和嘴的關(guān)系,沒有了頭,嘴也就不存在了。

在 UML 類圖中,組合關(guān)系用帶實(shí)心菱形的實(shí)線來表示,菱形指向整體。下圖所示是頭和嘴的關(guān)系圖:

1.3.2.4 依賴關(guān)系

依賴關(guān)系是一種使用關(guān)系,它是對(duì)象之間耦合度最弱的一種關(guān)聯(lián)方式,是臨時(shí)性的關(guān)聯(lián)。在代碼中,某個(gè)類的方法通過局部變量、方法的參數(shù)或者對(duì)靜態(tài)方法的調(diào)用來訪問另一個(gè)類(被依賴類)中的某些方法來完成一些職責(zé)。

在 UML 類圖中,依賴關(guān)系使用帶箭頭的虛線來表示,箭頭從使用類指向被依賴的類。下圖所示是司機(jī)和汽車的關(guān)系圖,司機(jī)駕駛汽車:

1.3.2.5 繼承關(guān)系

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

在 UML 類圖中,泛化關(guān)系用帶空心三角箭頭的實(shí)線來表示,箭頭從子類指向父類。在代碼實(shí)現(xiàn)時(shí),使用面向?qū)ο蟮睦^承機(jī)制來實(shí)現(xiàn)泛化關(guān)系。例如,Student 類和 Teacher 類都是 Person 類的子類,其類圖如下圖所示:

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

實(shí)現(xiàn)關(guān)系是接口與實(shí)現(xiàn)類之間的關(guān)系。在這種關(guān)系中,類實(shí)現(xiàn)了接口,類中的操作實(shí)現(xiàn)了接口中所聲明的所有的抽象操作。

在 UML 類圖中,實(shí)現(xiàn)關(guān)系使用帶空心三角箭頭的虛線來表示,箭頭從實(shí)現(xiàn)類指向接口。例如,汽車和船實(shí)現(xiàn)了交通工具,其類圖如圖 9 所示。

2 IDEA快速構(gòu)建UML類圖

最近在開發(fā)的過程當(dāng)中,對(duì)于已有的代碼,想將相關(guān)類繪制成UML類圖,雖然現(xiàn)在有很多UML類圖的優(yōu)秀軟件,比如ProcessOn(可視化編輯)、draw.io(可視化編輯)、PlantUML(代碼生成)。

其實(shí)看到這里我就想IDEA中有沒有像PlantUML一樣的自動(dòng)生成的插件,本著懷疑的態(tài)度百度了一下,果然IDEA還是很強(qiáng)大的,這個(gè)插件都是自帶的,接下稍微講述如何利用IDEA生成UML類圖的教程。

說之前先說一下Diagram這個(gè)單詞,意思是圖表; 示意圖; 圖解; [數(shù)] 線圖的意思。

打開設(shè)置 File->Setting或windows下按Ctrl+Alt+S在搜索框中輸入``Diagram,如下圖:

如上所示,我們主要關(guān)心的只有Java Class Diagrams下面的幾個(gè)單選框,分別對(duì)應(yīng)紅字部分,一般的UML類圖只需要知道成員變量、構(gòu)造器和方法(前面三個(gè)),其他的隨意,設(shè)置好了之后我們就來演示一下,

選擇需要的類文件,在編輯器中打開它

按Ctrl + Shift + Alt + U或Ctrl + Alt + U或右鍵選擇,``生成類Uml關(guān)聯(lián)圖,如下圖:

上面的是類的UML圖,下面的support包的UML圖:

局限性:雖然這個(gè)很是方便,但是也有他自己的局限性。

首先這個(gè)功能只能是根據(jù)類來自動(dòng)生成的,所以對(duì)于設(shè)計(jì)類的時(shí)候就不行了,還是需要正規(guī)的UML圖軟件。

還有就是對(duì)于專業(yè)的UML軟件來說,這種自動(dòng)生成的東西可能表達(dá)并不是非常的準(zhǔn)確直觀,特別是對(duì)于UML圖有嚴(yán)格要求的人來說,顯得格外重要。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mybatis-plus攔截器、字段填充器、類型處理器、表名替換、SqlInjector(聯(lián)合主鍵處理)

    mybatis-plus攔截器、字段填充器、類型處理器、表名替換、SqlInjector(聯(lián)合主鍵處理)

    本文主要介紹了mybatis-plus攔截器、字段填充器、類型處理器、表名替換、SqlInjector(聯(lián)合主鍵處理),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • java Stream操作轉(zhuǎn)換方法

    java Stream操作轉(zhuǎn)換方法

    文章總結(jié)了Java 8中流(Stream) API的多種常用方法,包括創(chuàng)建流、過濾、遍歷、分組、排序、去重、查找、匹配、轉(zhuǎn)換、歸約、打印日志、最大最小值、統(tǒng)計(jì)、連接、函數(shù)式接口等,展示了流API在處理集合數(shù)據(jù)時(shí)的強(qiáng)大和靈活性,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • Spring 實(shí)現(xiàn)自定義監(jiān)聽器案例

    Spring 實(shí)現(xiàn)自定義監(jiān)聽器案例

    這篇文章主要介紹了Spring 實(shí)現(xiàn)自定義監(jiān)聽器案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • SpringBoot中使用Redisson的實(shí)現(xiàn)示例

    SpringBoot中使用Redisson的實(shí)現(xiàn)示例

    Redission是一個(gè)強(qiáng)大的Java庫(kù),用于構(gòu)建和管理分布式系統(tǒng)中的緩存和任務(wù)調(diào)度,本文主要介紹了SpringBoot中使用Redisson的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2023-12-12
  • java(包括springboot)讀取resources下文件方式實(shí)現(xiàn)

    java(包括springboot)讀取resources下文件方式實(shí)現(xiàn)

    這篇文章主要介紹了java(包括springboot)讀取resources下文件方式實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 談?wù)凧ava類型中ParameterizedType,GenericArrayType,TypeVariabl,WildcardType

    談?wù)凧ava類型中ParameterizedType,GenericArrayType,TypeVariabl,Wild

    這篇文章主要介紹Java類型中ParameterizedType,GenericArrayType,TypeVariabl,WildcardType的相關(guān)資料,需要的朋友可以參考下
    2015-10-10
  • 解決IDEA target文件夾越來越大的問題

    解決IDEA target文件夾越來越大的問題

    這篇文章主要介紹了解決IDEA target文件夾越來越大的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Java中Object用法詳解

    Java中Object用法詳解

    Java是面向?qū)ο蟮木幊陶Z(yǔ)言,而在面向?qū)ο笾?,所有的Java類都有一個(gè)共同的祖先類,這就是Object,那么Object都有哪些特性呢?今天小編就簡(jiǎn)單跟大家分析一下,感興趣的同學(xué)可以跟著小編一起學(xué)習(xí)
    2023-05-05
  • SpringBoot靜態(tài)資源目錄訪問

    SpringBoot靜態(tài)資源目錄訪問

    今天小編就為大家分享一篇關(guān)于SpringBoot靜態(tài)資源目錄訪問,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • java連接hdfs ha和調(diào)用mapreduce jar示例

    java連接hdfs ha和調(diào)用mapreduce jar示例

    這篇文章主要介紹了Java API連接HDFS HA和調(diào)用MapReduce jar包,需要的朋友可以參考下
    2014-03-03

最新評(píng)論