UML全解

一、UML概述

1. 可視化建模有助於:

捕獲商業流程 --> 捕獲系統結構或行爲

描述如何將系統元素整合在一起 --> 定義軟件構架

保持設計和實現的一致性

適當的隱藏或暴露細節 --> 管理複雜性

使人員間的交流更明確 --> 促進溝通

UML爲所有開發者提供了一種表示語言

可視化的建模幫助開發組形象化,詳細說明,構造並且文檔化一個系統的體系結構和行爲。

2. 標準建模語言UML的出現是面向對象技術發展的必然
UML是一種定義良好、易於表達、功能強大且普遍適用的建模語言。它溶入了軟件工程領域的新思想、新方法和新技術。它的作用域不限於支持面向對象的分析與設計,還支持從需求分析開始的軟件開發的全過程。

二、UML關係

1. 常用關係

依賴(Dependencies ;

關聯(Association

一般化(generalization ;

2. 依賴、一般化

1)依賴關係:依賴關係是一種使用關係,特定事物的改變有可能會影響到使用該事物的事物,反之不成立。在我們想顯示一個事物使用另一個事物時使用依賴關係。通常情況下,依賴關係體現在某個類的方法使用另一個類作爲參數(如圖)。

2) 一般化:一般化是繼承關係,是“is-a-kind-of”的關係。人們將具有共同特性的元素抽象成類別,並通過增加其內涵而進一步分類。例如,動物可分爲飛鳥和走獸,人可分爲男人和女人。在面向對象方法中一般將前者稱爲父元素,將後者稱爲子元素。繼承定義了父元素和子元素之間的分類關係。例如將客戶進一步分類成個體客戶和團體客戶,使用的就是繼承關係。

在UML定義中對繼承有三個要求:

子元素應與父元素完全一致,父元素所具有的關聯、屬性和操作,子元素也都隱含性地具有;

子元素還應包含額外信息;

允許使用父元素實例的地方,也應能使用子元素.

3. 關聯
1) 關聯表示兩個類之間存在某種語義上的聯繫。例如,一個人爲一家公司工作,一家公司有許多辦公室。我們就認爲人和公司、公司和辦公室之間存在某種語義上的聯繫。在分析設計的類圖模型中,則在對應人類和公司類、公司類和辦公室類之間建立關聯關係。

關聯有兩元關係和多元關係。兩元關係是指一種一對一的關係,多元關係是一對多或多對一的關係。一般用實線連接有關聯的同一個類或不同的兩個類。當我們想要表示結構化關係時使用關聯。

2) 關聯的方向: 關聯可以有方向,表示該關聯單方向被使用。關聯上加上箭頭表示方向,在UML中稱爲導航。我們將只在一個方向上存在導航表示的關聯,稱作單向關聯,在兩個方向上都有導航表示的關聯,稱作雙向關聯。

3) 關聯的命名: 既然關聯可以是雙向的,最複雜的命名方法是每個方向上給出一個名字,這樣的關聯有兩個名字,可以用小黑三角表示名字的方向。爲關聯命名有幾種方法,其原則是該命名是否有助於理解該模型。

4) 角色:關聯兩頭的類以某種角色參與關聯。例如,"公司"以"僱主"的角色, "人"以"僱員"的角色參與的"工作合同"關聯。"僱主"和"僱員"稱爲角色名。如果在關聯上沒有標出角色名,則隱含地用類的名稱作爲角色名。

角色還具有多重性(Multiplicity),表示可以有多少個對象參與該關聯。多重性表示參與對象的數目的上下界限制。"*"代表0~∞,可以用一個單個數字表示,也可以用範圍或者是數字和範圍不連續的組合表示。

5)聚集和組成:聚集是一種特殊形式的關聯。聚集表示類之間的關係是整體與部分的關係。一輛轎車包含四個車輪、一個方向盤、一個發動機和一個底盤,這是聚集的一個例子。在需求分析中,"包含"、"組成"、"分爲……部分"等經常設計成聚集關係。

聚集可以進一步劃分成共享聚集和組成。例如,課題組包含許多成員,但是每個成員又可以是另一個課題組的成員,即部分可以參加多個整體,我們稱之爲共享聚集。另一種情況是整體擁有各部分,部分與整體共存,如整體不存在了,部分也會隨之消失,這稱爲組成。例如,我們打開一個視窗口,它就由標題、外框和顯示區所組成。一旦消亡則各部分同時消失。在UML中,聚集表示爲空心菱形,組成表示爲實心菱形。

需要注意的是,對聚集的定義並不都一樣。大家應注意其他面向對象方法與UML中所定義的聚集的差別。

三、模型,視圖,和圖表

圖表是模型的視圖

表現給投資者看的,詳細的描述;針對系統的局部,提供了詳細描述;和別的視圖保持語義一致;

