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