UML(Unified Modeling Language),,UML規(guī)范用來描述建模的概念有,,類(對象的)、對象,、關(guān)聯(lián),、職責(zé)、行為,、接口,、用例、包,、順序,、協(xié)作,以及狀態(tài),。這里對UML做一個簡單介紹
前言
UNL雖然有很多功能,,但平時有的最多的就是類圖,時序圖和用例圖,,那么接下來分別對這三種功能做一個簡要概述
類圖
在UML類圖中,,常見的有以下幾種關(guān)系: 泛化(Generalization), 實現(xiàn)(Realization), 關(guān)聯(lián)(Association), 聚合(Aggregation), 組合(Composition), 依賴(Dependency)
泛化(Generalization)
【泛化關(guān)系】:是一種繼承關(guān)系, 表示一般與特殊的關(guān)系, 它指定了子類如何特化父類的所有特征和行為. 例如:老虎是動物的一種, 即有老虎的特性也有動物的共性
【箭頭指向】:帶三角箭頭的實線,箭頭指向父類
實現(xiàn)(Realization)
【實現(xiàn)關(guān)系】:是一種類與接口的關(guān)系, 表示類是接口所有特征和行為的實現(xiàn).
【箭頭指向】:帶三角箭頭的虛線,,箭頭指向接口
關(guān)聯(lián)(Association)
【關(guān)聯(lián)關(guān)系】:是一種擁有的關(guān)系, 它使一個類知道另一個類的屬性和方法,;如:老師與學(xué)生,丈夫與妻子
關(guān)聯(lián)可以是雙向的,,也可以是單向的,。雙向的關(guān)聯(lián)可以有兩個箭頭或者沒有箭頭,單向的關(guān)聯(lián)有一個箭頭,。
【代碼體現(xiàn)】:成員變量
【箭頭及指向】:帶普通箭頭的實心線,,指向被擁有者
上圖中,老師與學(xué)生是雙向關(guān)聯(lián),,老師有多名學(xué)生,,學(xué)生也可能有多名老師。但學(xué)生與某課程間的關(guān)系為單向關(guān)聯(lián),一名學(xué)生可能要上多門課程,,課程是個抽象的東西他不擁有學(xué)生
上圖為自身關(guān)聯(lián)
聚合(Aggregation)
【聚合關(guān)系】:是整體與部分的關(guān)系, 且部分可以離開整體而單獨存在. 如車和輪胎是整體和部分的關(guān)系, 輪胎離開車仍然可以存在.
聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種,,是強的關(guān)聯(lián)關(guān)系;關(guān)聯(lián)和聚合在語法上無法區(qū)分,,必須考察具體的邏輯關(guān)系,。
【代碼體現(xiàn)】:成員變量
【箭頭及指向】:帶空心菱形的實心線,菱形指向整體
組合(Composition)
【組合關(guān)系】:是整體與部分的關(guān)系, 但部分不能離開整體而單獨存在. 如公司和部門是整體和部分的關(guān)系, 沒有公司就不存在部門.
組合關(guān)系是關(guān)聯(lián)關(guān)系的一種,,是比聚合關(guān)系還要強的關(guān)系,,它要求普通的聚合關(guān)系中代表整體的對象負責(zé)代表部分的對象的生命周期
【代碼體現(xiàn)】:成員變量
【箭頭及指向】:帶實心菱形的實線,菱形指向整體
依賴(Dependency)
【依賴關(guān)系】:是一種使用的關(guān)系, 即一個類的實現(xiàn)需要另一個類的協(xié)助, 所以要盡量不使用雙向的互相依賴.
【代碼表現(xiàn)】:局部變量,、方法的參數(shù)或者對靜態(tài)方法的調(diào)用
【箭頭及指向】:帶箭頭的虛線,,指向被使用者
各種關(guān)系的強弱順序
泛化 = 實現(xiàn) > 組合 > 聚合 > 關(guān)聯(lián) > 依賴
下面這張UML圖,比較形象地展示了各種類圖關(guān)系:
時序圖
時序圖(Sequence Diagram
)是顯示對象之間交互的圖,,這些對象是按時間順序排列的,。順序圖中顯示的是參與交互的對象及其對象之間消息交互的順序。時序圖中包括的建模元素主要有:角色(Actor
),、對象(Object
),、生命線(Lifeline
)、控制焦點(Focus of control
),、消息(Message
)等等
角色(Actor)
系統(tǒng)角色,,可以是人、及其甚至其他的系統(tǒng)或者子系統(tǒng)
對象(Object)
對象包括三種命名方式:
第一種方式包括對象名和類名
第二中方式只顯示類名不顯示對象名,,即表示他是一個匿名對象
第三種方式只顯示對象名不顯示類明
生命線(Lifeline)
生命線在順序圖中表示為從對象圖標向下延伸的一條虛線,,表示對象存在的時間,如下圖
控制焦點(Focus of Control)
控制焦點是順序圖中表示時間段的符號,,在這個時間段內(nèi)對象將執(zhí)行相應(yīng)的操作,。用小矩形表示。如下圖表示
消息(Message)
消息一般分為同步消息(Synchronous Message
),,異步消息(Asynchronous Message
)和返回消息(Return Message
).如下圖所示
同步消息=調(diào)用消息(Synchronous Message
)
消息的發(fā)送者把控制傳遞給消息的接收者,,然后停止活動,等待消息的接收者放棄或者返回控制,。用來表示同步的意義,。
異步消息(Asynchronous Message
)
消息發(fā)送者通過消息把信號傳遞給消息的接收者,然后繼續(xù)自己的活動,,不等待接受者返回消息或者控制,。異步消息的接收者和發(fā)送者是并發(fā)工作的。
返回消息(Return Message
)
返回消息表示從過程調(diào)用返回
自關(guān)聯(lián)消息(Self-Message
)
表示方法的自身調(diào)用以及一個對象內(nèi)的一個方法調(diào)用另外一個方法
Combined Fragments
表示帶有一些特定條件發(fā)送的消息
如上圖,,就表示,,循環(huán)(loop
)發(fā)送GetProperty
消息獲得屬性,。在使用Astah畫時序圖時,選擇一個Combined Fragments
之后,,可以在其對應(yīng)的屬性面板更改對應(yīng)的發(fā)送條件,。里面介紹了很多,,此處列舉一二:
Alternative fragment(denoted "alt")
與if…then…else
對應(yīng)
Option fragment (denoted "opt")
與Switch
對應(yīng)
Parallel fragment (denoted "par")
表示同時發(fā)生
Loop fragment(denoted "loop")
與for
或者Foreach
對應(yīng)
用例圖
用例圖主要用來描述“用戶,、需求、系統(tǒng)功能單元”之間的關(guān)系,。它展示一個外部用戶能夠觀察到的系統(tǒng)功能模型圖,。用例圖多用于靜態(tài)建模階段(主要是業(yè)務(wù)建模和需求建模),幫助開發(fā)團隊以一種可視化的方式理解系統(tǒng)的功能需求
參與者(Actor)
在系統(tǒng)外部與系統(tǒng)直接交互的人或事物,;需要注意以下兩點:
1)參與者是角色而不是具體的人,,它代表了參與者在與系統(tǒng)打交道的過程中所扮演的角色。所以在系統(tǒng)的實際運作中,,一個實際用戶可能對應(yīng)系統(tǒng)的多個參與者,。不同的用戶也可以只對應(yīng)于一個參與者,從而代表同一參與者的不同實例
2)參與者作為外部用戶(而不是內(nèi)部)與系統(tǒng)發(fā)生交互作用,,是它的主要特征,。
在UML中,參與者使用如圖所示的一個小人表示
用例(Use Case)
系統(tǒng)外部可見的一個系統(tǒng)功能單元,。系統(tǒng)的功能由系統(tǒng)單元所提供,,并通過一系列系統(tǒng)單元與一個或多個參與者之間交換的消息所表達。用橢圓表示,,橢圓中的文字簡述系統(tǒng)的功能
關(guān)系(Relationship)
關(guān)聯(lián)(Association)
表示參與者與用例之間的交互,,通信途徑,任何一方都可發(fā)送或接受消息
箭頭指向:指向消息接收方
泛化(Inheritance)
在編程中,,泛化關(guān)系是一種很重要的關(guān)系,,我們隨處可見
泛化關(guān)系是一般和特殊關(guān)系,就是通常理解的繼承關(guān)系,,子用例和父用例相似,,但表現(xiàn)出更特別的行為;子用例將繼承父用例的所有結(jié)構(gòu),、行為和關(guān)系,。子用例可以使用父用例的一段行為,也可以重載它,。父用例通常是抽象的
箭頭指向(需要特別注意):指向父用例
包含(Include)
包含關(guān)系用來把一個較復(fù)雜用例所表示功能分解成較小的步驟,。包含用例是必須的,如果缺少包含用例,,基用例就不完整,;包含用例必須被執(zhí)行,。
箭頭指向:指向分解出來的功能用例
擴展(Extend)
擴展關(guān)系是指用例功能的延伸,相當于為基礎(chǔ)用例提供一個附加功能,。擴展用例是可選的,,如果缺少擴展用例,不會影響到基用例的完整性,。
箭頭指向(需要特別注意):指向基用例
供一個完整的系統(tǒng)的用例圖
來源:http://www./content-4-157751.html