1. 用例圖-----捕獲系統中用戶能夠看見的功能
1) 角色:任何一個與系統發生相互作用的事物都可以表現爲一個角色。角色可以是人也可以是物。

2) 一個用例定義了一組系統要做的有序的動作序列,並且這個動作序列要產生一個可觀測的結果,返回給某一個特定的角色。

單個執行者可與多個用例聯繫;反過來,一個用例可與多個執行者聯繫。對同一個用例而言,不同執行者有着不同的作用:他們可以從用例中取值,也可以參與到用例中。

2. 類圖-----捕獲系統的詞彙表

1) 類是具有相同屬性、操作、關係的對象集合的總稱。通常在UML中類被畫成矩形。

2) 類圖:描述類和類之間的靜態關係,在系統的整個生命週期都是有效的。與數據模型不同,它不僅顯示了信息的結構,同時還描述了系統的行爲。類圖是定義其它圖的基礎。在類圖的基礎上,狀態圖、協作圖等進一步描述了系統其他方面的特性。

3) 名稱:每個類都必須有一個名字,用來區分其它的類。類名是一個字符串,稱爲簡單名字。

4) 屬性:是指類的命名的特性,常常代表一類取值。類可以有任意多個屬性,也可以沒有屬性。可以只寫上屬性名,也可以在屬性名後跟上類型甚至缺省取值。根據圖的詳細程度,每條屬性可以包括屬性的可見性、屬性名稱、類型、缺省值和約束特性。UML規定類的屬性的語法爲: "可見性 屬性名 : 類型 = 缺省值 {約束特性}"。

常用的可見性有Public、Private和Protected三種,在UML中分別表示爲"+"、"-"和"#"。類型表示該屬性的種類。它可以是基本數據類型,例如整數、實數、布爾型等,也可以是用戶自定義的類型。一般它由所涉及的程序設計語言確定。約束特性則是用戶對該屬性性質一個約束的說明。例如"{只讀}"說明該屬性是隻讀屬性。

5) 操作:是類的任意一個實例對象都可以調用的,並可能影響該對象行爲的實現。該項可省略。操作用於修改、檢索類的屬性或執行某些動作。它們被約束在類的內部,只能作用到該類的對象上。UML規定操作的語法爲:可見性 操作名 (參數表) : 返回類型 {約束特性}。

6)約束:在UML中,可以用約束表示規則。約束是放在括號"{ }"中的一個表達式,表示一個永真的邏輯陳述。

7) 組織屬性和方法:在畫類圖的時候沒有必要將全部的屬性和操作都畫出來.實際上,在大部分情況下我們也不可能在一個圖中將類的屬性和操作都畫出來。在畫類圖時可以只將感興趣的屬性和操作畫出來就可以了。可以用”...”表示還有屬性或方法沒有畫出來。

8) 使用類圖進行建模的幾個建議:

不要試圖使用所有的符號。從簡單的開始,例如,類、關聯、屬性和繼承等概念。在UML中,有些符號僅用於特殊的場合和方法中,只有當需要時纔去使用。

根據項目開發的不同階段,用正確的觀點來畫類圖。如果處於分析階段,應畫概念層類圖;當開始着手軟件設計時,應畫說明層類圖;當考察某個特定的實現技術時,則應畫實現層類圖。

不要爲每個事物都畫一個模型,應該把精力放在關鍵的領域。最好只畫幾張較爲關鍵的圖,經常使用並不斷更新修改。

使用類圖的最大危險是過早地陷入實現細節。爲了避免這一危險,應該將重點放在概念層和說明層。

3. 對象圖-----捕獲實例和連接

UML中對象圖與類圖具有相同的表示形式。

對象圖可以看作是類圖的一個實例。對象是類的實例。

對象之間的鏈是類之間的關聯的實例。鏈的圖形表示與關聯相似。

對象與類的圖形表示相似,均爲劃分成兩個格子的長方形(下面的格子可省略)。上面的格子顯示對象名和類。

對象名格式爲對象名 : 類名,類名和對象名下面有下劃線;下面的格子記錄對象的屬性以及值的列表,格式爲“屬性 : 類型=值”。類型可以省略。對象圖常用於表示複雜的類圖的一個實例。

4. 組件圖-----捕獲實現的物理結構

1組件圖:組件圖顯示代碼本身的結構,顯示軟件組件之間的依賴關係。組件圖是指用依賴關係鏈接起來的組件集合,可以描述與特定語言相關的編譯時刻的依賴關係。

2組件:一般來說,軟件組件就是一個實際文件,可以是源代碼文件、二進制代碼文件和可執行文件等。可以用來顯示編譯、鏈接或執行時組件之間的依賴關係。

