學(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

          1.jpg

          <!--[if !vml]--> <!--[endif]-->

          解釋:

          - ’號(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

          <!--[if !vml]--> 2.jpg<!--[endif]-->

          當(dāng)變量(實(shí)例)的數(shù)目比較多的時(shí),可用‘ * ’表示,一般在程序中用 vector 或者 list 表示。

          <!--[if !vml]--> 3.jpg<!--[endif]-->

          2.1.3 繼承

          <!--[if !vml]--> 4.jpg<!--[endif]--> :三角型箭頭表示的是繼承(泛化)。

          eg       

          <!--[if !vml]--> 5.jpg<!--[endif]-->

          [ 注意:箭頭是指向基類的。 ]

          如果繼承接口,那么用虛線的三角型箭頭。

          接口被畫成象一個(gè)棒棒糖的符號(hào),并連接在實(shí)現(xiàn)他的類上。

          eg <!--[if !vml]--> 6.jpg<!--[endif]-->

          類的構(gòu)造型顯示在一對(duì)雙角括號(hào)里面 ”<<>>” ,常在類的名稱上面。

          eg

          <!--[if !vml]--> 7.jpg<!--[endif]-->

          當(dāng)構(gòu)造型為 <<utility>> ,那么該類的所有方法和屬性都是靜態(tài)的(常為工具類)。

          eg

          <!--[if !vml]--> 8.jpg<!--[endif]-->

          2.1.4 聚合

          關(guān)聯(lián)的一種特殊形式,它意味著一種整體和部分( whole/part )的關(guān)系。

          <!--[if !vml]--> 9.jpg<!--[endif]-->

           

          2.1.5 內(nèi)部類

          內(nèi)部類在 UML 中以一個(gè)帶十字的圓圈的關(guān)聯(lián)標(biāo)記來表示。

          eg

          <!--[if !vml]--> 10.jpg<!--[endif]-->

          匿名內(nèi)部類的構(gòu)造型有 <<anonymous>>

          2.2 交互視圖——序列圖、協(xié)作圖

          交互視圖描述了執(zhí)行系統(tǒng)功能的各個(gè)角色之間相互傳遞消息的順序關(guān)系。類元是對(duì)在系

          統(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 )。附在類元角色上的箭頭代表消息消息的發(fā)生順序用消息箭頭處的編號(hào)來說明。協(xié)作圖的一個(gè)用途是表示一個(gè)類操作的實(shí)現(xiàn)。協(xié)作圖可以說明類操作中用到的參數(shù)和局部變量以及操作中的永久鏈。當(dāng)實(shí)現(xiàn)一個(gè)行為時(shí),消息編號(hào)對(duì)應(yīng)了程序中嵌套調(diào)用結(jié)構(gòu)和信號(hào)傳遞過程。

           

          序列圖是一種被使用 UML 的人使用的最常用的動(dòng)態(tài)建模畫法。

          序列圖表示了對(duì)象之間傳送消息的時(shí)間順序。每一個(gè)類元角色用一條生命線來表示—

          即用垂直線代表整個(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è)論壇前臺(tái)用例圖)

          <!--[if !vml]--> 11.jpg<!--[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

          <!--[if !vml]--> 12.jpg<!--[endif]-->

           

          posted on 2007-02-27 17:30 -274°C 閱讀(4246) 評(píng)論(1)  編輯  收藏 所屬分類: 計(jì)算機(jī)綜合UML


          FeedBack:
          # re: 學(xué)習(xí)UML筆記[未登錄]
          2007-02-27 22:37 | 阿蜜果
          還蠻會(huì)總結(jié)的哦!嘿嘿~  回復(fù)  更多評(píng)論
            

          常用鏈接

          留言簿(21)

          隨筆分類(265)

          隨筆檔案(242)

          相冊

          JAVA網(wǎng)站

          關(guān)注的Blog

          搜索

          •  

          積分與排名

          • 積分 - 917240
          • 排名 - 40

          最新評(píng)論

          主站蜘蛛池模板: 玉屏| 台北县| 六安市| 特克斯县| 日土县| 武平县| 淳化县| 沂南县| 仲巴县| 福建省| 美姑县| 镇康县| 玉门市| 纳雍县| 马关县| 封丘县| 乐安县| 阿拉善盟| 宁陵县| 蛟河市| 虎林市| 江华| 礼泉县| 监利县| 高清| 丘北县| 临安市| 宜君县| 海城市| 嘉义县| 虞城县| 江孜县| 土默特右旗| 伽师县| 开原市| 宜章县| 濮阳市| 方城县| 滕州市| 永嘉县| 阿拉善右旗|