1、概念 : UML這三個字母的全稱是Unified Modeling Language,直接翻譯就是統(tǒng)一建模語言,簡單地說就是一種有特殊用途的語言。
2、作用 :UML可幫助我們做軟件需求分析和軟件設(shè)計的工作,是系統(tǒng)分析和設(shè)計階段的重要產(chǎn)物,也是系統(tǒng)編碼和測試的重要模型依據(jù)。
類之間的關(guān)系
類與類一共有如下幾種關(guān)系:泛化(Generalization)、實現(xiàn)(Realization)、依賴(Dependence)、關(guān)聯(lián)(Association)、聚合(Aggregation)、組合(Composition)
1.泛化關(guān)系Generalization
2.實現(xiàn)關(guān)系Realization
3.依賴關(guān)系Dependence
4.關(guān)聯(lián)關(guān)系A(chǔ)ssociation
5.聚合關(guān)系A(chǔ)ggregation
6.組合關(guān)系Composition
3、分類
1)靜態(tài)圖:主要描繪了類、對象和數(shù)據(jù)結(jié)構(gòu)及其存在于他們之間的關(guān)系。類圖就是其中一種。
2)動態(tài)圖 : 主要描繪執(zhí)行流程、實體改變狀態(tài)的方式。例如 : 流程圖
3)物理圖 : 描繪庫文件、字節(jié)文件和數(shù)據(jù)文件等以及存在于他們之間的關(guān)系
二、如何用類圖表示一個類
類圖: 用于描述系統(tǒng)中所包含的類以及它們之間的相互關(guān)系,幫助人們簡化對系統(tǒng)的理解,它是系統(tǒng)分析和設(shè)計階段的重要產(chǎn)物,也是系統(tǒng)編碼和測試的重要模型依據(jù)。

Person.java
publicclassPerson{publicintage;privateString mobilePhone;protectedcharsex;publicstaticvoidspeak(){}}
1、- 是private的意思,對應(yīng)私有成員(變量、方法)
2、+ 是public 的意思,公開給外部訪問的成員(變量、方法)
3、# 是protected的意思,只能在本類或子類訪問成員(變量、方法)
4、UML 規(guī)定的屬性(Attribute)表達(dá)式
可見性 名稱:類型 [ = 缺省值 ]
其中 :
1> 可見性 :表示該屬性對于類外的元素而言是否可見,
包括公有(public)、私有(private)和受保護(hù)(protected)三種,
在類圖中分別用符號+、-和#表示
2> 名稱? :表示屬性名,用一個字符串表示
3> 類型? :表示屬性的數(shù)據(jù)類型,可以是基本數(shù)據(jù)類型,也可以是用戶自定義類型
4> 缺省值 :是一個可選項,即屬性的初始值。
5、UML方法(Operation)表達(dá)式
可見性 名稱(參數(shù)列表) [ : 返回類型]
其中 :
1> 可見性? :? 定義與屬性的可見性定義相同
2> 名稱? ? : 即方法名,用一個字符串表示
3> 參數(shù)列表 : 表示方法的參數(shù),其語法與屬性的定義相似,參數(shù)個數(shù)是任意的,多個參數(shù)之間用逗號“,”隔開
4> 返回類型 : 是一個可選項,表示方法的返回值類型,
依賴于具體的編程語言,可以是基本數(shù)據(jù)類型,
也可以是用戶自定義類型,還可以是空類型(void),
如果是構(gòu)造方法,則無返回類型。
6、內(nèi)部類的表示

person.java
三、類和類之間(常見)的關(guān)系
1、單向關(guān)聯(lián)
單向?qū)嵕€加箭頭表示->

單向關(guān)聯(lián)
publicclassCustomer{publicAddress address;//定義為成員變量// 其他代碼}publicclassAddress{//其他代碼? }
2、雙向關(guān)聯(lián)

雙向關(guān)聯(lián)
publicclassCustomer{publicProduct products;//一些其他代碼}publicclassProduct{publicCustomer customer;//一些其他代碼}
3、自關(guān)聯(lián)

自關(guān)聯(lián)
4、聚合關(guān)系(多只雁子組成和雁群)

聚合關(guān)系
也有將聚合關(guān)系表示如下圖

聚合關(guān)系
//雁群類publicclassGooseGroup{privateGoose groose;publicGooseGroup(Goose groose){this.groose=groose;}}// 雁子類publicclassGroose{}注意 : 雁子類可單獨存在,生命周期不跟雁群類綁定
5、組合關(guān)系(雁子有翅膀)

組合關(guān)系
也有將 組合關(guān)系表示如下圖

組合關(guān)系
組合關(guān)系在Java 代碼表示如下:
// 雁子類publicclassGoose{publicWing wing;publicGoose(){this.wing=newWing();}}//翅膀類publicclassWing{}注意 : 翅膀類在雁子類的構(gòu)造函數(shù)中進(jìn)行實例化,因此兩者緊密耦合在一起,同生同滅,翅膀類不能脫離大雁類存在。
注意: 聚合和組合的區(qū)別主要是在構(gòu)造函數(shù)上面的區(qū)別。聚合關(guān)系中,整件不會擁有部件的生命周期。組合關(guān)系中,整件擁有部件的生命周期。
6、多重性關(guān)系
表示兩個關(guān)聯(lián)對象在數(shù)量上的對應(yīng)關(guān)系。在UML中,對象之間的多重性可以直接在關(guān)聯(lián)直線上用一個數(shù)字或一個數(shù)字范圍表示

多重性關(guān)系

多重性關(guān)系
在java中代碼標(biāo)示如下:
publicclassTools{publicButton buttons[];}publicclassButton{}
7、依賴關(guān)系
大多數(shù)情況下,依賴關(guān)系體現(xiàn)在某個類的方法使用另一個類的對象作為參數(shù)。在UML中,依賴關(guān)系用帶箭頭的虛線表示,由依賴的一方指向被依賴的一方。

依賴關(guān)系
在java中代碼標(biāo)示如下:
// 父類publicclassPerson{publicvoiddrive(Car car){car.drive();}}// 汽車類publicclassCar{publicvoiddrive(){//執(zhí)行一些任務(wù)}}
8、泛化(繼承)關(guān)系

繼承
在java中代碼標(biāo)示如下:
// 父類publicclassPerson{publicStringname;publicintage;publicvoidspeak(){}}// 學(xué)生類publicclassStudentextendsPerson{publicStringstudentNo;//特有學(xué)習(xí)能力publicvoidstudy(){}}// 教師類publicclassTeacherextendsPerson{publicStringteacherNo;// 特有的教書能力publicvoidteach(){}}
9、接口和實現(xiàn)關(guān)系

接口實現(xiàn)
在java中代碼標(biāo)示如下:
publicinterfaceVehicle{publicvoidmove();}publicclassShipimplementsVehicle{publicvoidmove(){}}publicclassCarimplementsVehicle{publicvoidmove(){}}
作者:時光機器01
鏈接:http://www.itdecent.cn/p/a4226c003728
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。