3在面向對象方法中,類和組件等元素並不是所有的屬性和操作都對外可見。它們對外提供可見操作和屬性,稱之爲類和組件的接口——可以表示爲一頭是小園圈的直線。

5. 分佈圖-----捕獲系統硬件的拓撲結構

1分佈圖:描述系統硬件的物理拓撲結構以及在此結構上執行的軟件。分佈圖顯示系統運行時刻的結構;可以顯示計算節點的拓撲結構和通信路徑、節點上運行的軟件組件、軟件組件包含的邏輯單元(對象、類)等。分佈圖常常用於幫助理解分佈式系統。

2)節點:代表一個物理設備以及其上運行的軟件系統,如一臺Unix主機、一個PC終端、一臺打印機、一個傳感器等。節點表示爲一個立方體。

3)連接:結點之間的連線表示系統之間進行交互的通信路徑,在UML中被稱爲連接。

6. 時序圖-----捕獲系統的動態行爲(面向時間的)

時序圖:當收到消息時,接收對象立即開始執行活動,即對象被激活了。通過在對象生命線上顯示一個細長矩形框來表示激活。消息可以用消息名及參數來標識。消息也可帶有順序號,但較少使用。在時序圖的左邊可以有說明信息,用於說明消息發送的時刻、描述動作的執行情況以及約束信息等。一個對象可以通過發送消息來創建另一個對象,當一個對象被刪除或自我刪除時,該對象用"X"標識。

7. 協作圖-----捕獲系統的動態行爲 (面向消息的)

1協作圖用於描述相互合作的對象間的交互關係和鏈接關係。雖然時序圖和協作圖都用來描述對象間的交互關係,但側重點不一樣。時序圖着重體現交互的時間順序,協作圖則着重體現交互對象間的靜態鏈接關係。協作圖中對象的外觀與時序圖中的一樣。對象間的鏈接關係類似於類圖中的聯繫。通過在對象間的連接上標誌帶有消息串的消息來表達對象間的消息傳遞。

2鏈接用於表示對象間的各種關係。各種連接關係與類圖中的定義相同,在連接的端點位置可以顯示對象的角色名。

3消息流:在協作圖的連接線上,可以用帶有消息串的消息來描述對象間的交互。消息的箭頭指明消息的流動方向。消息串說明要發送的消息、消息的參數、消息的返回值以及消息的序列號等信息。

8. 狀態圖-----捕獲系統動態行爲(面向事件的)

1狀態圖描述類的對象所有可能的狀態以及事件發生時狀態的轉移條件。通常,狀態圖是對類圖的補充。在實用上並不需要爲所有的類畫狀態圖,僅爲那些有多個狀態其行爲受外界環境的影響並且發生改變的類的對象畫狀態圖。狀態圖只是對單個對象建立模型。

2事件和活動可以對狀態轉換線添加一些細節。可以指明引起轉移發生的事件和引起狀態變化所需執行的計算(活動)。添加的事件和活動寫在轉換線上,事件和活動名之間用"/"隔開。

3防護:當滿足這個防護條件時,轉換才能發生。

4嵌套狀態。子狀態以兩種形式出現:順序子狀態和併發子狀態。併發狀態之間用虛線隔開。

活動圖-----捕獲動態行爲(面向活動的)

1活動圖的應用非常廣泛,它既可用來描述操作(類的方法)的行爲,也可以描述用例和對象內部的工作過程。活動圖是由狀態圖擴展而來的,它們各自用於不同的目的。活動圖依據對象狀態的變化來捕獲動作(將要執行的工作或活動)與動作的結果,突出了活動。活動圖中一個活動結束後將立即進入下一個活動(在狀態圖中狀態的變遷可能需要事件的觸發)。

2活動和轉移:一項操作可以描述爲一系列相關的活動。活動僅有一個起始點,但可以有多個結束點。一個活動可以順序地跟在另一個活動之後,這是簡單的順序關係。如果在活動圖中使用一個菱形的判斷標誌,則可以表達條件關係,判斷標誌可以有多個輸入和輸出轉移,但在活動的運作中僅觸發其中的一個輸出轉換。活動圖中,使用一個稱爲同步條的水平粗線可以將一條轉移分爲多個併發執行的分支,或將多個轉換合爲一條轉換。此時,只有輸入的轉換全部有效,同步條纔會觸發轉換,進而執行後面的活動。

3泳道:用矩形框來表示,屬於某個泳道的活動放在該矩形框內,將泳道的角色名放在矩形框的頂部。

4對象:在活動圖中可以出現對象。對象可以作爲活動的輸入或輸出,,對象與活動間的輸入/輸出關係由虛線箭頭來表示。如果僅表示對象受到某一活動的影響,則可用不帶箭頭的虛線來連接對象與活動。

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/heimaoxiaozi/archive/2009/09/23/4585408.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章