UML

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)載請注明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容