1 UML簡介
統一建模語言(Unified Modeling Language,UML)又稱標準建模語言,是始於1997年的一個OMG標準,它是一個支持模型化和軟件系統開發的圖形化語言,爲軟件開發的所有階段提供模型化和可視化支持,包括由需求分析到規格,到構造和配置。‘UML感興趣的可以閱讀UML 1規 範,包含了UML 的所有知識內容。
注:OMG, Object Management Group 對象管理組織
2 UML常見圖分類
UML從考慮系統的不同角度
出發,定義了用況圖
、類圖
、對象圖
、包圖
、狀態圖
、活動圖
、序列圖
、通信圖
、構件圖、部署圖等
10種圖。
分類:
面向對象動態建模
,用於建立行爲的實體間行爲交互的四種圖
:狀態圖(Stage Diagram),序列圖(Sequence Diagram),協作圖(Communication Diagram),活動圖(Activity Diagram) 。
“序列圖”與“協作圖”表述的是相似的消息
,“活動圖”是“狀態圖”的一種。
- 靜態結構圖Static Structure Diagram
類圖Class Diagram
對象圖Object Diagram
用況圖Use Case Diagram
- 交互圖Interaction Diagram
順序圖Sequence Diagram
協作圖Collaboration Diagram
狀態圖State chart Diagrams
活動圖Activity Diagrams - 實現圖Implementation Diagrams
構件圖Component Diagram
部署圖Deployment Diagram
3 用況圖(用例)
用例圖,展現了一組用例、參與者(actor)
以及它們之間的關係。
用例圖從用戶角度描述系統的靜態使用情況,用於建立需求模型
。(用於需求分析)
- 參與者(Actor)
在系統外部與系統直接交互的人或事物。需要注意以下兩點:
1)參與者是角色而不是具體的人(可以是外部系統
),它代表了參與者在與系統打交道的過程中所扮演的角色。所以在系統的實際運作中,一個實際用戶可能對應系統的多個參與者。不同的用戶也可以只對應於一個參與者,從而代表同一參與者的不同實例。
2)參與者作爲外部用戶(而不是內部)與系統發生交互作用,是它的主要特徵。
在UML中,參與者使用如圖所示的一個小人表示:
用例(Use Case)用況
系統外部可見的一個系統功能單元。系統的功能由系統單元所提供,並通過一系列系統單元與一個或多個參與者之間交換的消息所表達。用橢圓表示,橢圓中的文字簡述系統的功能:
子系統(Subsystem)
用來展示系統的一部分功能,這部分功能聯繫緊密。
關係(Relationship)
常見關係類型有關聯、泛化、包含和擴展。
以上各關係在uml圖中的表示方式,如下表所示:
a. 關聯(Association)
表示參與者與用例之間的通信,任何一方都可發送或接受消息。
【箭頭指向】:指向消息接收方
b. 泛化(Inheritance)
就是通常理解的繼承關係,子用例和父用例相似,但表現出更特別的行爲;子用例將繼承父用例的所有結構、行爲和關係。子用例可以使用父用例的一段行爲,也可以重載它。父用例通常是抽象的。
【箭頭指向】:指向父用例
c. 包含(Include)
包含關係用來把一個較複雜用例所表示的功能分解成較小的步驟。
【箭頭指向】:指向分解出來的功能用例
d. 擴展(Extend)
擴展關係是指用例功能的延伸,相當於爲基礎用例提供一個附加功能。
【箭頭指向】:指向基礎用例
包含(include)、擴展(extend)、泛化(Inheritance) 的區別:
條件性:泛化中的子用例和include中的被包含的用例會無條件發生,而extend中的延伸用例的發生是有條件的;
直接性:泛化中的子用例和extend中的延伸用例爲參與者提供直接服務,而include中被包含的用例爲參與者提供間接服務。
對extend(擴展)而言,延伸用例並不包含基礎用例的內容,基礎用例也不包含延伸用例的內容。
對Inheritance(泛化)而言,子用例包含基礎用例的所有內容及其和其他用例或參與者之間的關係;
4 類圖
在UML類圖
中,常見的有以下幾種關係
: 泛化(Generalization), 實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)
泛化
(Generalization)
【泛化關係】:是一種繼承關係
,表示一般與特殊的關係,它指定了子類如何特化父類的所有特徵和行爲。例如:老虎是動物的一種,即有老虎的特性也有動物的共性。
【箭頭指向】:帶三角箭頭的實線,箭頭指向父類
實現類的繼承關係
- 實現(Realization)
【實現關係】:是一種類與接口的關係,表示類是接口所有特徵和行爲的實現.
【箭頭指向】:帶三角箭頭的虛線,箭頭指向接口
注意可以理解類的繼承的關係的另外一種表現形式。
- 關聯(Association)
【關聯關係】:是一種擁有的關係,它使一個類知道另一個類的屬性和方法;如:老師與學生,丈夫與妻子關聯可以是雙向的,也可以是單向的。雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭。
【代碼體現】:成員變量
【箭頭及指向】:帶普通箭頭的實心線,指向被擁有者
上圖中,老師與學生是雙向關聯,老師有多名學生,學生也可能有多名老師。但學生與某課程間的關係爲單向關聯,一名學生可能要上多門課程,課程是個抽象的東西他不擁有學生。下圖爲自身關聯:
- 聚合(Aggregation)
【聚合關係】:是整體與部分的關係,且部分可以離開整體而單獨存在。如車和輪胎是整體和部分的關係,輪胎離開車仍然可以存在。
聚合關係是關聯關係的一種,是強的關聯關係;關聯和聚合在語法上無法區分,必須考察具體的邏輯關係。
【代碼體現】:成員變量
【箭頭及指向】:帶空心菱形的實心線,菱形指向整體
-
組合(Composition)
【組合關係】:是整體與部分的關係,但部分不能離開整體而單獨存在。如公司和部門是整體和部分的關係,沒有公司就不存在部門。組合關係是關聯關係的一種,是比聚合關係還要強的關係,它要求普通的聚合關係中代表整體的對象負責代表部分的對象的生命週期。
【代碼體現】:成員變量
【箭頭及指向】:帶實心菱形的實線,菱形指向整體 -
依賴(Dependency)
【依賴關係】:是一種使用的關係,即一個類的實現需要另一個類的協助,所以要儘量不使用雙向的互相依賴.
【代碼表現】:局部變量、方法的參數或者對靜態方法的調用
【箭頭及指向】:帶箭頭的虛線,指向被使用者
各種關係的強弱順序:
泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴
下面這張UML圖,比較形象地展示了各種類圖關係:
圖片轉自:http://blog.csdn.net/tianhai110/article/details/6339565
注意這裏的雁羣和大雁的關係畫反了。
簡單類圖使用 舉例
-
根據下面的陳述畫出類圖
1)學生包括本科生、研究生兩種。
2)研究生的一部分利用課餘時間擔任助教。
3)教師包括講師和教授兩種。
4)一名助教可以爲一位講師或一位教授助課,一位講師只能有一名助教,一位教授可以有5名助教。 -
按如下描述畫出一個自治機器人的類圖。
這張圖的焦點是聚集在那些讓機器人在路上行走的機制所對應的類上。你可以發現一個虛類Motor和兩個從它派生出來的類: SteeringMotor和MainMotor。這兩個類都從它的父親Motor繼承了五個方法:move()、stop()、resetCounter()、statues()、distance()。這兩個類又是另一個類Driver的一部分。類PathAgent 和Driver有一個1對1的關係,和CollisionSensor有1對n的關係。
【問題:】綜上所述請你用UML來繪製分析類圖。
參考答案:
5 其他輔助用圖
時序圖(順序圖)
時序圖別稱爲順序圖、序列圖,在我的大致印象中時序圖是以時間爲主線,有生命線的動態視圖,主要描述的對象是對象。是交互圖的一種。主要的作用是表達設計者心中對於未來程序在運作時的對象協作建模,驗證軟件領域模型的正確性,爲程序員提供編碼的藍圖。
(一)概念
- 定義:
時序圖是以時間爲序的表示方法,主要用來描述對象之間的時間順序。將交互關係表示爲二維圖的。縱軸爲時間,橫軸爲在協作中各個獨立的對象。對象存在時用一條虛線表示,當對象的過程處於激活狀態是,生命線是一個雙道線。消息用從一個對象的生命線到另一個對象生命線的箭頭表示。箭頭以時間順序在圖中從上到下排列。如下圖:
- 四個元素(對象,生命線,消息,激活)
(1)對象
對象的概念就不多說了,就是類的實例化,在系統中隨便都可以找到一個對象,因爲我們使用的是基於OO編程的VB。
(2)生命線
表示對象的存在存在多久的時間
(3)消息
對象之間的單路通信,人有人的語言,機器有機器的語言,人和機器都是靠消息傳遞信息和指令的。
消息的類型大致有:同步與異步,返回、阻止和超時
。
(4)激活
表示這個時間,對象實現操作。時序圖是將交互關係表示爲二維圖的。縱軸爲時間,橫軸爲在協作中各個獨立的對象。對象存在時用一條虛線表示
,當對象的過程處於激活狀態,生命線是一個雙道線
。消息用從一個對象的生命線到另一個對象生命線的箭頭表示。箭頭以時間順序在圖中從上到下排列。
(二)建模
主要是按時間順序對控制流建模
(三)實例
首先要分析用例的正常流
,學生刷卡上機
,系統記錄學生上機時間,同時顯示學生的基本信息
,此時的學生信息時系統更新
,系統根據學生上機時長和類別計算上機費用
,系統保存學上上機信息。
,學生下機
,系統記錄時間,跟新數據庫
,數據庫更新,反饋學生信息
,系統根據學生上機和下機時間、類別計算上機費用
,系統保存學生上機費用
然後開始畫圖:
)創建時序圖
)添加對象並設置對象屬性,持續性
)添加消息(消息的編號,顯示或取消激活顯示)
如圖:(圖片有錯,不提供參考)
版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/tsj11514oo/article/details/38179121
協作圖(Collaboration Diagram/communication Diagram)/通信圖
協作圖(Collaboration Diagram /Communication Diagram,也叫合作圖)是一種交互圖(interaction diagram),強調的是發送和接收消息的對象之間的組織結構。一個協作圖顯示了一系列的對象和在這些對象之間的聯繫以及對象間發送和接收的消息。對象通常是命名或匿名的類的實例,也可以代表其他事物的實例,例如協作、組件和節點。使用協作圖來說明系統的動態情況。
下面這張圖介紹協作圖的基本內容:
下面一張圖是一個協作圖的實例,創建課程的協作圖:
由於協作圖和時序圖在語意上是相通的,所以可以互相轉換
,下面是利用ROSE把上面的協作圖轉換成的時序圖的實例,可以直接使用功能進行轉換:
由於協作圖和時序圖在作用上可以替代
的,在使用中,一般有了時序圖就沒有必要使用協作圖。
狀態圖
1.概述:
狀態圖(Statechart Diagram)主要用於描述一個特定的
對象的所有可能狀態以及由於各種事件的發生而引起的狀態之間的轉換
。
2.構成要素:
狀態圖由狀態
、轉移
和事件
組成。聯合使用狀態和轉移可以更好地建模它們,有時需要包含決策點和同步條來顯示更高層次的細節信息。
2.1狀態(States):
在對象的生命週期中滿足某些條件、執行某些活動或等待某些事件的一個條件或狀況。所有的對象都有狀態,狀態是對象執行了一系列活動的結果,當某個事件發生後,對象的狀態將發生變化。
狀態圖中可以包含0個多個開始狀態,也可以包含多個結束狀態。模型不必同時具有開始和結束狀態,因爲模型可以總是運行,從不停止。
2.2轉移(Transitions):
兩個狀態之間的一種關係,表示對象將在第一個狀態中執行一定的動作並在某個特定事件發生或某個特定條件滿足時進入第二個狀態。
2.3事件:
使狀態發生變化的某時刻發生的動作或活動,用來指示是什麼觸發了轉移從而導致狀態發生了改變。事件通常在從一個狀態到另一個狀態的轉移路徑上直接指定。
2.4判斷:
判斷點通過對事件判斷分組轉移到各自方向,提高了狀態圖的可視性。
2.4同步:
使用同步和活動圖一樣是爲了說明併發工作流的分叉與聯合。
3.機房實例(註冊部分):總結:狀態圖重點在與描述對象的狀態及其狀態之間的轉移,與活動圖區別在於狀態圖注重的是行爲的結果,活動圖更注重是行爲的動作。
活動圖(Activity Diagram)
“活動圖”可通過一系列操作將業務流程或軟件進程以工作流的形式顯示出來。這些操作可以由人、軟件組件或計算機來執行。
使用活動圖可以描述多種類型的流程,如下:
1、用戶和您的系統之間的業務流程或工作流。
2、某一用例中執行的步驟。
3、軟件協議,即允許在組件間進行的交互序列。
4、軟件算法。
下面用一張圖來介紹活動圖的基本內容
下面是用rose 和 onenote結合畫的一張活動圖的實例,基本囊括了活動圖的重要元素。
6 組件圖(ComponentDiagram)、配置圖(Deployment Diagram)
組件(構件圖)和配置圖(部署圖)是面向對象系統的物理建模時使用的兩種圖。
-
組件圖:描述軟件組件以及組件之間的關係。
組件圖元素:組件、接口、依賴關係
組件:是定義良好接口的物理實現單元,遵從同一組接口,提供實現物理的可替換的部分。
接口:一個類提供另一個類的一組操作。
依賴關係:一種使用關係(這裏不做詳解) -
構件與結構之間關係:
構件與構件之間關係:依賴
構件與其對應接口之間關係:實現
導出接口:組件實現的接口,由提供操作的組件提供
導入接口:訪問服務的組件使用導入接口
機房收費系統構件圖:機房收費系統引用控件與報表生成器,導出EXcel,打印報表,通過代碼與數據庫連接實時更新數據。
- 配置圖:描述系統硬件的物理結構以及如何將軟件部署在硬件上。用於對系統的實現視圖建模,主要是爲了描述系統各個物理組成部分的分佈、提交、安裝過程。
組成元素:節點、關係
機房收費系統部署圖:
github上的地址
補充:UML是不斷修訂的 在UML 中,主要是使用了9 張圖,到了UML 2 中有新增了幾張圖;概覽
注意:
UML 1.0中協作圖改爲了UML 2 通信圖
。
</div>