學(xué)習(xí) UML 筆記
前言
為了自己能快速將 UML 技術(shù)應(yīng)用在軟件開發(fā)的設(shè)計(jì)過程當(dāng)中,特總結(jié)出如下簡潔的筆記,不過只是自己學(xué)習(xí)之用,其間的用語難免不考究,正確性也日后也待驗(yàn)證。繪制UML的工具本人采用了開元ArgoUML工具小巧易用。
1. 為什么要建模
建模是開發(fā)優(yōu)秀軟件所有活動(dòng)的核心部分,其目的就是把所設(shè)計(jì)的結(jié)構(gòu)與系統(tǒng)的行為溝通起來,并對(duì)系統(tǒng)的體系結(jié)構(gòu)進(jìn)行可視化和控制.建模是為了真正理解正在構(gòu)造的系統(tǒng).
2.UML 主要有哪些圖
<!--[if !supportLists]--> ² <!--[endif]--> 靜態(tài)圖
描述了那些不發(fā)生變化的軟件元素的落界結(jié)構(gòu),描繪了類、對(duì)象、數(shù)據(jù)結(jié)構(gòu)及其存在于他們之間的關(guān)系。
<!--[if !supportLists]--> ² <!--[endif]--> 動(dòng)態(tài)圖
展示了在運(yùn)行期間軟件實(shí)體的變化,描繪了執(zhí)行流程、實(shí)體改變狀態(tài)的方法。
<!--[if !supportLists]--> ² <!--[endif]--> 物理圖
顯示了軟件實(shí)體的不變化的物理結(jié)構(gòu)描繪了物理實(shí)體有源文件、庫文件、數(shù)據(jù)文件等等,以及存在于他們之間的關(guān)系。
2.1 類圖
2.1.1 類
類圖屬于靜態(tài)圖,類圖也是本學(xué)習(xí)任務(wù)中的重點(diǎn)。
eg :
解釋:
‘ - ’號(hào)表示變量或者方法為私有。
‘ + ’號(hào)表示變量或者方法為公有。
‘ # ’號(hào)表示變量或者方法為受保護(hù)的。
‘:’號(hào)表示變量或者參數(shù)所屬類型,在方法之后表示方法返回值類型。
2.1.2 關(guān)聯(lián)
類之間的關(guān)聯(lián)大多用來表示變量實(shí)例持有著對(duì)其他對(duì)象的引用。
帶箭頭的線一般表示關(guān)系、關(guān)聯(lián),而箭頭附近的數(shù)字表示含有實(shí)例的數(shù)目。而直線下方的名稱表示變量或者實(shí)例的名稱。
eg :
<!--[endif]-->
當(dāng)變量(實(shí)例)的數(shù)目比較多的時(shí),可用‘ * ’表示,一般在程序中用 vector 或者 list 表示。
<!--[endif]-->
2.1.3 繼承
<!--[endif]--> :三角型箭頭表示的是繼承(泛化)。
eg :
<!--[endif]-->
[ 注意:箭頭是指向基類的。 ]
如果繼承接口,那么用虛線的三角型箭頭。
接口被畫成象一個(gè)棒棒糖的符號(hào),并連接在實(shí)現(xiàn)他的類上。
eg : <!--[endif]-->
類的構(gòu)造型顯示在一對(duì)雙角括號(hào)里面 ”<<>>” ,常在類的名稱上面。
eg :
<!--[endif]-->
當(dāng)構(gòu)造型為 <<utility>> ,那么該類的所有方法和屬性都是靜態(tài)的(常為工具類)。
eg :
<!--[endif]-->
2.1.4 聚合
關(guān)聯(lián)的一種特殊形式,它意味著一種整體和部分( whole/part )的關(guān)系。
<!--[endif]-->
2.1.5 內(nèi)部類
內(nèi)部類在 UML 中以一個(gè)帶十字的圓圈的關(guān)聯(lián)標(biāo)記來表示。
eg :
<!--[endif]-->
匿名內(nèi)部類的構(gòu)造型有 <<anonymous>>
2.2 交互視圖——序列圖、協(xié)作圖
交互視圖描述了執(zhí)行系統(tǒng)功能的各個(gè)角色之間相互傳遞
統(tǒng)內(nèi)交互關(guān)系中起特定作用的一個(gè)對(duì)象的描述,這使它區(qū)別于同類的其他對(duì)象。交互視圖顯
示了跨越多個(gè)對(duì)象的系統(tǒng)控制流程。
UML 交互圖以圖形的形式表示出方法調(diào)用過程,它有兩種形式:序列(順序圖)圖( Sequence Diagram )和協(xié)作圖( Collaboration Diagram )。
協(xié)作圖 : 是用幾何排列來表示交互作用中的各角色(如圖 3 - 4 )。附在類元角色上的箭頭代表
序列圖是一種被使用 UML 的人使用的最常用的動(dòng)態(tài)建模畫法。
序列圖表示了對(duì)象之間傳送
即用垂直線代表整個(gè)交互過程中對(duì)象的生命期。生命線之間的箭頭連線代表
以用來進(jìn)行一個(gè)場景說明—即一個(gè)事務(wù)的歷史過程。
什么時(shí)候該用序列圖?只有當(dāng)你迫切地需要給某人描述一組對(duì)象的如何協(xié)作的情況的時(shí)候,或者當(dāng)你要為你自己可視化協(xié)作情況的時(shí)候,你再去用序列圖。
2.3 用例圖
什么是用例圖?
用例視圖是被稱為參與者的外部用戶所能觀察到的系統(tǒng)功能的模型圖。用例是系統(tǒng)中的
一個(gè)功能單元,可以被描述為參與者與系統(tǒng)之間的一次交互作用。用例模型的用途是列出系
統(tǒng)中的用例和參與者,并顯示哪個(gè)參與者參與了哪個(gè)用例的執(zhí)行。一個(gè)用例是有關(guān)一個(gè)系統(tǒng)的行為的一個(gè)描述。那個(gè)描述是從一個(gè)用戶的觀點(diǎn)編寫的。
處理用例的真正訣竅是保持用例的簡單,細(xì)節(jié)是不重要的,除非到了最后。把用例當(dāng)作最及時(shí)的需求。在 UML 中的所有的圖,用例圖是最容易混淆的,也是最沒有什么用的,不過系統(tǒng)邊界圖除外。
一般橢圓形表示一個(gè)一個(gè)的用例,小人表示行為者。
eg :(一個(gè)論壇
<!--[endif]-->
2.4 活動(dòng)圖
活動(dòng)圖是狀態(tài)機(jī)的一個(gè)變體,用來描述執(zhí)行算法的工作流程中涉及的活動(dòng)。活動(dòng)狀態(tài)代表了一個(gè)活動(dòng):一個(gè)工作流步驟或一個(gè)操作的執(zhí)行。活動(dòng)圖描述了一組順序的或并發(fā)的活動(dòng)。活動(dòng)視圖用活動(dòng)圖來體現(xiàn)。活動(dòng)圖的用途是對(duì)人類組織的現(xiàn)實(shí)世界中的工作流程建模。
[ 注 ] :提到狀態(tài)機(jī),那什么是狀態(tài)機(jī)呢?
狀態(tài)機(jī)視圖 : 是一個(gè)類對(duì)象所可能經(jīng)歷的所有歷程的模型圖。狀態(tài)機(jī)由對(duì)象的各個(gè)狀態(tài)和連接這些狀態(tài)的轉(zhuǎn)換組成。每個(gè)狀態(tài)對(duì)一個(gè)對(duì)象在其生命期中滿足某種條件的一個(gè)時(shí)間段建模。當(dāng)一個(gè)事件發(fā)生時(shí),它會(huì)觸發(fā)狀態(tài)間的轉(zhuǎn)換,導(dǎo)致對(duì)象從一種狀態(tài)轉(zhuǎn)化到另一新的狀態(tài)。與轉(zhuǎn)換相關(guān)的活動(dòng)執(zhí)行時(shí),轉(zhuǎn)換也同時(shí)發(fā)生。狀態(tài)機(jī)用狀態(tài)圖來表達(dá)。
實(shí)心圓表示活動(dòng)圖的起點(diǎn),實(shí)際上是一個(gè)占位符,帶邊框的實(shí)心圓表示終點(diǎn)。
圓角矩形表示執(zhí)行的過程或活動(dòng)。
菱形表示判定點(diǎn)。
箭頭表示活動(dòng)之間的轉(zhuǎn)換,各種活動(dòng)之間的流動(dòng)次序。
箭頭上的文字表示繼續(xù)轉(zhuǎn)換所必須滿足的條件,總是使用格式 “[ 條件 ]” 來描述。
粗線條表示可能會(huì)并行進(jìn)行的過程的開始和結(jié)束。
eg :
<!--[endif]-->