UML的歷史
面向對象的分析與設計(OOA&OOD)方法的發(fā)展在20世紀80年代中出現(xiàn)了一個高潮簸淀,UML就是這個高潮的產物笆豁。它不僅統(tǒng)一了Booch盼产、Rumbaugh和Jacobson的表示方法荔仁,而且對其做了進一步的發(fā)展售貌,并最終統(tǒng)一為大眾所接受的標準建模語言喻旷。
UML的定義
UML(Unified Modeling Language生逸,統(tǒng)一建模語言),是一種面向對象的建模語言且预。UML通過建立各種聯(lián)系槽袄,如類與類之間的關系、類/對象怎樣相互配合實現(xiàn)系統(tǒng)的行為狀態(tài)等锋谐。來組建整個結構模型遍尺。
UML用來描述模型的內容有3種,分別是事物(Things)
涮拗、關系(Relationships)
和圖(Diagrams)
乾戏,而這3種內容又有具體的劃分迂苛,如圖1-1:
UML中的事物
從圖1-1我們可以看到,UML中的事物包括結構事物鼓择、行為事物三幻、組織事物和輔助事物(也稱注釋事物)
結構事物(Structure Things)
-
類(Class)
類是具有相同屬性、相同方法呐能、相同語義和相同關系的一組對象的集合念搬。
在UML圖中,類使用包括類名摆出、屬性和方法的矩形來表示
朗徊,如下圖2-1所示:
-
接口(Interface)
接口是指類或組件所提供的、可以完成特定功能的一組操作的集合偎漫。
在UML圖中爷恳,接口通常用一個圓形來表示
,如下圖2-2所示:
-
協(xié)作(Collaboration)
協(xié)作定義了交互的操作象踊,表示一些角色和其他元素一起工作温亲,提供一些合作的動作。
在UML圖中杯矩,協(xié)作通常用一個虛線橢圓來表示
铸豁,如下圖2-3所示:
-
用例(Use Case)
用例定義了系統(tǒng)執(zhí)行的一組操作,對特定的用戶產生可以觀察的結果菊碟。
在UML圖中,用例通常用一個實線橢圓來表示
在刺,如下圖2-3所示:
活動類(Active Class)
活動類是指類對象有一個或多個線程或進程的類逆害∮毙樱活動類和類相似,只是它的對象代表的元素的行為和其他元素同時存在。
在UML圖中钾菊,活動類的表示方法和普通類的表示方法相似累颂,也是使用一個矩形瘦棋,只是最外面的邊框使用粗線
-
組件(Component)
組件是物理上可替換的沛慢,實現(xiàn)了一個或多個接口的系統(tǒng)元素躺苦。
在UML圖中愈诚,組件的表示方法比較復雜
,如圖2-5所示:
-
節(jié)點(Node)
節(jié)點是一個物理元素哩罪,它在運行時存在,代表一個可計算的資源捕捂,比如一臺數據庫服務器。
在UML圖中斗搞,節(jié)點使用一個立方體表示
指攒,如圖2-6所示:
行為事物(Behavior Things)
行為事物也稱動作事物,是UML模型中的動態(tài)部分僻焚,代表時間和空間上的動作允悦。行為事物主要有兩種:交互和狀態(tài)機。它們是UML模型中最基本的兩個動態(tài)事物元素虑啤,通常和其他的結構元素隙弛、主要是類、對象連接在一起狞山。
-
交互(Interaction)
在UML圖中全闷,交互的消息通常畫成帶箭頭的直線,如圖3-1所示:
-
狀態(tài)機(State Machine)
狀態(tài)機是對象的一個或多個狀態(tài)的集合萍启。在UML圖中总珠,狀態(tài)機通常用一個圓角矩形來表示,如圖3-2所示:
組織事物(Grouping Things)
組織事物也稱分組事物勘纯,是UML模型中組織的部分姚淆,可以把它看作一個個的盒子,每個盒子里面的對象關系相對復雜屡律,而盒子與盒子之間的關系相對簡單。組織事物只有一種降淮,稱為包(Package)
超埋。
包是一種有組織地將一系列元素分組的機制。包與組件的最大區(qū)別在于佳鳖,包純粹是一種概念上的東西霍殴,僅僅存在于開發(fā)階段結束之前,而組件是一種物理元素系吩,存在于運行時来庭。在UML圖中,包通常表示為一個類似文件夾的符號穿挨,如圖4-1所示:
輔助事物(Annotation Things)
輔助事物也稱為注釋事物月弛,屬于這一類的只有注釋(Annotation)肴盏。
注釋就是UML模型的解釋部分。在UML圖中帽衙,一般表示為折起一角的矩形菜皂,如圖5-1所示:
UML中的關系
UML中的關系(Relationships)主要包括4種:關聯(lián)關系、依賴關系厉萝、泛化關系和實現(xiàn)關系恍飘。
-
關聯(lián)(Association)關系
關聯(lián)關系是一種結構化的關系,指一種對象和另一種對象有聯(lián)系谴垫。給定關聯(lián)的兩個類章母,可以從其中的一個類的對象訪問到另一個類的相關對象。
在UML圖中翩剪,關聯(lián)關系用一條實線表示乳怎,如圖6-1所示:
另外, 關聯(lián)可以有方向,表示該關聯(lián)在某方向被使用肢专。
只在一個方向上存在的關聯(lián)舞肆,稱作單向關聯(lián)(Unidirectional Association)
;
在兩個方向上都存在的關聯(lián),稱作雙向關聯(lián)(Bidirectional Association)
博杖。
-
依賴(Dependency)關系
對于兩個對象X椿胯、Y,如果對象X發(fā)生變化剃根,可能會引起對另一個對象Y的變化哩盲,則稱Y依賴于X。在UML圖中狈醉,依賴關系用一條帶有箭頭的虛線來表示廉油,如圖6-2所示:
-
泛化(Generalization)關系
UML中的泛化關系定義了一般元素和特殊元素之間的分類關系,與和C++及Java中的繼承關系有些類似苗傅。在UML圖中抒线,泛化關系用一條帶有空心箭頭的實線來表示,如圖6-3所示:
-
實現(xiàn)(Realization)關系
實現(xiàn)關系將一種模型元素(如類)與另一種模型元素(如接口)連接起來渣慕,其中接口只是行為的說明而不是結構或者實現(xiàn)嘶炭。真正的實現(xiàn)由前一個模型元素來完成。在UML圖中逊桦,實現(xiàn)關系一般用一條帶有空心箭頭的虛線來表示眨猎,如圖6-4所示:
以上講述了UML中的4種關系,除了需要注意各種關系的區(qū)別與聯(lián)系以外强经,還要了解對關系的修飾睡陪。最常見的,對關系可以做兩種修飾。
-
命名兰迫,即可以為關系取名信殊,如圖7-1所示:
-
數字,可以表示不同對應情況的關系逮矛,比如一對多鸡号、多對一、一對一和多對多等须鼎,如圖7-2所示:
UML中的圖
UML中的各種圖是UML模型的重要組成部分鲸伴,這里將概述一下組成UML的幾種圖。
-
用例圖(Use Case Diagram)
用例圖展現(xiàn)了一組用例晋控、參與者以及它們間的關系汞窗。可以用用例圖描述系統(tǒng)的靜態(tài)使用情況赡译。在對系統(tǒng)行為組織和建模方面仲吏,用例圖是相當重要的。用例圖的例子如圖8-1所示:
注釋
- 小人形狀的用戶和ATM是參與者蝌焚;
- 橢圓形狀的插入卡裹唆、輸入密碼、打印票據只洒、驗證密碼及出款是用例许帐;
-
類圖(Class Diagram)
類圖展示了一組類、接口和協(xié)作及它們間的關系毕谴,在建模中所建立的最常見的圖就是類圖成畦。用類圖說明系統(tǒng)的靜態(tài)設計視圖,包含主動類的類圖——專注于系統(tǒng)的靜態(tài)進程視圖涝开。系統(tǒng)可有多個類圖循帐,單個類圖僅表達了系統(tǒng)的一個方面。一般在高層給出類的主要職責舀武,在低層給出類的屬性和操作拄养。類圖的例子如圖8-2所示:
注釋
- 圖中反映了5個類之間的關聯(lián)關系;
- 人民幣賬戶類和美元賬戶類從賬戶類繼承银舱;
- 賬戶與ATM相關聯(lián)衷旅;
- 用戶與兩種賬戶類相關聯(lián);
對象圖(Object Diagram)
對象圖展示了一組對象及它們間的關系纵朋。用對象圖說明類圖中所反應的事物實例的數據結構和靜態(tài)快照。對象圖表達了系統(tǒng)的靜態(tài)設計視圖或靜態(tài)過程視圖茄袖,除了現(xiàn)實和原型方面的因素外操软,它與類圖作用是相同的。-
組件圖(Component Diagram)
組件圖宪祥,又稱構件圖聂薪,它由組件家乘、接口和組件之間的聯(lián)系構成。其中的組件可以是源碼藏澳、二進制碼或可執(zhí)行程序仁锯。組件圖表示系統(tǒng)中的不同物理部件及其聯(lián)系,它表達的是系統(tǒng)代碼本身的結構翔悠。組件圖的例子如圖8-3所示:
注釋
圖中有3個組件业崖,組件1與組件3和組件2存在著依賴關系。
-
配置圖(Deployment Diagram)
配置圖展現(xiàn)了對運行時處理節(jié)點以及其中組件的配置蓄愁。它描述系統(tǒng)硬件的物理拓撲結構(包括網絡布局和組件在網絡上的位置)双炕,以及在此結構上執(zhí)行的軟件(即運行時軟組件在節(jié)點中的分布情況)。用配置圖說明系統(tǒng)結構的靜態(tài)配置視圖撮抓,即說明分布妇斤、交付和安裝的物理系統(tǒng)。配置圖的例子如圖8-4所示:
注釋
圖中有3個處理機和22上設備丹拯,相互之間是關聯(lián)的關系站超。
-
時序圖(Sequence Diagram)
時序圖顯示多個對象之間的動態(tài)協(xié)作,重點是顯示對象之間發(fā)送消息的時間順序乖酬。時序圖也顯示對象之間的交互死相,即在系統(tǒng)執(zhí)行時,某個指定時間點將發(fā)生的事情剑刑。時序圖的一個用途是表示用例的行為順序媳纬,當執(zhí)行一個用例行為時,時序圖中的每一條消息對應了一個類的操作或狀態(tài)機中引起轉換的觸發(fā)事件施掏。用時序圖說明系統(tǒng)的動態(tài)視圖钮惠,例子如下圖8-4所示:
協(xié)作圖(Collaboration Diagram)
協(xié)作圖在對一次交互中有意義的對象和對象間的連接建模,它強調收發(fā)消息對象的組織結構七芭,按組織結構對控制流建模素挽。除了顯示消息的交互之外,還顯示對象以及它們之間的關系狸驳。-
狀態(tài)圖(Statechart Diagram)
狀態(tài)圖展示了一個特定對象的所有可能狀態(tài)以及由于各種事件的發(fā)生而引起的狀態(tài)間的轉移预明。一個狀態(tài)圖描述了一個狀態(tài)機,用狀態(tài)圖說明系統(tǒng)的動態(tài)視圖耙箍。狀態(tài)圖對于接口撰糠、類或協(xié)作的行為建模尤為重要,可用它描述用例實例的生命周期辩昆。其例子如圖8-6所示:
-
活動圖(Activity Diagram)
活動圖是狀態(tài)圖的一個變體阅酪,顯示了系統(tǒng)中從一個活動到另一個活動的流程。活動圖顯示了一些活動术辐,強調的是對象之間的流程控制砚尽,例子如圖8-7所示: