Office Visio 是Office軟件系列中的負(fù)責(zé)繪制流程圖和示意圖的軟件,是一款便于IT和商務(wù)人員就復(fù)雜信息、系統(tǒng)和流程進(jìn)行可視化處理、分析和交流的軟件。使用 Office Visio 圖表,可以促進(jìn)對(duì)系統(tǒng)和流程的了解。 和大家一起學(xué)習(xí)一下用Visio畫UML類圖的方法,主要有四個(gè)步驟,這里和大家分享一下,相信通過本節(jié)的學(xué)習(xí),你對(duì)Visio畫UML類圖的步驟一定會(huì)有所了解。? 用Visio畫UML類圖? 對(duì)于畫類圖的工具很多,曾經(jīng)學(xué)過用starUML畫類圖,但這個(gè)是用于Java語言的,對(duì)于用vs編程C++語言,個(gè)人感覺用visio會(huì)好一點(diǎn)。以下用以前面的俄羅斯方塊游戲中的一個(gè)Block類為例來講述。 1.首先創(chuàng)建一個(gè)類圖。接下來我們要做一下準(zhǔn)備工作,因?yàn)槲覀冞@里用了PSDK中的POINT類型,在種數(shù)據(jù)類型在visio數(shù)據(jù)類型中找不到,所以我們先得追加這個(gè)數(shù)據(jù)類型。為了便于管理我們會(huì)先創(chuàng)建PSDK數(shù)據(jù)類型包. 創(chuàng)建數(shù)據(jù)包:菜單->UML->包.打開[UML包]對(duì)話框.點(diǎn)擊[新建]按鈕,在[包]列中輸入[PSDK數(shù)據(jù)類型],并確定 2.追加POINT數(shù)據(jù)類型: 這時(shí)我們可以看到模型資源管理器(若左邊窗口沒有,可以在從菜單->UML->視圖->模型資源管理器調(diào)出)中選中剛建的PSDK數(shù)據(jù)類型,再右擊->新建->數(shù)據(jù)類型,打開UML數(shù)據(jù)類型屬性對(duì)話框。選擇[數(shù)據(jù)類型]項(xiàng)目,在名稱項(xiàng)目中填寫[POINT],選擇[確定]結(jié)束. 注意:在PSDK中POINT是一個(gè)結(jié)構(gòu)體,但是由于我們并不關(guān)心POINT的細(xì)節(jié),所以把POINT作為簡(jiǎn)單數(shù)據(jù)類型來處理。 類:Visio畫UML類圖時(shí)添加一個(gè)類很簡(jiǎn)單,從形狀窗口中[UML靜態(tài)結(jié)構(gòu)]分類中拖動(dòng)對(duì)象就可以了。 3.設(shè)定類的詳細(xì)信息:設(shè)定類的詳細(xì)信息的大部分工作都是同時(shí)屬性對(duì)話框?qū)崿F(xiàn)的.對(duì)于C++程序員來說,需要設(shè)定的內(nèi)容包括類名,數(shù)據(jù)成員,成員函數(shù).。 雙擊類或右擊->屬性打開UML類屬性對(duì)話框。在[類別]中選擇[類]項(xiàng)目,然后在右面的名稱欄目中寫入類名就可以了。這里還可以設(shè)定類的一些屬性,可以暫時(shí)先不管。 添加數(shù)據(jù)成員在右面的表格中追加成員函數(shù)。。[特性]欄目中寫入變量名,[類型]是用來選擇數(shù)據(jù)類型的。這里我們選擇[POINT]。[可見性]欄目選擇的是這個(gè)成員是公共的(private)。[多重性]是指,在類中,數(shù)據(jù)成員的個(gè)數(shù)。[1]代表在這個(gè)類中,有而且只有一個(gè)數(shù)據(jù)成員。[0..1]表示,沒有或者有一個(gè)。可以在[初始值]中輸入數(shù)據(jù)成員的初值。同樣添加其它數(shù)據(jù)成員。 4.添加成員函數(shù):在[類別]窗口中選擇[操作]項(xiàng)目。在右邊表格中追加成員函數(shù)。在[操作]寫函數(shù)名,在[可見性]中選擇函數(shù)是,共有,保護(hù)還是私有的。[多態(tài)]也就是使否是虛函數(shù)。[范圍]表示一個(gè)函數(shù)是屬于實(shí)例,還是屬于類,靜態(tài)函數(shù),也被稱為類的成員函數(shù),普通的成員函數(shù)也被稱為實(shí)例的成員函數(shù)。所以如過,在這里選中了[分類器],就說明這個(gè)函數(shù)是靜態(tài)函數(shù)。 Visio畫UML類圖時(shí),對(duì)于上面的操作,只是設(shè)定函數(shù)的一些基本信息,更詳細(xì)的信息可以通過選中函數(shù)后,點(diǎn)擊[屬性]按鈕,在出現(xiàn)的[UML操作屬性]窗口中設(shè)定。首先是設(shè)定函數(shù)的基本信息。和上面的窗口重復(fù)的內(nèi)容,我們不再說明。我們只說明[前綴]和[后綴]。如果我們想要返回的類型是指針類型或者是應(yīng)用類型的話,只要在[后綴]中填寫[*]或[&]就可以了。 下圖是用Visio畫UML類圖完成之后的效果。 ? ? ============================== Uml?關(guān)系主要有四大類: 依賴,關(guān)聯(lián),泛化,實(shí)現(xiàn)。 其中 依賴和關(guān)聯(lián)是事物之間語義上的橫向關(guān)系,泛化和實(shí)現(xiàn)是事物之間的縱向關(guān)系。 一:依賴 Dependency 圖示:-----> 定義:關(guān)系最為松散的,單向的,暫時(shí)產(chǎn)生關(guān)系的事物之間使用。 使用圖例:在靜態(tài)圖、組件圖、部署圖中兩事物的弱依賴關(guān)系用此圖示。 二:關(guān)聯(lián) Association 圖示:此圖為visio中畫法(在uml靜態(tài)結(jié)構(gòu)中,拖動(dòng)復(fù)合圖例,然后雙擊此圖例,將出現(xiàn)下圖,在關(guān)聯(lián)端list中,聚合列都選擇無,然后在isNavigable列中選擇劃箭頭的端。然后點(diǎn)選確定,就出現(xiàn)右側(cè)的關(guān)聯(lián)圖例)。 ? 定義:兩事物之間的比較密切關(guān)系。 實(shí)體之間的一個(gè)結(jié)構(gòu)化關(guān)系表明對(duì)象是相互連接的。箭頭是可選的,它用于指定導(dǎo)航能力。如果沒有箭頭,暗示是一種雙向的導(dǎo)航能力。關(guān)聯(lián)轉(zhuǎn)換為一個(gè)實(shí)例作用域的變量。可為一個(gè)關(guān)聯(lián)附加其他修飾符。多重性(Multiplicity)修飾符暗示著實(shí)例之間的關(guān)系。 使用圖例:在靜態(tài)圖中使用,其他圖中也有類似的關(guān)聯(lián)關(guān)系,但細(xì)化為其他關(guān)系。 其中具體細(xì)分了兩種關(guān)系:聚合和組合。 1聚合 Aggregation 圖示:此圖為visio中畫法(在uml靜態(tài)結(jié)構(gòu)中,拖動(dòng)復(fù)合圖例,然后雙擊此圖例,將出現(xiàn)下圖,在關(guān)聯(lián)端list中,在聚合列中在需劃箭頭端選擇共享選項(xiàng)。然后點(diǎn)選確定,就出現(xiàn)左側(cè)的聚合圖例)。 定義:整體和個(gè)體之間的關(guān)系,個(gè)體生命周期的消亡對(duì)整體生命周期沒有太大的影響。has a的關(guān)系。 聚合是關(guān)聯(lián)的一種形式,代表兩個(gè)類之間的整體/局部關(guān)系。聚合暗示著整體在概念上處于比局部更高的一個(gè)級(jí)別,而關(guān)聯(lián)暗示兩個(gè)類在概念上位于相同的級(jí)別。聚合也轉(zhuǎn)換成一個(gè)實(shí)例作用域變量。關(guān)聯(lián)和聚合的區(qū)別純粹是概念上的,而且嚴(yán)格反映在語義上。聚合還暗示著實(shí)例圖中不存在回路。換言之,只能是一種單向關(guān)系。2組合 Composition 圖示:此圖為visio中畫法(在uml靜態(tài)結(jié)構(gòu)中,直接拖動(dòng)復(fù)合圖例) 定義:整體和個(gè)體之間的關(guān)系,contains a 的關(guān)系。 組合是聚合的一種特殊形式,暗示“局部”在“整體”內(nèi)部的生存期職責(zé)。組合也是非共享的。所以,雖然局部不一定要隨整體的銷毀而被銷毀,但整體要么負(fù)責(zé)保持局部的存活狀態(tài),要么負(fù)責(zé)將其銷毀。局部不可與其他整體共享。但是,整體可將所有權(quán)轉(zhuǎn)交給另一個(gè)對(duì)象,后者隨即將承擔(dān)生存期職責(zé)。在visio中 聚合和組合關(guān)系被分別稱之為共享和復(fù)合關(guān)系。主要在靜態(tài)圖中使用。菱形為整體一端,另一端為個(gè)體。 三:泛化 Generalization 圖示:此圖為visio中畫法(在uml靜態(tài)結(jié)構(gòu)中,直接拖動(dòng)歸納圖例) 定義:特殊到一般的關(guān)系。在軟件開發(fā)中被稱為繼承關(guān)系,is a 的關(guān)系。 四:實(shí)現(xiàn) Realization 圖示:此圖為visio中畫法(右擊類,然后選擇形狀顯示選項(xiàng),然后再勾選如左邊所示的實(shí)現(xiàn)鏈接,點(diǎn)選確定,此時(shí)選擇此類例圖,將出現(xiàn)黃色菱形,點(diǎn)選黃色菱形,然后劃線到要關(guān)聯(lián)的事物中。即出現(xiàn)此虛箭頭線)。 定義:類元之間的實(shí)現(xiàn)關(guān)系,在軟件開發(fā)中被稱為實(shí)現(xiàn)接口,或者抽象類之間的實(shí)現(xiàn)關(guān)系。 ? 另外在用例圖中,存在3種關(guān)系 1:參與者與參與者之間泛化關(guān)系,即visio中的歸納圖例。 2:參與者與用例之間用依賴關(guān)系。即visio中的通信圖例。 3:用例與用例之間用關(guān)聯(lián)關(guān)系,即拖拽visio中的擴(kuò)展圖例。有時(shí)也可以用泛化關(guān)系。 其中關(guān)聯(lián)分為兩類:include關(guān)系,extends關(guān)系。 1)包含關(guān)系:把幾個(gè)用例的公共步驟分離成一個(gè)被包含的用例,用例間的包含關(guān)系允許包含提供者用例的行為到客戶用例中.把包含用例稱為客戶用例,被包含用例稱為提供者用例.包含用例提供功能給客戶用例。通俗一點(diǎn)講就是把一個(gè)復(fù)雜的事物,拆分成幾部分,整體和部分之間用包含關(guān)系。 2)擴(kuò)展關(guān)系:是把新行為插入到已有用例中的方法.基礎(chǔ)用例提供了一組擴(kuò)展點(diǎn).這些擴(kuò)展點(diǎn)可以添加新的行為.而擴(kuò)展用例提供了一組插入片段.這些片段能插入到基礎(chǔ)用例的擴(kuò)展點(diǎn)。將基用例中一段相對(duì)獨(dú)立并且可選的動(dòng)作,用擴(kuò)展(Extension)用例加以封裝,再讓它從基用例中聲明的擴(kuò)展點(diǎn)(Extension Point)上進(jìn)行擴(kuò)展,從而使基用例行為更簡(jiǎn)練和目標(biāo)更集中,做基事件之后,我可能做擴(kuò)展事件,也可能不做(在特殊情況下需要的新功能,擴(kuò)展點(diǎn)就是特殊情況)。通俗一點(diǎn)講就是一個(gè)操作,可以有多種選擇方式,每種方式都可以實(shí)現(xiàn)此功能。多個(gè)實(shí)現(xiàn)和功能接口之間是一種擴(kuò)展關(guān)系。 3)泛化關(guān)系:用例的泛化關(guān)系與類的泛化關(guān)系相似,即在用例泛化中,子用例表示父用例的特殊形式,子用例從父用例繼承了行為和屬性,還可以添加行為和屬性,改變已繼承的行為。子用例可以使用父用例的一段行為,也可以重載它。父用例通常是抽象的。在實(shí)際應(yīng)用中很少使用泛化關(guān)系,子用例中的特殊行為都可以作為父用例中的備選流存在。 ? 包含以及擴(kuò)展過程與泛化過程類似 共性:都是從現(xiàn)有的用例中抽取出公共的那部分信息,作為一個(gè)單獨(dú)的用例,然后通后過不同的方法來重用這個(gè)公共的用例,以減少模型維護(hù)的工作量 但三者對(duì)用例關(guān)系的優(yōu)化側(cè)重點(diǎn)是不同的。如下: ?既然用例是系統(tǒng)提供服務(wù)的UML表述,那么服務(wù)這個(gè)過程在所有用例場(chǎng)景中是必然發(fā)生的,但發(fā)生按照發(fā)生條件可分為如下兩種情況: ???????? ⒈無條件發(fā)生:肯定發(fā)生的; ???????? ⒉有條件發(fā)生:未必發(fā)生,發(fā)生與否取決于系統(tǒng)狀態(tài); ???????? 因此,針對(duì)用例的三種關(guān)系結(jié)合系統(tǒng)狀態(tài)考慮,泛化與包含用例屬于無條件發(fā)生的用例,而擴(kuò)展屬于有條件發(fā)生的用例。進(jìn)一步,用例的存在是為Actor提供服 務(wù),但用例提供服務(wù)的方式可分為間接和直接兩種,依據(jù)于此,泛化中的子用例提供的是直接服務(wù),而包含中的被包含用例提供的是間接服務(wù)。同樣,擴(kuò)展用例提供的也是直接服務(wù),但擴(kuò)展用例的發(fā)生是有條件的。 ?另外一點(diǎn)需要提及的是:泛化中的子用例和擴(kuò)展中的擴(kuò)展用例均可以作為基本用例事件的備選擇流而存在。 ? 備注:默認(rèn)情況下visio沒有include關(guān)系,可以通過一下方式來添加,選擇工具欄uml,再選擇構(gòu)造型,添加如圖所示的一行,點(diǎn)選確定。此后將可以引用此include關(guān)系。 拖一個(gè)擴(kuò)展圖例,然后雙擊,如下圖,構(gòu)造型中就多出一個(gè)list include,選擇include,點(diǎn)選確定。此時(shí)右側(cè)擴(kuò)展圖例上的文字將變?yōu)閕nclude. Visio幫助您創(chuàng)建具有專業(yè)外觀的圖表,以便理解、記錄和分析信息、數(shù)據(jù)、系統(tǒng)和過程。 |
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!