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