學習 UML 筆記

           

          前言

          為了自己能快速將 UML 技術應用在軟件開發的設計過程當中,特總結出如下簡潔的筆記,不過只是自己學習之用,其間的用語難免不考究,正確性也日后也待驗證。繪制UML的工具本人采用了開元ArgoUML工具小巧易用。

          1. 為什么要建模

              建模是開發優秀軟件所有活動的核心部分,其目的就是把所設計的結構與系統的行為溝通起來,并對系統的體系結構進行可視化和控制.建模是為了真正理解正在構造的系統.

          2.UML 主要有哪些圖

          <!--[if !supportLists]--> ²        <!--[endif]-->   靜態圖

          描述了那些不發生變化的軟件元素的落界結構,描繪了類、對象、數據結構及其存在于他們之間的關系。

          <!--[if !supportLists]--> ²        <!--[endif]--> 動態圖

          展示了在運行期間軟件實體的變化,描繪了執行流程、實體改變狀態的方法。

          <!--[if !supportLists]--> ²        <!--[endif]--> 物理圖

          顯示了軟件實體的不變化的物理結構描繪了物理實體有源文件、庫文件、數據文件等等,以及存在于他們之間的關系。

          2.1 類圖

          2.1.1

          類圖屬于靜態圖,類圖也是本學習任務中的重點。

          eg

          1.jpg

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

          解釋:

          - ’號表示變量或者方法為私有。

          + ’號表示變量或者方法為公有。

          # ’號表示變量或者方法為受保護的。

          ‘:’號表示變量或者參數所屬類型,在方法之后表示方法返回值類型。

          2.1.2 關聯

          類之間的關聯大多用來表示變量實例持有著對其他對象的引用。

           

          帶箭頭的線一般表示關系、關聯,而箭頭附近的數字表示含有實例的數目。而直線下方的名稱表示變量或者實例的名稱。

          eg

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

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

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

          2.1.3 繼承

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

          eg       

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

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

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

          接口被畫成象一個棒棒糖的符號,并連接在實現他的類上。

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

          類的構造型顯示在一對雙角括號里面 ”<<>>” ,常在類的名稱上面。

          eg

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

          當構造型為 <<utility>> ,那么該類的所有方法和屬性都是靜態的(常為工具類)。

          eg

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

          2.1.4 聚合

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

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

           

          2.1.5 內部類

          內部類在 UML 中以一個帶十字的圓圈的關聯標記來表示。

          eg

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

          匿名內部類的構造型有 <<anonymous>>

          2.2 交互視圖——序列圖、協作圖

          交互視圖描述了執行系統功能的各個角色之間相互傳遞消息的順序關系。類元是對在系

          統內交互關系中起特定作用的一個對象的描述,這使它區別于同類的其他對象。交互視圖顯

          示了跨越多個對象的系統控制流程。

          UML 交互圖以圖形的形式表示出方法調用過程,它有兩種形式:序列(順序圖)圖( Sequence Diagram )和協作圖( Collaboration Diagram )。

          協作圖 : 是用幾何排列來表示交互作用中的各角色(如圖 3 - 4 )。附在類元角色上的箭頭代表消息消息的發生順序用消息箭頭處的編號來說明。協作圖的一個用途是表示一個類操作的實現。協作圖可以說明類操作中用到的參數和局部變量以及操作中的永久鏈。當實現一個行為時,消息編號對應了程序中嵌套調用結構和信號傳遞過程。

           

          序列圖是一種被使用 UML 的人使用的最常用的動態建模畫法。

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

          即用垂直線代表整個交互過程中對象的生命期。生命線之間的箭頭連線代表消息。序列圖可

          以用來進行一個場景說明—即一個事務的歷史過程。

           

          什么時候該用序列圖?只有當你迫切地需要給某人描述一組對象的如何協作的情況的時候,或者當你要為你自己可視化協作情況的時候,你再去用序列圖。

          2.3 用例圖

          什么是用例圖?

          用例視圖是被稱為參與者的外部用戶所能觀察到的系統功能的模型圖。用例是系統中的

          一個功能單元,可以被描述為參與者與系統之間的一次交互作用。用例模型的用途是列出系

          統中的用例和參與者,并顯示哪個參與者參與了哪個用例的執行。一個用例是有關一個系統的行為的一個描述。那個描述是從一個用戶的觀點編寫的。

          處理用例的真正訣竅是保持用例的簡單,細節是不重要的,除非到了最后。把用例當作最及時的需求。在 UML 中的所有的圖,用例圖是最容易混淆的,也是最沒有什么用的,不過系統邊界圖除外。

          一般橢圓形表示一個一個的用例,小人表示行為者。

          eg :(一個論壇前臺用例圖)

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

          2.4 活動圖

          活動圖是狀態機的一個變體,用來描述執行算法的工作流程中涉及的活動。活動狀態代表了一個活動:一個工作流步驟或一個操作的執行。活動圖描述了一組順序的或并發的活動。活動視圖用活動圖來體現。活動圖的用途是對人類組織的現實世界中的工作流程建模。

          [ ] :提到狀態機,那什么是狀態機呢?

          狀態機視圖 : 是一個類對象所可能經歷的所有歷程的模型圖。狀態機由對象的各個狀態和連接這些狀態的轉換組成。每個狀態對一個對象在其生命期中滿足某種條件的一個時間段建模。當一個事件發生時,它會觸發狀態間的轉換,導致對象從一種狀態轉化到另一新的狀態。與轉換相關的活動執行時,轉換也同時發生。狀態機用狀態圖來表達。

           

          實心圓表示活動圖的起點,實際上是一個占位符,帶邊框的實心圓表示終點。

          圓角矩形表示執行的過程或活動。

          菱形表示判定點。

          箭頭表示活動之間的轉換,各種活動之間的流動次序。

          箭頭上的文字表示繼續轉換所必須滿足的條件,總是使用格式 “[ 條件 ]” 來描述。

          粗線條表示可能會并行進行的過程的開始和結束。

           

          eg

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

           

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


          FeedBack:
          # re: 學習UML筆記[未登錄]
          2007-02-27 22:37 | 阿蜜果
          還蠻會總結的哦!嘿嘿~  回復  更多評論
            

          常用鏈接

          留言簿(21)

          隨筆分類(265)

          隨筆檔案(242)

          相冊

          JAVA網站

          關注的Blog

          搜索

          •  

          積分與排名

          • 積分 - 914107
          • 排名 - 40

          最新評論

          主站蜘蛛池模板: 宁津县| 忻州市| 西平县| 丹寨县| 青龙| 慈利县| 新化县| 军事| 苍山县| 甘孜| 九龙城区| 嘉善县| 泉州市| 阳信县| 淅川县| 浮梁县| 通山县| 长寿区| 鄱阳县| 合肥市| 怀远县| 东港市| 霍城县| 彭山县| 兰西县| 花莲县| 中方县| 客服| 遵义市| 晋城| 水富县| 尚志市| 天柱县| 新河县| 大理市| 志丹县| 门头沟区| 桓台县| 云南省| 韩城市| 格尔木市|