使用VS2013或VS2015生成UML類圖
1.UML簡(jiǎn)介
Unified Modeling Language (UML)又稱統(tǒng)一建模語(yǔ)言或標(biāo)準(zhǔn)建模語(yǔ)言。
簡(jiǎn)單說(shuō)就是以圖形方式表現(xiàn)模型,根據(jù)不同模型進(jìn)行分類,在UML 2.0中有13種圖,以下是他們的主要用途簡(jiǎn)介:
1.用例圖:對(duì)系統(tǒng)的使用方式分類.
2.類圖:顯示類和它們的相互關(guān)系。
3.對(duì)象圖:只顯示對(duì)象及它們的相互關(guān)系。
4.活動(dòng)圖:顯示人或?qū)ο蟮幕顒?dòng),其方式類似于流程圖。
5.狀態(tài)機(jī)圖:顯示生命周期比較有趣或復(fù)雜的對(duì)象的各種狀態(tài)。
6.通信圖:顯示在某種情形下對(duì)象之間發(fā)送的消息。
7.順序圖:顯示與通信圖類以的信息,但強(qiáng)調(diào)的是順序,而不是連接。
8.包圖:顯示相關(guān)的類如何組合,對(duì)開(kāi)發(fā)人員有用。
9.部署圖:顯示安裝已完成系統(tǒng)的機(jī)器、過(guò)程和部署制品。
10.組件圖:顯示可重用的組件(對(duì)象或子系統(tǒng))及期接口。
11.交互總圖:使用順序圖喧赤活動(dòng)的務(wù)個(gè)步驟。
12.時(shí)間圖:顯示消息和對(duì)象狀態(tài)的準(zhǔn)確時(shí)間限制。
13.復(fù)合結(jié)構(gòu)圖:顯示對(duì)象在聚合或復(fù)合中的相互關(guān)系,顯示接口和協(xié)作的對(duì)象?
常用的 UML 圖可分靜(態(tài))圖、動(dòng)(態(tài))圖兩類,靜態(tài)圖主要描繪軟件的靜態(tài)結(jié)構(gòu),而動(dòng)態(tài)圖主要描繪軟件的動(dòng)態(tài)行為。
常用 UML 動(dòng)態(tài)圖(5 個(gè)):用例圖,活動(dòng)圖,狀態(tài)機(jī)圖,序列圖,通信圖。
常用 UML 靜態(tài)圖(4 個(gè)):類圖,包圖,部署圖,構(gòu)件圖。?
?
2.UML類圖
?
在所有UML圖中,類圖是使用頻率最高的UML圖。
類圖用于描述系統(tǒng)中所包含的類以及它們之間的相互關(guān)系,幫助人們簡(jiǎn)化對(duì)系統(tǒng)的理解,它是系統(tǒng)分析和設(shè)計(jì)階段的重要產(chǎn)物,也是系統(tǒng)編碼和測(cè)試的重要模型依據(jù)。
類圖主要關(guān)系有:泛化(Generalization), ?實(shí)現(xiàn)(Realization),關(guān)聯(lián)(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)
2.1 泛化
【泛化關(guān)系】:是一種繼承關(guān)系,?表示一般與特殊的關(guān)系,?它指定了子類如何特化父類的所有特征和行為.?例如:老虎是動(dòng)物的一種,?即有老虎的特性也有動(dòng)物的共性.
【箭頭指向】:帶三角箭頭的實(shí)線,箭頭指向父類
?
?
? 2.2?實(shí)現(xiàn)(Realization)?
【實(shí)現(xiàn)關(guān)系】:是一種類與接口的關(guān)系,表示類是接口所有特征和行為的實(shí)現(xiàn).
【代碼體現(xiàn)】:類實(shí)現(xiàn)接口成員?
【箭頭指向】:帶三角箭頭的虛線,箭頭指向接口
?2.3?關(guān)聯(lián)(Association)?
【關(guān)聯(lián)關(guān)系】:是一種擁有的關(guān)系,它使一個(gè)類知道另一個(gè)類的屬性和方法;?
【代碼體現(xiàn)】:成員變量?
【箭頭及指向】:帶普通箭頭的實(shí)心線,指向被擁有者
上圖,表示企業(yè)和員工的關(guān)聯(lián)關(guān)系,員工都屬于一個(gè)企業(yè)
除此之外,關(guān)聯(lián)關(guān)系允許互相關(guān)聯(lián),比如夫妻關(guān)系,可以互相關(guān)聯(lián)。也允許自關(guān)聯(lián),即自己也是自己的成員之一。?
2.4?聚合(Aggregation)?
【聚合關(guān)系】:是整體與部分的關(guān)系,且部分可以離開(kāi)整體而單獨(dú)存在。如車(chē)和輪胎是整體和部分的關(guān)系,輪胎離開(kāi)車(chē)仍然可以存在。?
? ? ? ? ? ? ? ? ? ? 聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是強(qiáng)的關(guān)聯(lián)關(guān)系;關(guān)聯(lián)和聚合在語(yǔ)法上無(wú)法區(qū)分,必須考察具體的邏輯關(guān)系。?
【代碼體現(xiàn)】:成員變量?
【箭頭及指向】:帶空心菱形的實(shí)心線,菱形指向整體
?
2.5?組合(Composition)?
【組合關(guān)系】:是整體與部分的關(guān)系,但部分不能離開(kāi)整體而單獨(dú)存在。如公司和部門(mén)是整體和部分的關(guān)系,沒(méi)有公司就不存在部門(mén)。?
? ? ? ? ? ? ? ? ? ?組合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系還要強(qiáng)的關(guān)系,它要求普通的聚合關(guān)系中代表整體的對(duì)象負(fù)責(zé)代表部分的對(duì)象的生命周期。?
【代碼體現(xiàn)】:成員變量?
【箭頭及指向】:帶實(shí)心菱形的實(shí)線,菱形指向整體
?
2.6?依賴(Dependency)?
【依賴關(guān)系】:是一種使用的關(guān)系,即一個(gè)類的實(shí)現(xiàn)需要另一個(gè)類的協(xié)助,所以要盡量不使用雙向的互相依賴.?
【代碼表現(xiàn)】:局部變量、方法的參數(shù)或者對(duì)靜態(tài)方法的調(diào)用?
【箭頭及指向】:帶箭頭的虛線,指向被使用者?
例如:程序員需要依賴計(jì)算機(jī)
3.VS20132015 中UML類圖的操作
在.NET開(kāi)發(fā)中,我們可以使用VS自有的功能方便設(shè)計(jì)類圖,VS2013旗艦版和VS2015企業(yè)版都有建模工程,下面介紹一下如何使用VS建模
(1)在VS中新建,選擇”建模項(xiàng)目“,如下:
?
(2)打開(kāi)建模項(xiàng)目,增加一個(gè)UML類圖
(3)打開(kāi)新建的UML類圖文件,通過(guò)工具欄建立類、接口等,并創(chuàng)建關(guān)系
(4)將設(shè)計(jì)好的UML類圖,生成代碼
(5)查看生成代碼
(6)逆向(由代碼生成類圖)
在VS中,我們可以將代碼很方便的生成UML類圖,如下