一篇文章帶你入門Java?UML的類圖
一、什么是UML
統(tǒng)一建模語(yǔ)言(Unified Modeling Language,UML)是一種為面向?qū)ο笙到y(tǒng)的產(chǎn)品進(jìn)行說(shuō)明、可視化和編制文檔的一種標(biāo)準(zhǔn)語(yǔ)言,是非專利的第三代建模和規(guī)約語(yǔ)言。UML是面向?qū)ο笤O(shè)計(jì)的建模工具,獨(dú)立于任何具體程序設(shè)計(jì)語(yǔ)言。
UML 本身是一套符號(hào)的規(guī)定,就像數(shù)學(xué)符號(hào)和化學(xué)符號(hào)一樣,這些符號(hào)用于描述軟件模型中的各個(gè)元素和他 們之間的關(guān)系,比如類、接口、實(shí)現(xiàn)、泛化、依賴、組合、聚合等。
使用UML圖的好處:
- UML可以幫助開發(fā)團(tuán)隊(duì)以一種可視化的方式理解系統(tǒng)的功能需求。
- UML統(tǒng)一了各種方法對(duì)不同類型的系統(tǒng)、不同開發(fā)階段以及不同內(nèi)部概念的不同觀點(diǎn),從而有效的消除了各種建模語(yǔ)言之間不必要的差異。
- UML建模能力比其它面向?qū)ο蠼7椒ǜ鼜?qiáng)。它不僅適合于一般系統(tǒng)的開發(fā),而且對(duì)并行、分布式系統(tǒng)的建模尤為適宜。
- 使用UML使硬件組件和軟件組件之間將會(huì)有更大的透明度。便攜性和綜合效率將會(huì)增加。
UML圖的模型分類:
- 功能模型:從用戶的角度展示系統(tǒng)的功能,包括用例圖。
- 對(duì)象模型:采用對(duì)象,屬性,操作,關(guān)聯(lián)等概念展示系統(tǒng)的結(jié)構(gòu)和基礎(chǔ),包括類圖、對(duì)象圖。
- 動(dòng)態(tài)模型:展現(xiàn)系統(tǒng)的內(nèi)部行為,包括交互圖(時(shí)序圖與協(xié)作圖)、狀態(tài)圖、活動(dòng)圖。
二、UML類圖
UML類圖是描述系統(tǒng)中的類,以及各個(gè)類之間的關(guān)系的靜態(tài)視圖。能夠讓我們?cè)谡_編寫代碼以前對(duì)系統(tǒng)有一個(gè)全面的認(rèn)識(shí)。類圖是一種模型類型,確切地說(shuō),是一種靜態(tài)模型類型。類圖表示類、接口和它們之間的協(xié)作關(guān)系。
類圖中的關(guān)系:
依賴關(guān)系(Dependency
):如果在一個(gè)類中使用到了其他類(包括屬性,方法的參數(shù)、返回結(jié)果以及方法中),那么這兩個(gè)類之間就存在依賴關(guān)系。使用虛線箭頭表示。例如人、電話、使用電腦工作等。
代碼表示:
//人 public class Person { private Phone phone; //使用電腦工作 public void work(Computer computer){ ... } } //電話 class Phone{ } //電腦 class Computer{ }
UML圖表示:
繼承關(guān)系(Generalization
):也叫泛化關(guān)系,就是我們代碼中說(shuō)的繼承。使用空心箭頭實(shí)線表示。例如BaseService與Service。
代碼表示:
public class ServiceImpl extends BaseService{ } interface BaseService{ }
UML圖表示:
實(shí)現(xiàn)關(guān)系(Implementation
):同樣是我們代碼中說(shuō)的那個(gè)接口實(shí)現(xiàn)。使用空心箭頭虛線表示。例如Service層。
代碼表示:
public class ServiceImpl implements IService{ } interface IService{ }
UML圖表示:
關(guān)聯(lián)關(guān)系(Generalization
):關(guān)聯(lián)關(guān)系是依賴關(guān)系中的一種。常指1對(duì)多,多對(duì)多等的屬性關(guān)聯(lián)關(guān)系。使用實(shí)線箭頭表示,單向關(guān)聯(lián)需要有箭頭指向,雙向關(guān)聯(lián)可以有箭頭也可以沒有。例如:老師、學(xué)生、課程的關(guān)系。
代碼表示:
//學(xué)生 public class Student { List<Teacher> teachers; List<Course> courses; } //老師 class Teacher{ List<Student> students; } //課程 class Course{ }
UML圖表示:
聚合關(guān)系(Aggregation
):表示整體和部分的關(guān)系,聚合關(guān)系的整體和部分是可以拆分開的。使用空心菱形實(shí)線表示。例如電腦、鍵盤、屏幕的關(guān)系。
代碼表示:
//電腦 public class Computer { private Screen screen; private Keyboard keyboard; } //屏幕 class Screen { } //鍵盤 class Keyboard { }
UML圖表示:
組合關(guān)系(Composition
):表示整體和部分的關(guān)系,但是組合關(guān)系整體和部分是不可拆分的。使用實(shí)心菱形實(shí)線表示。例如公司和部門的關(guān)系,部門脫離了公司不能單獨(dú)存在。
代碼表示:
//公司 public class Company { List<Department> departments; } //部門 class Department { }
UML圖表示:
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
SpringBoot+WebSocket實(shí)現(xiàn)多人在線聊天案例實(shí)例
本文主要介紹了SpringBoot+WebSocket實(shí)現(xiàn)多人在線聊天案例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02詳解Spring Cloud Gateway 數(shù)據(jù)庫(kù)存儲(chǔ)路由信息的擴(kuò)展方案
這篇文章主要介紹了詳解Spring Cloud Gateway 數(shù)據(jù)庫(kù)存儲(chǔ)路由信息的擴(kuò)展方案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11使用springboot整合RateLimiter限流過(guò)程
這篇文章主要介紹了使用springboot整合RateLimiter限流過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06Java實(shí)現(xiàn)雙鏈表互相交換任意兩個(gè)節(jié)點(diǎn)的方法示例
這篇文章主要介紹了Java實(shí)現(xiàn)雙鏈表互相交換任意兩個(gè)節(jié)點(diǎn)的方法,簡(jiǎn)單講述了雙鏈表的概念,并結(jié)合實(shí)例形式給出了java雙鏈表實(shí)現(xiàn)任意兩個(gè)節(jié)點(diǎn)交換的操作技巧,需要的朋友可以參考下2017-11-11詳解SpringBoot中5種類型參數(shù)傳遞和json數(shù)據(jù)傳參的操作
當(dāng)涉及到參數(shù)傳遞時(shí),Spring?Boot遵循HTTP協(xié)議,并支持多種參數(shù)傳遞方式,這些參數(shù)傳遞方式可以根據(jù)請(qǐng)求的不同部分進(jìn)行分類,2023-12-12IntelliJ IDEA修改內(nèi)存大小,使得idea運(yùn)行更流暢
今天小編就為大家分享一篇關(guān)于IntelliJ IDEA修改內(nèi)存大小,使得idea運(yùn)行更流暢的文章,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10