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