深入剖析靜態(tài)UML模型圖
本文和大家重點討論一下UML模型圖的概念,UML定義了九種UML模型圖,在有的文獻(xiàn)書籍中,將這九種UML模型圖分為三大類:結(jié)構(gòu)分類、動態(tài)行為和模型管理本文主要介紹一下靜態(tài)UML模型圖。
1.九種UML模型圖
UML模型圖能夠?qū)⒈唤5南到y(tǒng)的某一個方面的某一部分以圖形的方式表示出來,不同的視圖通過將多個不同的UML模型圖有機(jī)組合在一起就能夠描述系統(tǒng)模型的某方面的特征。UML的UML模型圖是有模型元素構(gòu)成的,模型元素以圖標(biāo)的形式直觀形象的表達(dá)各種概念。有的模型元素可以在多個UML模型圖中使用,如注釋和注釋連接可以在任何UML模型圖中使用,用于給其他的模型元素進(jìn)行注釋。各種UML模型圖能使用的模型元素集合也不相同,在介紹各種UML模型圖的時候會有具體的說明。
UML定義了九種UML模型圖:用例圖(UseCaseView)、類圖(ClassDiagram)、對象圖(ObjectDiagram)、構(gòu)件圖(ComponentDiagram)、部署圖(DeploymentDiagram)、狀態(tài)圖(StateChartDiagram)、活動圖(ActivityDiagram)、序列圖(SequenceDiagram)以及協(xié)作圖(CollaborationDiagram)。這九種UML模型圖各有側(cè)重,如用例圖側(cè)重描述用戶需求,類圖側(cè)重描述系統(tǒng)具體實現(xiàn);描述的方面都不相同,如類圖描述的是系統(tǒng)的結(jié)構(gòu),序列圖描述的是系統(tǒng)的行為;抽象的層次也不同,如構(gòu)件圖描述系統(tǒng)的模塊結(jié)構(gòu),抽象層次較高,類圖是描述具體模塊的結(jié)構(gòu),抽象層次一般,對象圖描述了具體的模塊實現(xiàn),抽象層次較低。
在有的文獻(xiàn)書籍中,將這九種UML模型圖分為三大類:結(jié)構(gòu)分類、動態(tài)行為和模型管理,結(jié)構(gòu)分類包括用例圖、類圖、對象圖、構(gòu)件圖和部署圖,動態(tài)行為包括狀態(tài)圖、活動圖、順序圖和協(xié)作圖,模型管理則包含類圖。本文則從動態(tài)和靜態(tài)的角度分別介紹UML的九種UML模型圖。
2.靜態(tài)UML模型圖
結(jié)構(gòu)分類UML模型圖描述了的是系統(tǒng)的與時間不相關(guān)的屬性和行為。靜態(tài)UML模型圖包括類圖、對象圖、構(gòu)件圖和部署圖。
2.1類圖
類圖描述的是類和類之間的相互關(guān)系。類在UML中的是用矩形表示,矩形中可以有三個區(qū)域,最上方的區(qū)域是名字域,用來顯示類名,中間的區(qū)域是屬性域,用來顯示類所具有的屬性列表,最下方的區(qū)域是操作區(qū)域,顯示定義的操作列表。
類之間的相互關(guān)系包括:關(guān)聯(lián)(Association)、依賴(Dependency)、泛化(Generalization)以及實現(xiàn)(Realize)。
關(guān)聯(lián)描述的是類的對象之間邏輯上的關(guān)系,這些對象可以是同類的,也可以不是,關(guān)聯(lián)的兩端稱為角色,如客戶和訂單就存在一種關(guān)聯(lián)。在UML中關(guān)聯(lián)主要有三種形式,一種是用一條線段標(biāo)識雙向的關(guān)聯(lián),稱為關(guān)聯(lián)(Association);第二種是用一個有箭頭的線段標(biāo)識單向的關(guān)聯(lián)(UnidirectinalAssociation);第三中是用一個菱形為頭的線段表示關(guān)聯(lián)的兩端的類是整體和部分的關(guān)系,這種關(guān)聯(lián)也稱為聚合(Aggregation),例如:一個對象a包含另一個對象b的引用,則菱形的一端連接的是對象a,另一段連接的是對象b。聚合又分為。
UML模型圖中類圖依賴表示的是模型元素間的依賴關(guān)系,依賴關(guān)系兩端的模型元素,一端是獨(dú)立的,另一端需要依賴這個獨(dú)立的元素。依賴關(guān)系用帶箭頭的虛線段表示。
泛化表示的是模型元素之間抽象和具體的關(guān)系,也就是模型元素之間的繼承關(guān)系。繼承者具有被繼承者相同的特性,同時還能在被繼承者的基礎(chǔ)上進(jìn)行擴(kuò)展,如:人和中國人的關(guān)系就是泛化關(guān)系,中國人是人,同時具有人的特征,也有自己擴(kuò)展了的特征。在面向?qū)ο笾校焕^承者稱為父類,繼承者稱為子類。泛化用一個帶有空心的三角箭頭的線段表示,三角箭頭指向父類,另一端連接子類。
UML模型圖中類圖實現(xiàn)關(guān)系表示一個模型元素實現(xiàn)了另一個模型元素定義的操作,一般是指一個類實現(xiàn)了一個接口(Interface)定義的方法,在面向?qū)ο蟮母拍钪校涌诰褪侵欢x方法,并不實現(xiàn)這個方法,用來給別的類繼承它,并用類的操作實現(xiàn)它定義方法,通過這樣的方法就能夠?qū)⒍x和抽象分開,利于代碼的維護(hù)。實現(xiàn)關(guān)系用一條帶有空心三角箭頭的虛線段表示,三角形接口指向接口,虛線段另一端連接實現(xiàn)類。
表達(dá)實現(xiàn)關(guān)系除了上面的這中表示外,UML還提供了另一種簡潔的表示方式,用一個圓圈表示接口,上面沒有接口定義的方法,通過用一條實線段將其與一個類相連,就能表示了接口和實現(xiàn)類的關(guān)系。
泛化和實現(xiàn)關(guān)系都是描述一般和具體的關(guān)系,但是兩者還是有區(qū)別:泛化實在同一個抽象層次上的一般和具體的關(guān)系,而實現(xiàn)是在不同抽象層次的一般和具體的關(guān)系,接口的抽象層次較高。
2.2對象圖
對象圖描述的是對象之間的關(guān)系,也可以理解為系統(tǒng)在某一個時刻的圖像。對象圖是在比較具體的層次上描述,比如描述一個系統(tǒng)的各個類的對象是如何組合的。對象圖沒有類圖那么復(fù)雜,對象的表示和類相似,只是在名字域要標(biāo)明對象名和所屬類名,兩者用冒號分隔,屬性域要標(biāo)識出屬性的具體值,對象之間的關(guān)系都是用實線段相連?,F(xiàn)在很少將對象圖獨(dú)立畫出來,一些CASE工具,如RationalRose2002就沒有提供對象圖。對象的概念更多的是用在動態(tài)的UML模型圖中。
2.3構(gòu)件圖
構(gòu)件圖描述系統(tǒng)中的構(gòu)件以及構(gòu)件之間的依賴關(guān)系,構(gòu)件圖是在很具體的層次描述系統(tǒng)的物理結(jié)構(gòu)。
構(gòu)件圖有一下幾個主要的模型元素:構(gòu)件、接口、依賴關(guān)系。構(gòu)件就是定義了良好接口的實現(xiàn)代碼單元,已經(jīng)成為系統(tǒng)的一部分。構(gòu)件并不依賴于其他的構(gòu)件,只依賴于其所支持的接口,因此,構(gòu)件是可替換的,只要新的替換構(gòu)件支持相同的接口就可以,構(gòu)件用一個左邊有兩個小矩形的大矩形表示;接口用于描述構(gòu)件定義的接口,用一個圓圈表示,它與構(gòu)件是用實線段相連;依賴關(guān)系描述的是構(gòu)件之間的依賴關(guān)系,用帶箭頭的虛線段表示,箭頭一段的是被依賴的構(gòu)件。
2.4部署圖
部署圖描述任何基于計算機(jī)的應(yīng)用系統(tǒng)的物理或邏輯的配置。它可以描述系統(tǒng)硬件的物理拓?fù)浣Y(jié)構(gòu)和在此結(jié)構(gòu)上執(zhí)行的系統(tǒng)軟件,也能描述系統(tǒng)節(jié)點的拓?fù)浣Y(jié)構(gòu)和通信路徑、節(jié)點上運(yùn)行的構(gòu)件、構(gòu)件中的邏輯單元等。
部署圖中有以下幾個主要的模型元素:節(jié)點、構(gòu)件、對象、接口、連接和依賴關(guān)系。節(jié)點描述一個物理設(shè)備以及在其上運(yùn)行的軟件系統(tǒng),用一個立方體來表示。連接是節(jié)點之間的通信路徑,用實線段來表示。構(gòu)件、對象、界面和依賴關(guān)系同之前的介紹相同。
【編輯推薦】
- 全面認(rèn)識九種基本的UML模型圖
- 術(shù)語匯編 UML模型圖組成解析
- 九種UML模型圖及其功能詳解
- 解析UML中五類UML模型圖
- 用UML模型實現(xiàn)大型實時監(jiān)控應(yīng)用軟件