《UML各種圖例齊全—用例圖類圖狀態(tài)圖包圖協(xié)作圖順序圖詳細(xì)說明畫法和功能》由會(huì)員分享,可在線閱讀,更多相關(guān)《UML各種圖例齊全—用例圖類圖狀態(tài)圖包圖協(xié)作圖順序圖詳細(xì)說明畫法和功能(15頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、UML各種圖例
面向?qū)ο蟮膯栴}的處理的關(guān)鍵是建模問題.建??梢园言趶?fù)雜世界的許多重要的細(xì)節(jié)給抽象出.許多建模工具封裝了UML(也就是Unified Modeling Language?),這篇課程的目的是展示出UML的精彩之處.
UML中有九種建模的圖標(biāo),即:
· 用例圖
· 類圖
· 對(duì)象圖
· 順序圖
· 協(xié)作圖
· 狀態(tài)圖
· 活動(dòng)圖
· 組件圖
· 配置圖
本課程中的某些部分包含了這些圖的細(xì)節(jié)信息的頁面鏈接.而且每個(gè)部分都有一個(gè)小問題,測(cè)試一下你對(duì)這個(gè)部分的理解.
為什么UML很重要?
為了回答這個(gè)問題,我們看看建
2、筑行業(yè).設(shè)計(jì)師設(shè)計(jì)出房子.施工人員使用這個(gè)設(shè)計(jì)來建造房子.建筑越復(fù)雜,設(shè)計(jì)師和施工人員之間的交流就越重要.藍(lán)圖就成為了這個(gè)行業(yè)中的設(shè)計(jì)師和施工人員的必修課.
寫軟件就好像建造建筑物一樣.系統(tǒng)越復(fù)雜,參與編寫與配置軟件的人員之間的交流也就越重要.在過去十年里UML就成為分析師,設(shè)計(jì)師和程序員之間的“建筑藍(lán)圖”.現(xiàn)在它已經(jīng)成為了軟件行業(yè)的一部分了.UML提供了分析師,設(shè)計(jì)師和程序員之間在軟件設(shè)計(jì)時(shí)的通用語言.
UML被應(yīng)用到面向?qū)ο蟮膯栴}的解決上.想要學(xué)習(xí)UML必須熟悉面向?qū)ο蠼鉀Q問題的根本原則――都是從模型的建造開始的.一個(gè)模型model就是根本問題的抽象.域domain就是問題所處的真實(shí)世
3、界.
模型是由對(duì)象objects組成的,它們之間通過相互發(fā)送消息messages來相互作用的.記住把一個(gè)對(duì)象想象成“活著的”.對(duì)象有他們知道的事(屬性attributes)和他們可以做的事(行為或操作behaviors or operations).對(duì)象的屬性的值決定了它的狀態(tài)state.
類Classes是對(duì)象的“藍(lán)圖”.一個(gè)類在一個(gè)單獨(dú)的實(shí)體中封裝了屬性(數(shù)據(jù))和行為(方法或函數(shù)).對(duì)象是類的實(shí)例instances.
用例圖
用例圖Use case diagrams描述了作為一個(gè)外部的觀察者的視角對(duì)系統(tǒng)的印象.強(qiáng)調(diào)這個(gè)系統(tǒng)是什么而不是這個(gè)系統(tǒng)怎么工作.
用例圖與情節(jié)緊緊相關(guān)的
4、.情節(jié)scenario是指當(dāng)某個(gè)人與系統(tǒng)進(jìn)行互動(dòng)時(shí)發(fā)生的情況.下面是一個(gè)醫(yī)院門診部的情節(jié).
“一個(gè)病人打 給門診部預(yù)約一年一次的身體檢查.接待員找出在預(yù)約記錄本上找出最近的沒有預(yù)約過的時(shí)間,并記上那個(gè)時(shí)間的預(yù)約記錄.”
用例Use case是為了完成一個(gè)工作或者達(dá)到一個(gè)目的的一系列情節(jié)的總和.角色actor是發(fā)動(dòng)與這個(gè)工作有關(guān)的事件的人或者事情.角色簡(jiǎn)單的扮演著人或者對(duì)象的作用.下面的圖是一個(gè)門診部Make Appointment用例.角色是病人.角色與用例的聯(lián)系是通訊聯(lián)系communication association(或簡(jiǎn)稱通訊communication)
角色是人狀的圖標(biāo)
5、,用例是一個(gè)橢圓,通訊是連接角色和用例的線.
一個(gè)用例圖是角色,用例,和它們之間的聯(lián)系的集合.我們已經(jīng)把Make Appointment作為一個(gè)含有四個(gè)角色和四個(gè)用例的圖的一部分.注意一個(gè)單獨(dú)的用例可以有多個(gè)角色.
用例圖在三個(gè)領(lǐng)域很有作用.
· 決定特征(需求).當(dāng)系統(tǒng)已經(jīng)分析好并且設(shè)計(jì)成型時(shí),新的用例產(chǎn)生新的需求
· 客戶通訊.使用用例圖很容易表示開發(fā)者與客戶之間的聯(lián)系.
· 產(chǎn)生測(cè)試用例.一個(gè)用例的情節(jié)可能產(chǎn)生這些情節(jié)的一批測(cè)試用例.
類圖
類圖Class diagram通過顯示出系統(tǒng)的類以及這些類之間的關(guān)系來表示系統(tǒng).類圖是靜態(tài)的-它們顯示出什么可以產(chǎn)生影響但不
6、會(huì)告訴你什么時(shí)候產(chǎn)生影響.
下面是一個(gè)顧客從零售商處預(yù)定商品的模型的類圖.中心的類是Order.連接它的是購買貨物的Customer和Payment.Payment有三種形式:Cash,Check,或者Credit.訂單包括OrderDetails(line item),每個(gè)這種類都連著Item.
UML類的符號(hào)是一個(gè)被劃分成三塊的方框:類名,屬性,和操作.抽象類的名字,像Payment是斜體的.類之間的關(guān)系是連接線.
類圖有三種關(guān)系.
· 關(guān)聯(lián)association-表示兩種類的實(shí)例間的關(guān)系.如果一個(gè)類的實(shí)例必須要用另一個(gè)類的實(shí)例才能完成工作時(shí)就要用關(guān)聯(lián).在圖中,關(guān)聯(lián)用兩個(gè)類之間
7、的連線表示.
· 聚合aggregation-當(dāng)一個(gè)類屬于一個(gè)容器是的一種特殊關(guān)系.聚合用一個(gè)帶菱形的連線,菱形指向具有整體性質(zhì)的類.在我們的圖里,Order是OrderDetails的容器.
· 泛化generalization-一個(gè)指向以其他類作為超類的繼承連線.泛化關(guān)系用一個(gè)三角形指向超類.Payment是Cash,Check和Credit的超類.
一個(gè)關(guān)聯(lián)有兩個(gè)尾端.每個(gè)尾端可以有一個(gè)角色名role name來說明關(guān)聯(lián)的作用.比如,一個(gè)OrderDetail實(shí)例是一個(gè)Order實(shí)例的項(xiàng)目.
關(guān)聯(lián)上的方向性navigability箭頭表示該關(guān)聯(lián)傳遞或查詢的方向.OrderD
8、etail類可以查詢他的Item,但不可以反過來查詢.箭頭方向同樣可以告訴你哪個(gè)類擁有這個(gè)關(guān)聯(lián)的實(shí)現(xiàn);也就是,OrderDetail擁有Item.沒有方向性的箭頭的關(guān)聯(lián)是雙向.
關(guān)聯(lián)尾端的數(shù)字表示該關(guān)聯(lián)另一邊的一個(gè)實(shí)例可以對(duì)應(yīng)的數(shù)字端的實(shí)例的格數(shù),通過這種方式表達(dá)關(guān)聯(lián)的多樣性multiplicity.多樣性的數(shù)字可以是一個(gè)單獨(dú)的數(shù)字或者是一個(gè)數(shù)字的范圍.在例子中,每個(gè)Order只有一個(gè)Customer,但一個(gè)Customer可以有任意多個(gè)Order.
下面這個(gè)表給出了最普遍的多樣性示例.
多樣性
意義
0..1
0或1個(gè)實(shí)例. n..m符號(hào)表示有n到m個(gè)實(shí)例
0..* ?or?
9、*
沒有實(shí)例格數(shù)的限制(包括沒有).
1
只有一個(gè)實(shí)例
1..*
最少一個(gè)實(shí)例
每個(gè)類圖包括類,關(guān)聯(lián)和多樣性表示.方向性和角色是為了使圖示得更清楚時(shí)可選的項(xiàng)目.
包和對(duì)象圖
為了簡(jiǎn)單地表示出復(fù)雜的類圖,可以把類組合成包packages.一個(gè)包是UML上有邏輯關(guān)系的元件的集合.下面這個(gè)圖是是一個(gè)把類組合成包的一個(gè)商業(yè)模型.
dependencies關(guān)系.如果另一個(gè)的包B改變可能會(huì)導(dǎo)致一個(gè)包A改變,則包A依賴包B.
包是用一個(gè)在上方帶有小標(biāo)簽的矩形表示的.包名寫在標(biāo)簽上或者在矩形里面.點(diǎn)化線箭頭表示依賴
對(duì)象圖Object diagrams用來表示類的實(shí)例.他們?cè)诮忉審?fù)雜
10、關(guān)系的細(xì)小問題時(shí)(特別是遞歸關(guān)系時(shí))很有用.
這個(gè)類圖示一個(gè)大學(xué)的Department可以包括其他很多的Departments.
這個(gè)對(duì)象圖示上面類圖的實(shí)例.用了很多具體的例子.
UML中實(shí)例名帶有下劃線.只要意思清楚,類或?qū)嵗梢栽趯?duì)象圖中被省略.
每個(gè)類圖的矩形對(duì)應(yīng)了一個(gè)單獨(dú)的實(shí)例.實(shí)例名稱中所強(qiáng)調(diào)的UML圖表.類或?qū)嵗拿Q可能是省略對(duì)象圖表只要圖的意義仍然是明確的.
順序圖
類圖和對(duì)象圖是靜態(tài)模型的視圖.交互圖是動(dòng)態(tài)的.他們描述了對(duì)象間的交互作用.
順序圖將交互關(guān)系表示為一個(gè)二維圖.縱向是時(shí)間軸,時(shí)間沿豎線向下延伸.橫向軸代表了在協(xié)作中各獨(dú)立對(duì)象的類元角色.類元
11、角色用生命線表示.當(dāng)對(duì)象存在時(shí),角色用一條虛線表示,當(dāng)對(duì)象的過程處于激活狀態(tài)時(shí),生命線是一個(gè)雙道線.
消息用從一個(gè)對(duì)象的生命線到另一個(gè)對(duì)象生命線的箭頭表示.箭頭以時(shí)間順序在圖中從上到下排列.
協(xié)作圖
協(xié)作圖也是互動(dòng)的圖表.他們像序列圖一樣也傳遞相同的信息,但他們不關(guān)心什么時(shí)候消息被傳遞,只關(guān)心對(duì)象的角色.在序列圖中,對(duì)象的角色放在上面而消息則是連接線.
對(duì)象角色矩形上標(biāo)有類或?qū)ο竺ɑ蛘叨加校?類名前面有個(gè)冒號(hào)(:).
協(xié)作圖的每個(gè)消息都有一個(gè)序列號(hào).頂層消息的數(shù)字是1.同一個(gè)等級(jí)的消息(也就是同一個(gè)調(diào)用中的消息)有同樣的數(shù)字前綴,再根據(jù)他們出現(xiàn)的順序增加一個(gè)后綴1,2等等.
12、
狀態(tài)圖
對(duì)象擁有行為和狀態(tài).對(duì)象的狀態(tài)是由對(duì)象當(dāng)前的行動(dòng)和條件決定的.狀態(tài)圖statechart diagram顯示出了對(duì)象可能的狀態(tài)以及由狀態(tài)改變而導(dǎo)致的轉(zhuǎn)移.
我們的模型例圖建立了一個(gè)銀行的在線登錄系統(tǒng).登錄過程包括輸入合法的密碼和個(gè)人賬號(hào),再提交給系統(tǒng)驗(yàn)證信息.
登錄系統(tǒng)可以被劃分為四種不重疊的狀態(tài):Getting SSN, Getting PIN, Validating, 以及 Rejecting.每個(gè)狀態(tài)都有一套完整的轉(zhuǎn)移transitions來決定狀態(tài)的順序.
狀態(tài)是用圓角矩形來表示的.轉(zhuǎn)移則是使用帶箭頭的連線表示.觸發(fā)轉(zhuǎn)移的事件或者條件寫在箭頭的旁邊.我們的圖上有
13、兩個(gè)自轉(zhuǎn)移.一個(gè)是在Getting SSN,另一個(gè)則在上Getting PIN.
初始狀態(tài)(黑色圓圈)是開始動(dòng)作的虛擬開始.結(jié)束狀態(tài)也是動(dòng)作的虛擬結(jié)束.
事件或條件觸發(fā)動(dòng)作時(shí)用(/動(dòng)作)表示.當(dāng)進(jìn)入Validating狀態(tài)時(shí),對(duì)象并不等外部事件觸發(fā)轉(zhuǎn)移.取而代之,它產(chǎn)生一個(gè)動(dòng)作.動(dòng)作的結(jié)果決定了下一步的狀態(tài).
活動(dòng)圖
活動(dòng)圖activity diagram是一個(gè)很特別的流程圖.活動(dòng)圖和狀態(tài)圖之間是有關(guān)系的.狀態(tài)圖把焦點(diǎn)集中在過程中的對(duì)象身上,而活動(dòng)圖則集中在一個(gè)單獨(dú)過程動(dòng)作流程.活動(dòng)圖告訴了我們活動(dòng)之間的依賴關(guān)系.
對(duì)我們的例子來說,我們使用如下的過程.
“通過ATM來取錢.”
14、這個(gè)活動(dòng)有三個(gè)類Customer, ATM和 Bank.整個(gè)過程從黑色圓圈開始到黑白的同心圓結(jié)束.活動(dòng)用圓角矩形表示.
活動(dòng)圖可以被分解成許多對(duì)象泳道swimlanes ,可以決定哪些對(duì)象負(fù)責(zé)那些活動(dòng).每個(gè)活動(dòng)都有一個(gè)單獨(dú)的轉(zhuǎn)移transition連接這其他的活動(dòng).
轉(zhuǎn)移可能分支branch成兩個(gè)以上的互斥的轉(zhuǎn)移.保護(hù)表達(dá)式(在[]中)表示轉(zhuǎn)移是從一個(gè)分支中引出的.分支以及分支結(jié)束時(shí)的合并merge在圖中用菱形表示.
轉(zhuǎn)移也可以分解fork成兩個(gè)以上的并行活動(dòng).分解以及分解結(jié)束時(shí)的線程結(jié)合join在圖中用粗黑線表示
組件與配置圖
組件component是代碼模塊.組件圖是是類圖的物理實(shí)現(xiàn).
配置圖Deployment diagrams則是顯示軟件及硬件的配置.
下面的配置圖說明了與房地產(chǎn)事務(wù)有關(guān)的軟件及硬件組件的關(guān)系.
物理上的硬件使用節(jié)點(diǎn)nodes表示.每個(gè)組件屬于一個(gè)節(jié)點(diǎn).組件用左上角帶有兩個(gè)小矩形的矩形表示.