UML概述
1 UML簡(jiǎn)介
UML (Unified Modeling Language)為面向?qū)ο筌浖O(shè)計(jì)提供統(tǒng)一的缔恳、標(biāo)準(zhǔn)的孔厉、可視化的建模語言拐袜。適用于描述以用例為驅(qū)動(dòng)赫粥,以體系結(jié)構(gòu)為中心的軟件設(shè)計(jì)的全過程龟劲。
UML的定義包括UML語義和UML表示法兩個(gè)部分胃夏。
(1) UML語義:UML對(duì)語義的描述使開發(fā)者能在語義上取得一致認(rèn)識(shí),消除了因人
而異的表達(dá)方法所造成的影響昌跌。
(2) UML表示法:UML表示法定義UML符號(hào)的表示法构订,為開發(fā)者或開發(fā)工具使用這
些圖形符號(hào)和文本語法為系統(tǒng)建模提供了標(biāo)準(zhǔn)。
2 UML模型圖的構(gòu)成
事物(Things):UML模型中最基本的構(gòu)成元素避矢,是具有代表性的成分的抽象
關(guān)系(Relationships):關(guān)系把事物緊密聯(lián)系在一起
圖(Diagrams ):圖是事物和關(guān)系的可視化表示
UML 中的事務(wù)
UML事物
UML包含4種事物:構(gòu)件事物 行為事物 分組事物 注釋事物
1 構(gòu)件事物: UML模型的靜態(tài)部分悼瘾,描述概念或物理元素
它包括以下幾種:
類:具有相同屬性相同操作 相同關(guān)系相同語義的對(duì)象的描述
接口:描述元素的外部可見行為,即服務(wù)集合的定義說明
協(xié)作:描述了一組事物間的相互作用的集合
用例:代表一個(gè)系統(tǒng)或系統(tǒng)的一部分行為审胸,是一組動(dòng)作序列的集合
構(gòu)件:系統(tǒng)中物理存在亥宿,可替換的部件
節(jié)點(diǎn):運(yùn)行時(shí)存在的物理元素
另外,參與者砂沛、信號(hào)應(yīng)用烫扼、文檔庫、頁表等都是上述基本事物的變體
2 行為事物:UML模型圖的動(dòng)態(tài)部分碍庵,描述跨越空間和時(shí)間的行為
交互:實(shí)現(xiàn)某功能的一組構(gòu)件事物之間的消息的集合映企,涉及消息、動(dòng)作序列静浴、鏈接
狀態(tài)機(jī):描述事物或交互在生命周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列
3 分組事物: UML模型圖的組織部分堰氓,描述事物的組織結(jié)構(gòu)
包:把元素組織成組的機(jī)制
4 注釋事物: UML模型的解釋部分,用來對(duì)模型中的元素進(jìn)行說明苹享,解釋
注解:對(duì)元素進(jìn)行約束或解釋的簡(jiǎn)單符號(hào)
UML 關(guān)系
1依賴
依賴(dependency)是兩個(gè)事物之間的語義關(guān)系双絮,其中一個(gè)事物(獨(dú)立事物)發(fā)生變化,
會(huì)影響到另一個(gè)事物(依賴事物)的語義
2關(guān)聯(lián)
關(guān)聯(lián)(association)是一種結(jié)構(gòu)關(guān)系得问,它指明一個(gè)事物的對(duì)象與另一個(gè)事物的對(duì)象間
的聯(lián)系
3泛化
泛化(generalization)是一種特殊/一般的關(guān)系囤攀。也可以看作是常說的繼承關(guān)系
4實(shí)現(xiàn)
實(shí)現(xiàn)(realization)是類元之間的語義關(guān)系,其中的一個(gè)類元指定了由另一個(gè)類元保
證執(zhí)行的契約
各UML圖及特征
用例圖( Use Case Diagram )
用例圖是從用戶角度描述系統(tǒng)功能宫纬, 是用戶所能觀察到的系統(tǒng)功能的模型圖焚挠,用例是系統(tǒng)中的一個(gè)功能單元
類圖(Class Diagram)
類圖描述系統(tǒng)中類的靜態(tài)結(jié)構(gòu)。不僅定義系統(tǒng)中的類漓骚,表示類之間的聯(lián)系如關(guān)聯(lián)蝌衔、依賴榛泛、聚合等,也包括類的內(nèi)部結(jié)構(gòu)(類的屬性和操作)
類圖是以類為中心來組織的胚委,類圖中的其他元素或?qū)儆谀硞€(gè)類或與類相關(guān)聯(lián)
對(duì)象圖( Object Diagram )
對(duì)象圖是類圖的實(shí)例,幾乎使用與類圖完全相同的標(biāo)識(shí)叉信。他們的不同點(diǎn)在于對(duì)象圖顯示類的多個(gè)對(duì)象實(shí)例亩冬,而不是實(shí)際的類
順序圖(Sequence Diagram)
順序圖顯示對(duì)象之間的動(dòng)態(tài)合作關(guān)系,它強(qiáng)調(diào)對(duì)象之間消息發(fā)送的順序硼身,同時(shí)顯示對(duì)象之間的交互
順序圖的一個(gè)用途是用來表示用例中的行為順序硅急。當(dāng)執(zhí)行一個(gè)用例行為時(shí),順序圖中的每條消息對(duì)應(yīng)了一個(gè)類操作或引起狀態(tài)轉(zhuǎn)換的觸發(fā)事件
協(xié)作圖(Collaboration Diagram)
協(xié)作圖描述對(duì)象間的協(xié)作關(guān)系佳遂,協(xié)作圖跟順序圖 相似营袜,顯示對(duì)象間的動(dòng)態(tài)合作關(guān)系。除顯示信息交換外丑罪,協(xié)作圖還顯示對(duì)象以及它們之間的關(guān)系.
協(xié)作圖的一個(gè)用途是表示一個(gè)類操作的實(shí)現(xiàn)
狀態(tài)圖(State Chart Diagram)
狀態(tài)圖是一個(gè)類對(duì)象所可能經(jīng)歷的所有歷程的模型圖荚板。狀態(tài)圖由對(duì)象的各個(gè)狀態(tài)和連接這些狀態(tài)的轉(zhuǎn)換組成
活動(dòng)圖(Activity Diagram)
活動(dòng)圖是狀態(tài)圖的一個(gè)變體,用來描述執(zhí)行算法的工作流程中涉及的活動(dòng)
活動(dòng)圖描述了一組順序的或并發(fā)的活動(dòng)
構(gòu)件圖(Component Diagram)
構(gòu)件圖為系統(tǒng)的構(gòu)件建模型—構(gòu)件即構(gòu)造應(yīng)用的軟件單元—還包括各構(gòu)件之間的依賴關(guān)系吩屹,以便通過這些依賴關(guān)系來估計(jì)對(duì)系統(tǒng)構(gòu)件的修改給系統(tǒng)可能帶來的影響
部署圖(Deployment Diagram)
部署視圖描述位于節(jié)點(diǎn)實(shí)例上的運(yùn)行構(gòu)件實(shí)例的安排跪另。節(jié)點(diǎn)是一組運(yùn)行資源,如計(jì)算機(jī)煤搜、設(shè)備或存儲(chǔ)器免绿。這個(gè)視圖允許評(píng)估分配結(jié)果和資源分配
各UML圖的關(guān)系
UML語法描述
用例圖概要
用例圖是被稱為參與者的外部用戶所能觀察到的系統(tǒng)功能的模型圖。 (《UML參考手冊(cè)》)
用例圖列出系統(tǒng)中的用例和系統(tǒng)外的參與者擦盾,并顯示哪個(gè)參與者參與了哪個(gè)用例的執(zhí)行
(或稱為發(fā)起了哪個(gè)用例)嘲驾。
用例圖多用于靜態(tài)建模階段(主要是業(yè)務(wù)建模和需求建模)。
用例圖中的關(guān)系及解釋
實(shí)例1 參與者之間的泛化關(guān)系
參與者:經(jīng)理迹卢,安全主管辽故,保安
用例:管理人事,批準(zhǔn)預(yù)算腐碱,批準(zhǔn)安全證書榕暇,監(jiān)視周邊
在參與者之間不存在泛化關(guān)系的情況下,各個(gè)參與者參與 用例的情況分別是:經(jīng)理參與用例管理人事和批準(zhǔn)預(yù)算喻杈;安全主管參與用例批準(zhǔn)安全證書彤枢;保安參與用例監(jiān)視周邊。由于安全主管與經(jīng)理筒饰,安全主管與保安之間泛化關(guān)系的存在缴啡,意味著安全主管可以擔(dān)任經(jīng)理和保安的角色,就能夠參與經(jīng)理和保安參與的用例瓷们。這樣业栅,安全主管就可以參與全部4個(gè)用例秒咐。但經(jīng)理或者保安卻不能擔(dān)任安全主管的角色,也就不能參與用例批準(zhǔn)安全證書碘裕。
實(shí)例2 用例之間擴(kuò)展和包含關(guān)系
用例的上下文是:短途旅行但汽車的油不足以應(yīng)付全部路程携取。那么為汽車加油的動(dòng)作在旅行的每個(gè)場(chǎng)景(事件流)中都會(huì)出現(xiàn),不加油就不會(huì)完成旅行帮孔。吃飯則可以由司機(jī)決定是否進(jìn)行雷滋,不吃飯不會(huì)影響旅行的完成。
實(shí)例3. 航空售票的用例圖
參與者(actor):clerk文兢,監(jiān)督員晤斩,信用卡服務(wù)商,信息亭
用例(use case): Buy tickets姆坚, Buy Subscription澳泵, Make charges, Survey sales
參與者Clerk參與(或稱發(fā)起)Buy tickets和Buy Subscription 兩個(gè)用例(關(guān)聯(lián)關(guān)系)兼呵。這兩個(gè)用例的事件流都包含Make
charges用例(包含關(guān)系)兔辅。
系統(tǒng)由:Buy tickets, Buy Subscription击喂, Make charges幢妄, Survey sales組成。
該系統(tǒng)主要包含:Buy tickets茫负, Buy Subscription蕉鸳, Make charges, Survey sales這幾個(gè)功能忍法。
該系統(tǒng)主要面向的用戶(參與者):clerk潮尝,監(jiān)督員,信用卡服務(wù)商饿序,信息亭勉失。
類圖概要
類圖以反映類的結(jié)構(gòu)(屬性、操作)以及類之間的關(guān)系為主要目的原探,描述了軟件系統(tǒng)的結(jié)構(gòu)乱凿,是一種靜態(tài)建模方法
類圖中的“類”與面向?qū)ο笳Z言中的“類”的概念是對(duì)應(yīng)的,是對(duì)現(xiàn)實(shí)世界中的事物的抽象
類圖中的事物及解釋
類
從上到下分為三部分咽弦,分別是類名徒蟆、屬性和操作。類名是必須有的
類如果有屬性型型,則每一個(gè)屬性都必須有一個(gè)名字段审,另外還可以有其它的描述信息,如可見性闹蒜、數(shù)據(jù)類型寺枉、缺省值等
類如果有操作抑淫,則每一個(gè)操作也都有一個(gè)名字,其它可選的信息包括可見性姥闪、參數(shù)的名字始苇、參數(shù)類型、參數(shù)缺省值和操作的返回值的類型等
類圖中的事物及解釋
接口
一組操作的集合筐喳,只有操作的聲明而沒有實(shí)現(xiàn)
抽象類
不能被實(shí)例化的類催式,一般至少包含一個(gè)抽象操作
模版類
一種參數(shù)化的類,在編譯時(shí)把模版參數(shù)綁定到不同的數(shù)據(jù)類型疏唾,從而產(chǎn)生不同的類
類圖中的關(guān)系及解釋
關(guān)聯(lián)關(guān)系
描述了類的結(jié)構(gòu)之間的關(guān)系蓄氧。具有方向函似、名字槐脏、角色和多重性等信息。一般的關(guān) 聯(lián)關(guān)系語義較弱撇寞。也有兩種語義較強(qiáng)顿天,分別是聚合與組合
聚合關(guān)系
特殊關(guān)聯(lián)關(guān)系,指明一個(gè)聚集(整體)和組成部分之間的關(guān)系
組合關(guān)系
語義更強(qiáng)的聚合蔑担,部分和整體具有相同的生命周期
泛化關(guān)系
在面向?qū)ο笾幸话惴Q為繼承關(guān)系牌废,存在于父類與子類、父接口與子接口之間
實(shí)現(xiàn)關(guān)系
對(duì)應(yīng)于類和接口之間的關(guān)系
依賴關(guān)系
描述了一個(gè)類的變化對(duì)依賴于它的類產(chǎn)生影響的情況啤握。有多種表現(xiàn)形式鸟缕,
例如綁定(bind)、友元(friend)等
類圖與代碼的映射
關(guān)聯(lián)關(guān)系的映射
泛化關(guān)系的映射
實(shí)現(xiàn)關(guān)系的映射
依賴關(guān)系的映射
類圖例子
圖形編輯器
圖形編輯器一般都具有一些基本圖形排抬,如直線懂从、矩形等,用戶可以直接使用基本圖形畫圖蹲蒲,也可以把基本圖形組合在一起創(chuàng)建復(fù)雜圖形
如果區(qū)別對(duì)待基本圖形和組合圖形番甩,會(huì)使代碼變得復(fù)雜,而且多數(shù)情況下用戶認(rèn)為二者是一樣的
組合模式可以用相同的方式處理兩種圖形
演出售票系統(tǒng)
在用例驅(qū)動(dòng)的開發(fā)過程中届搁,通過分析各個(gè)用例及參與者得到類圖缘薛。分析用例圖的過程中需要根據(jù)面向?qū)ο蟮脑瓌t設(shè)計(jì)類和關(guān)系,根據(jù)用例的細(xì)節(jié)設(shè)計(jì)類的屬性和操作
參考 staruml-教程指南.pdf