術(shù)語匯編 UML模型圖組成解析
本文和大家學(xué)習(xí)一下UML模型圖,UML模型圖能夠?qū)⒈唤5南到y(tǒng)的某一個(gè)方面的某一部分以圖形的方式表示出來,不同的視圖通過將多個(gè)不同的模型圖有機(jī)組合在一起就能夠描述系統(tǒng)模型的某方面的特征。
UML的九種模型圖
1.UML模型圖
UML模型圖能夠?qū)⒈唤5南到y(tǒng)的某一個(gè)方面的某一部分以圖形的方式表示出來,不同的視圖通過將多個(gè)不同的模型圖有機(jī)組合在一起就能夠描述系統(tǒng)模型的某方面的特征。UML的模型圖是有模型元素構(gòu)成的,模型元素以圖標(biāo)的形式直觀形象的表達(dá)各種概念。有的模型元素可以在多個(gè)模型圖中使用,如注釋和注釋連接可以在任何模型圖中使用,用于給其他的模型元素進(jìn)行注釋。各種模型圖能使用的模型元素集合也不相同,在介紹各種模型圖的時(shí)候會(huì)有具體的說明。
UML定義了九種UML模型圖:用例圖(UseCaseView)、類圖(ClassDiagram)、對象圖(ObjectDiagram)、構(gòu)件圖(ComponentDiagram)、部署圖(DeploymentDiagram)、狀態(tài)圖(StateChartDiagram)、活動(dòng)圖(ActivityDiagram)、序列圖(SequenceDiagram)以及協(xié)作圖(CollaborationDiagram)。這九種模型圖各有側(cè)重,如用例圖側(cè)重描述用戶需求,類圖側(cè)重描述系統(tǒng)具體實(shí)現(xiàn);描述的方面都不相同,如類圖描述的是系統(tǒng)的結(jié)構(gòu),序列圖描述的是系統(tǒng)的行為;抽象的層次也不同,如構(gòu)件圖描述系統(tǒng)的模塊結(jié)構(gòu),抽象層次較高,類圖是描述具體模塊的結(jié)構(gòu),抽象層次一般,對象圖描述了具體的模塊實(shí)現(xiàn),抽象層次較低。
在有的文獻(xiàn)書籍中,將這九種模型圖分為三大類:結(jié)構(gòu)分類、動(dòng)態(tài)行為和模型管理,結(jié)構(gòu)分類包括用例圖、類圖、對象圖、構(gòu)件圖和部署圖,動(dòng)態(tài)行為包括狀態(tài)圖、活動(dòng)圖、順序圖和協(xié)作圖,模型管理則包含類圖。本文則從動(dòng)態(tài)和靜態(tài)的角度分別介紹UML的九種模型圖。
2.靜態(tài)UML模型圖
結(jié)構(gòu)分類模型圖描述了的是系統(tǒng)的與時(shí)間不相關(guān)的屬性和行為。靜態(tài)模型圖包括類圖、對象圖、構(gòu)件圖和部署圖。
2.1類圖
類圖描述的是類和類之間的相互關(guān)系。類在UML中的是用矩形表示,矩形中可以有三個(gè)區(qū)域,最上方的區(qū)域是名字域,用來顯示類名,中間的區(qū)域是屬性域,用來顯示類所具有的屬性列表,最下方的區(qū)域是操作區(qū)域,顯示定義的操作列表。
屬性自己也含有屬性,如名字,類型,可見性等,屬性的名字就是標(biāo)識(shí)屬性的名稱,屬性的類型就是屬性所屬于的數(shù)據(jù)類型,屬性的可見性標(biāo)識(shí)屬性是否能被所屬類之外的類直接訪問,屬性的可見性分為三種:public,protected和private。
public標(biāo)識(shí)的是對應(yīng)屬性可以被所屬的類和其他類直接訪問;
protected標(biāo)識(shí)的是對應(yīng)屬性可以被與所屬類相關(guān)的一系列類的訪問,這些類的相關(guān)性不同的面向?qū)ο蟪绦蛟O(shè)計(jì)語言有不同的定義,如C++中protected是標(biāo)識(shí)的是屬性能夠被以public方式繼承的子類訪問,在JAVA中則是標(biāo)識(shí)屬性可以被在同一個(gè)包(package)的所有類訪問;
private標(biāo)識(shí)的是屬性只能被所屬類訪問。操作的屬性有名字、返回類型、參數(shù)類型以及可見性等,名字是操作的名稱;返回類型是操作的返回值的類型;參數(shù)類型是傳入操作的參數(shù)類型;可見性標(biāo)識(shí)的是操作是否能被被所屬類之外的類直接訪問,也分為:public、protected和private。有時(shí)為了表達(dá)簡潔,可以省去顯示類的各種屬性和操作。
類之間的相互關(guān)系包括:關(guān)聯(lián)(Association)、依賴(Dependency)、泛化(Generalization)以及實(shí)現(xiàn)(Realize)。
關(guān)聯(lián)描述的是類的對象之間邏輯上的關(guān)系,這些對象可以是同類的,也可以不是,關(guān)聯(lián)的兩端稱為角色,如客戶和訂單就存在一種關(guān)聯(lián)。在UML中關(guān)聯(lián)主要有三種形式,一種是用一條線段標(biāo)識(shí)雙向的關(guān)聯(lián),稱為關(guān)聯(lián)(Association);第二種是用一個(gè)有箭頭的線段標(biāo)識(shí)單向的關(guān)聯(lián)(UnidirectinalAssociation);第三中是用一個(gè)菱形為頭的線段表示關(guān)聯(lián)的兩端的類是整體和部分的關(guān)系,這種關(guān)聯(lián)也稱為聚合(Aggregation),例如:一個(gè)對象a包含另一個(gè)對象b的引用,則菱形的一端連接的是對象a,另一段連接的是對象b。聚合又分為。圖2.2.2顯示了這三種關(guān)聯(lián)的圖形表示。
從圖2.2.2中可以看到,NewClass2和NewClass4之間的關(guān)聯(lián)兩端都有星號(hào),那是用于標(biāo)識(shí)關(guān)聯(lián)的角色的多重性,如一對一、一對多、多對多等,這里標(biāo)識(shí)的是NewClass2和NewClass4是多對多關(guān)聯(lián)。
UML模型圖中類圖里的依賴表示的是模型元素間的依賴關(guān)系,依賴關(guān)系兩端的模型元素,一端是獨(dú)立的,另一端需要依賴這個(gè)獨(dú)立的元素。依賴關(guān)系用帶箭頭的虛線段表示。
泛化表示的是模型元素之間抽象和具體的關(guān)系,也就是模型元素之間的繼承關(guān)系。繼承者具有被繼承者相同的特性,同時(shí)還能在被繼承者的基礎(chǔ)上進(jìn)行擴(kuò)展,如:人和中國人的關(guān)系就是泛化關(guān)系,中國人是人,同時(shí)具有人的特征,也有自己擴(kuò)展了的特征。在面向?qū)ο笾?,被繼承者稱為父類,繼承者稱為子類。泛化用一個(gè)帶有空心的三角箭頭的線段表示,三角箭頭指向父類,另一端連接子類。
實(shí)現(xiàn)關(guān)系表示一個(gè)模型元素實(shí)現(xiàn)了另一個(gè)模型元素定義的操作,一般是指一個(gè)類實(shí)現(xiàn)了一個(gè)接口(Interface)定義的方法,在面向?qū)ο蟮母拍钪校涌诰褪侵欢x方法,并不實(shí)現(xiàn)這個(gè)方法,用來給別的類繼承它,并用類的操作實(shí)現(xiàn)它定義方法,通過這樣的方法就能夠?qū)⒍x和抽象分開,利于代碼的維護(hù)。實(shí)現(xiàn)關(guān)系用一條帶有空心三角箭頭的虛線段表示,三角形接口指向接口,虛線段另一端連接實(shí)現(xiàn)類。
表達(dá)實(shí)現(xiàn)關(guān)系除了上面的這中表示外,UML還提供了另一種簡潔的表示方式,用一個(gè)圓圈表示接口,上面沒有接口定義的方法,通過用一條實(shí)線段將其與一個(gè)類相連,就能表示了接口和實(shí)現(xiàn)類的關(guān)系。
泛化和實(shí)現(xiàn)關(guān)系都是描述一般和具體的關(guān)系,但是兩者還是有區(qū)別:泛化實(shí)在同一個(gè)抽象層次上的一般和具體的關(guān)系,而實(shí)現(xiàn)是在不同抽象層次的一般和具體的關(guān)系,接口的抽象層次較高。
2.2對象圖
對象圖描述的是對象之間的關(guān)系,也可以理解為系統(tǒng)在某一個(gè)時(shí)刻的圖像。對象圖是在比較具體的層次上描述,比如描述一個(gè)系統(tǒng)的各個(gè)類的對象是如何組合的。對象圖沒有類圖那么復(fù)雜,對象的表示和類相似,只是在名字域要標(biāo)明對象名和所屬類名,兩者用冒號(hào)分隔,屬性域要標(biāo)識(shí)出屬性的具體值,對象之間的關(guān)系都是用實(shí)線段相連?,F(xiàn)在很少將對象圖獨(dú)立畫出來,一些CASE工具,如RationalRose2002就沒有提供對象圖。對象的概念更多的是用在動(dòng)態(tài)的模型圖中。
2.3構(gòu)件圖
UML模型圖中構(gòu)件圖描述系統(tǒng)中的構(gòu)件以及構(gòu)件之間的依賴關(guān)系,構(gòu)件圖是在很具體的層次描述系統(tǒng)的物理結(jié)構(gòu)。
構(gòu)件圖有一下幾個(gè)主要的模型元素:構(gòu)件、接口、依賴關(guān)系。構(gòu)件就是定義了良好接口的實(shí)現(xiàn)代碼單元,已經(jīng)成為系統(tǒng)的一部分。構(gòu)件并不依賴于其他的構(gòu)件,只依賴于其所支持的接口,因此,構(gòu)件是可替換的,只要新的替換構(gòu)件支持相同的接口就可以,構(gòu)件用一個(gè)左邊有兩個(gè)小矩形的大矩形表示;接口用于描述構(gòu)件定義的接口,用一個(gè)圓圈表示,它與構(gòu)件是用實(shí)線段相連;依賴關(guān)系描述的是構(gòu)件之間的依賴關(guān)系,用帶箭頭的虛線段表示,箭頭一段的是被依賴的構(gòu)件。
2.4部署圖
部署圖描述任何基于計(jì)算機(jī)的應(yīng)用系統(tǒng)的物理或邏輯的配置。它可以描述系統(tǒng)硬件的物理拓?fù)浣Y(jié)構(gòu)和在此結(jié)構(gòu)上執(zhí)行的系統(tǒng)軟件,也能描述系統(tǒng)節(jié)點(diǎn)的拓?fù)浣Y(jié)構(gòu)和通信路徑、節(jié)點(diǎn)上運(yùn)行的構(gòu)件、構(gòu)件中的邏輯單元等。
部署圖中有以下幾個(gè)主要的模型元素:節(jié)點(diǎn)、構(gòu)件、對象、接口、連接和依賴關(guān)系。節(jié)點(diǎn)描述一個(gè)物理設(shè)備以及在其上運(yùn)行的軟件系統(tǒng),用一個(gè)立方體來表示。連接是節(jié)點(diǎn)之間的通信路徑,用實(shí)線段來表示。構(gòu)件、對象、界面和依賴關(guān)系同之前的介紹相同。#p#
3.動(dòng)態(tài)UML模型圖
動(dòng)態(tài)行為模型圖描述了系統(tǒng)隨時(shí)間變化的行為。動(dòng)態(tài)UML模型圖包括:用例圖、狀態(tài)圖、活動(dòng)圖、順序圖和協(xié)作圖。
3.1用例圖
用例圖從用戶的角度來描述系統(tǒng)的行為和特征。用例圖一般是用來進(jìn)行系統(tǒng)的需求分析的工具。
用例圖中首先要明確的概念就是用例。用例是系統(tǒng)的一個(gè)功能單元,描述了參與者與系統(tǒng)發(fā)生的一次交互行為。例如:銀行的ATM自動(dòng)提款機(jī)系統(tǒng),用戶提款就是一個(gè)用例。
用例圖有以下幾種模型元素:用例(UseCase)、參與者(Actor)、關(guān)聯(lián)關(guān)系(Association)、包含關(guān)系(Include)、擴(kuò)展關(guān)系(Extend)以及泛化關(guān)系(Generalization)。用例是以一個(gè)橢圓形來表示,橢圓中心是用例的名稱;參與者就是與所要建模的系統(tǒng)交互的外部用戶、進(jìn)程或其他系統(tǒng),參與者是以一個(gè)人形的圖標(biāo)表示;關(guān)聯(lián)關(guān)系描述參與者與其需要交互的用例之間的通信路徑,用一條實(shí)線段表示;包含關(guān)系描述一個(gè)用例利用另一個(gè)用例完成某個(gè)過程,用一個(gè)帶箭頭的虛線段并在虛線段上以“《include》”作為標(biāo)識(shí)來表示,箭頭指向被包含的用例;擴(kuò)展關(guān)系描述一個(gè)用例在原有的另一個(gè)用例的基礎(chǔ)上,擴(kuò)展了那個(gè)用例的部分功能,和包含關(guān)系類似,也是以一個(gè)帶箭頭的虛線段表示,不同的是虛線段上顯示的是“《extend》”,箭頭指向被擴(kuò)展的用例;泛化關(guān)系描述用例之間的一般和特殊的關(guān)系,特殊用例是在繼承了一般用例的特性的基礎(chǔ)上添加了新的特性,泛化關(guān)系和擴(kuò)展關(guān)系有相似之處,不同的是擴(kuò)展關(guān)系的需要明確標(biāo)明被擴(kuò)展用例的擴(kuò)展點(diǎn),擴(kuò)展用例只能擴(kuò)展這些擴(kuò)展點(diǎn),泛化關(guān)系用一個(gè)帶有空心三角箭頭的實(shí)線段表示。
3.2狀態(tài)圖
UML模型圖中狀態(tài)圖以狀態(tài)的概念描述對象、子系統(tǒng)、系統(tǒng)在生命周期中的各種行為,簡單的說就是一個(gè)狀態(tài)圖只描述某一個(gè)對象(可以是類、程序模塊、系統(tǒng))的行為。通過狀態(tài)圖可以知道一個(gè)對象、子系統(tǒng)、系統(tǒng)的各種狀態(tài)及其收到的消息對其狀態(tài)的影響。世界萬物都有可以描述的狀態(tài),因此都可以通過狀態(tài)圖來描述他們的行為,狀態(tài)圖具有很強(qiáng)的表達(dá)能力。
狀態(tài)圖有以下幾種常用的模型元素:狀態(tài)(State)、轉(zhuǎn)換(Transition)、起始狀態(tài)(StartState)、終止?fàn)顟B(tài)(EndState)。狀態(tài)描述一個(gè)對象的生命周期中某個(gè)時(shí)間段的特征,狀態(tài)是用圓角的矩形表示;轉(zhuǎn)換描述狀態(tài)間的轉(zhuǎn)移,用一個(gè)帶箭頭的實(shí)線段表示,還可以給轉(zhuǎn)換添加標(biāo)注,通過標(biāo)注來描述引起狀態(tài)轉(zhuǎn)移的事件、條件和要執(zhí)行的操作,標(biāo)注的格式為:事件名[條件]/操作,標(biāo)注的每個(gè)部分都可以省略;起始狀態(tài)描述對象生命周期的開始階段,用一個(gè)黑色的圓表示,有時(shí)為了表述清楚,在不產(chǎn)生混淆概念的情況下,可以省去起始狀態(tài);終止?fàn)顟B(tài)描述對象生命周期的終止階段,用一個(gè)帶圓形外框的黑色圓表示,一個(gè)狀態(tài)圖可以有多個(gè)終止?fàn)顟B(tài),有時(shí)為了表述清楚,在不產(chǎn)生混淆概念的情況下,可以省去終止?fàn)顟B(tài)。
3.3活動(dòng)圖
UML模型圖中活動(dòng)圖是通過一系列活動(dòng)描述對象的行為,對象可以是程序、模塊、子系統(tǒng)、系統(tǒng)。通過活動(dòng)圖,可以了解所描述對象的要進(jìn)行的各種任務(wù)和過程。活動(dòng)圖常用的模型元素包括:活動(dòng)(Activity)、起始點(diǎn)(Start)、終止點(diǎn)(End)、轉(zhuǎn)換(Transition)、對象(Object)、條件判斷(Decision)、同步條(SynchronizationBar)、信息流和泳道(Swinlane)。
活動(dòng)描述的是系統(tǒng)要完成的一個(gè)任務(wù)或要進(jìn)行的一個(gè)過程,是活動(dòng)圖中的一個(gè)原子活動(dòng),活動(dòng)用一個(gè)圓角的矩形表示,并標(biāo)上活動(dòng)名;起始點(diǎn)描述活動(dòng)圖的開始狀態(tài),與狀態(tài)圖類似,用一個(gè)黑色的圓標(biāo)識(shí),活動(dòng)圖可以有多個(gè)起始點(diǎn);終止點(diǎn)描述活動(dòng)圖的終止?fàn)顟B(tài),與狀態(tài)圖類似,用一個(gè)帶圓圈的黑色圓表示,活動(dòng)圖可以有多個(gè)終止點(diǎn);轉(zhuǎn)換描述活動(dòng)之間的轉(zhuǎn)換,也就是被描述對象的控制流,轉(zhuǎn)換用帶箭頭的實(shí)線段表示,箭頭指向轉(zhuǎn)向的活動(dòng),可以在轉(zhuǎn)換上用文字標(biāo)識(shí)轉(zhuǎn)換發(fā)生的條件;對象是活動(dòng)圖中參與的對象,它可以發(fā)送信號(hào)給活動(dòng)或是接收活動(dòng)的信號(hào),也可以表示活動(dòng)的輸入/輸出結(jié)果,對象的表示和對象圖中的表示相同;條件判斷描述活動(dòng)間轉(zhuǎn)換的分支,只有一個(gè)流入的信息流,不同的條件下輸出的信息流有不同的流向,條件判斷用一個(gè)菱形表示;同步條描述活動(dòng)之間的同步,一般有多個(gè)信息流流入,多個(gè)信息流流出,必須是流入的信息流都到達(dá),流出的信息流才能同時(shí)流出,同步條用一條較粗的水平的或是垂直的實(shí)線段表示;信息流描述活動(dòng)和對象的交互關(guān)系,對象可以作為活動(dòng)的輸入/輸出,也可以作為一個(gè)實(shí)體,接收活動(dòng)的信號(hào)或是向活動(dòng)發(fā)送信號(hào),信息流用帶箭頭的虛線段表示,箭頭標(biāo)識(shí)信息流的方向;泳道描述的是活動(dòng)圖中的活動(dòng)的分組,通常,可以將活動(dòng)按照某種標(biāo)準(zhǔn)分組,泳道在UML活動(dòng)圖中的表示就是在橫向上將活動(dòng)圖劃分出一個(gè)縱向的區(qū)域,同組的活動(dòng)和對象都在這個(gè)區(qū)域中,區(qū)域之間用虛線分隔。
3.4順序圖
順序圖通過描述對象之間的交互來表達(dá)被描述對象的行為。UML模型圖中順序圖重點(diǎn)強(qiáng)調(diào)對象交互的時(shí)間性順序性。與前面介紹的模型圖可以隨意組織模型元素不同,順序圖有一定的結(jié)構(gòu),可以將順序圖看成一個(gè)二維坐標(biāo),縱向上表示的是不同的對象,橫向上是順序的時(shí)間
順序圖常用的模型元素有:對象(Object)和消息(Message)。對象是順序圖描述的對象中的一個(gè)子對象,對象的表示和對象圖的類似,但是順序圖中的對象只放置在圖中對象所在的縱向區(qū)域的頂端,同時(shí)有一條向下延伸的虛線,表示對象的生命線,在對象正在執(zhí)行動(dòng)作(如向其它對象發(fā)送消息)的區(qū)間,生命線的虛線就被一個(gè)矩形方塊代替,用來表示此時(shí)對象處于激活狀態(tài),在對象生命線末尾用一個(gè)“×”標(biāo)識(shí)對象生命期的結(jié)束;消息是對象間通訊的信息,可以是控制信息、數(shù)據(jù)信息等,消息可以分為簡單消息、同步消息、異步消息和返回消息,簡單消息標(biāo)識(shí)對象間的一般消息,沒有具體的細(xì)節(jié),只描述了對象間的一次通訊,簡單消息用一個(gè)帶箭頭的實(shí)線段表示,同步消息描述的是消息的發(fā)送方發(fā)送了消息之后,必須收到回復(fù)消息才能進(jìn)行后續(xù)的動(dòng)作,同步消息用帶實(shí)心三角箭頭的實(shí)線段表示,異步消息描述的是消息的發(fā)送方在發(fā)送了消息之后就能進(jìn)行后續(xù)動(dòng)作,不需要等待回復(fù)消息,返回消息描述的是從同步消息激活的動(dòng)作返回到同步消息發(fā)送者的消息,返回消息用帶箭頭的虛線段表示。
3.5協(xié)作圖
協(xié)作圖描述在一定的語境中一組對象以及用來實(shí)現(xiàn)某些功能的對象之間的相互作用和對象之間的關(guān)系。UML模型圖中協(xié)作圖可以看成是在對象圖的基礎(chǔ)上,加入了對象之間的消息通訊以描述對象之間的交互。與順序圖不同,協(xié)作圖重點(diǎn)是在空間上描述對象的交互。
協(xié)作圖除了具有對象圖的模型元素之外,就是加入了消息(Message),消息是對象之間的通訊,從而實(shí)現(xiàn)對象的交互,消息可以分為:指向源的簡單消息、指向目的的簡單消息、指向源的異步消息、指向目的的異步消息、指向源的同步消息、指向目的的同步消息,指向源和指向目的都是表示簡單消息的流向,只是圖形表示的指向不同而已,指向源的簡單消息和指向目的的簡單消息都用帶箭頭的線段表示,指向源的簡單消息只指向左邊邊,指向目的的簡單消息只指向右邊,指向源的異步消息用帶有下半個(gè)箭頭的實(shí)線段表示,指向目的的異步消息用帶有上半個(gè)箭頭的實(shí)線段表示,指向源的同步消息和指向目的的同步消息用帶實(shí)心三角箭頭的實(shí)線段表示,指向源的同步消息只指向左邊,指向目的的同步消息只指向右邊。
【編輯推薦】