1. 前言
1.2 UML概述
1.2.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è)部分劣摇。
- UML語義:UML對(duì)語義的描述使開發(fā)者能在語義上取得一致認(rèn)識(shí)珠移,消除了因人
而異的表達(dá)方法所造成的影響。 - UML表示法:UML表示法定義UML符號(hào)的表示法末融,為開發(fā)者或開發(fā)工具使用這
些圖形符號(hào)和文本語法為系統(tǒng)建模提供了標(biāo)準(zhǔn)钧惧。
1.2.2 UML模型圖的構(gòu)成
- 事物(Things):UML模型中最基本的構(gòu)成元素,是具有代表性的成分的抽象
- 關(guān)系(Relationships):關(guān)系把事物緊密聯(lián)系在一起
- 圖(Diagrams ):圖是事物和關(guān)系的可視化表示
1.3 UML事物
UML包含4種事物:構(gòu)件事物 勾习、行為事物 浓瞪、 分組事物 、 注釋事物
1.3.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)用、文檔庫湿右、頁表等都是上述基本事物的變體
1.3.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)序列
1.3.3 分組事物: UML模型圖的組織部分,描述事物的組織結(jié)構(gòu)
- 包:把元素組織成組的機(jī)制
1.3.4 注釋事物: UML模型的解釋部分丈莺,用來對(duì)模型中的元素進(jìn)行說明划煮,解釋
- 注解:對(duì)元素進(jìn)行約束或解釋的簡(jiǎn)單符號(hào)
1.4 UML關(guān)系
-
1.4.1 依賴關(guān)系
依賴關(guān)系(dependency)是兩個(gè)事物之間的語義關(guān)系,其中一個(gè)事物(獨(dú)立事物)發(fā)生變化缔俄,
會(huì)影響到另一個(gè)事物(依賴事物)的語義 -
1.4.2 關(guān)聯(lián)關(guān)系
關(guān)聯(lián)(association)是一種結(jié)構(gòu)關(guān)系弛秋,它指明一個(gè)事物的對(duì)象與另一個(gè)事物的對(duì)象間
的聯(lián)系 -
1.4.3 泛化關(guān)系
泛化(generalization)是一種特殊/一般的關(guān)系。也可以看作是常說的繼承關(guān)系 -
1.4.4 實(shí)現(xiàn)關(guān)系
實(shí)現(xiàn)(realization)是類元之間的語義關(guān)系俐载,其中的一個(gè)類元指定了由另一個(gè)類元保
證執(zhí)行的契約
1.5 各UML圖及特征
1.5.1 用例圖( Use Case Diagram )
用例圖是從用戶角度描述系統(tǒng)功能铐懊, 是用戶所能觀察到的系統(tǒng)功能的模型圖,用例是系統(tǒng)中的一個(gè)功能單元
1.5.2 類圖(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)
1.5.3 對(duì)象圖( Object Diagram )
對(duì)象圖是類圖的實(shí)例太抓,幾乎使用與類圖完全相同的標(biāo)識(shí)空闲。他們的不同點(diǎn)在于對(duì)象圖顯示類的多個(gè)對(duì)象實(shí)例,而不是實(shí)際的類
1.5.4 順序圖(Sequence Diagram)->時(shí)序圖
順序圖顯示對(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ā)事件
1.5.5 協(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)
1.5.6 狀態(tài)圖(State Chart Diagram)
狀態(tài)圖是一個(gè)類對(duì)象所可能經(jīng)歷的所有歷程的模型圖。狀態(tài)圖由對(duì)象的各個(gè)狀態(tài)和連接這些狀態(tài)的轉(zhuǎn)換組成
1.5.7 活動(dòng)圖(Activity Diagram)
活動(dòng)圖是狀態(tài)圖的一個(gè)變體项炼,用來描述執(zhí)行算法的工作流程中涉及的活動(dòng)
活動(dòng)圖描述了一組順序的或并發(fā)的活動(dòng)
1.5.8 構(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)可能帶來的影響
1.5.9 部署圖(Deployment Diagram)
部署視圖描述位于節(jié)點(diǎn)實(shí)例上的運(yùn)行構(gòu)件實(shí)例的安排。節(jié)點(diǎn)是一組運(yùn)行資源锭部,如計(jì)算機(jī)暂论、設(shè)備或存儲(chǔ)器。這個(gè)視圖允許評(píng)估分配結(jié)果和資源分配
1.6 各UML圖的關(guān)系
1.7 UML語法描述
2. 用例圖
2.1 用例圖概要
用例圖是被稱為參與者的外部用戶所能觀察到的系統(tǒng)功能的模型圖拌禾。 (《UML參考手冊(cè)》
用例圖列出系統(tǒng)中的用例和系統(tǒng)外的參與者取胎,并顯示哪個(gè)參與者參與了哪個(gè)用例的執(zhí)行(或稱為發(fā)起了哪個(gè)用例)。
用例圖多用于靜態(tài)建模階段(主要是業(yè)務(wù)建模和需求建模)蹋砚。
2.2 用例圖中的事物及解釋
2.3 用例圖中的關(guān)系及解釋
2.4 例子
實(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(個(gè)人買票)翎迁, Buy Subscription(多人票->套餐), Make charges(信用卡付款)责嚷, Survey sales(調(diào)查銷售)
參與者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ù)商懦胞,信息亭。
3. 類圖
3.1 類圖概要
類圖以反映類的結(jié)構(gòu)(屬性凉泄、操作)以及類之間的關(guān)系為主要目的躏尉,描述了軟件系統(tǒng)的結(jié)構(gòu),是一種靜態(tài)建模方法
類圖中的“類”與面向?qū)ο笳Z言中的“類”的概念是對(duì)應(yīng)的后众,是對(duì)現(xiàn)實(shí)世界中的事物的抽象
3.2 類圖中的事物及解釋
3.2.1 類
從上到下分為三部分胀糜,分別是類名、屬性和操作蒂誉。類名是必須有的
類如果有屬性教藻,則每一個(gè)屬性都必須有一個(gè)名字,另外還可以有其它的描述信息右锨,如可見性括堤、數(shù)據(jù)類型、缺省值等
類如果有操作,則每一個(gè)操作也都有一個(gè)名字痊臭,其它可選的信息包括可見性哮肚、參數(shù)的名字、參數(shù)類型广匙、參數(shù)缺省值和操作的返回值的類型等
3.2.2 接口
一組操作的集合,只有操作的聲明而沒有實(shí)現(xiàn)
3.2.3 抽象類
不能被實(shí)例化的類恼策,一般至少包含一個(gè)抽象操作
3.2.4 模版類
一種參數(shù)化的類鸦致,在編譯時(shí)把模版參數(shù)綁定到不同的數(shù)據(jù)類型,從而產(chǎn)生不同的類
3.3.1 關(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)的聚合折砸,部分和整體具有相同的生命周期
3.3.2 泛化關(guān)系
在面向?qū)ο笾幸话惴Q為繼承關(guān)系,存在于父類與子類沙峻、父接口與子接口之間
3.3.3 實(shí)現(xiàn)關(guān)系
對(duì)應(yīng)于類和接口之間的關(guān)系
類Circle睦授、Rectangle實(shí)現(xiàn)了接口Shape的操作
3.3.4 依賴關(guān)系
描述了一個(gè)類的變化對(duì)依賴于它的類產(chǎn)生影響的情況。有多種表現(xiàn)形式摔寨,
例如綁定(bind)去枷、友元(friend)等
模板類Stack<T>定義了棧相關(guān)的操作;IntStack將參數(shù)T與實(shí)際類型int綁定是复,使得所有操作都針對(duì)int類型的數(shù)據(jù)
類Memento和類Originator建立了友元依賴關(guān)系删顶,以便Originator使用Memento的私有變量state
總結(jié):事物是什么?
答:事物:類淑廊、接口逗余、抽象類、模版類(泛型)蒋纬、屬性猎荠、方法、返回值等等…
有哪些關(guān)系蜀备?
關(guān)系:很多種類型
第一種:依賴關(guān)系->Dependency->弱關(guān)系
定義兩個(gè)類关摇,一個(gè)A類,一個(gè)B類碾阁,然后A類引用了B類输虱,這種關(guān)系稱之為偶然性或者臨時(shí)性。同時(shí)當(dāng)我們的B類發(fā)生變化的時(shí)候脂凶,那么影響到A類宪睹,這個(gè)關(guān)系稱之為依賴關(guān)系愁茁。
例如,
今天早餐去包子店買包子吃
今天我依賴于這個(gè)包子店
依賴關(guān)系條件一:臨時(shí)性亭病、偶然性
依賴關(guān)系條件二:B類發(fā)生變化的時(shí)候鹅很,那么影響到A類
第二種:關(guān)聯(lián)關(guān)系
兩種情況
1、單向關(guān)聯(lián)-關(guān)聯(lián)關(guān)系->Derected Association
依賴關(guān)系特殊情況
關(guān)聯(lián)關(guān)系本質(zhì)就是->依賴關(guān)系
兩個(gè)類屬于同級(jí)水平(比較強(qiáng)關(guān)系)
例子:人喝水
-
2罪帖、雙向關(guān)聯(lián)-關(guān)聯(lián)關(guān)系
例如:用戶和訂單關(guān)系(用戶對(duì)應(yīng)訂單促煮,訂單對(duì)應(yīng)用戶)
一對(duì)多:一個(gè)用戶對(duì)應(yīng)多個(gè)訂單(我去天貓買衣服,下單整袁,下多個(gè)訂單菠齿,買西裝,買很多次坐昙,買很多件)
多對(duì)多:一個(gè)訂單可以對(duì)應(yīng)多個(gè)用戶(飛機(jī)票)
飛機(jī)票:一個(gè)訂單最多對(duì)應(yīng)5個(gè)用戶
第三種:聚合關(guān)系
聚合關(guān)系:關(guān)聯(lián)關(guān)系特殊情況(特殊場(chǎng)景)
特點(diǎn):強(qiáng)調(diào)的是整體和部分關(guān)系
整體和部分可以分離绳匀,各自有各自生命周期,互不干擾炸客,強(qiáng)調(diào)的是共享
例如:電腦和電池關(guān)系
整體:電腦(6年)
部分:電池(3年)
第三種(一):組合關(guān)系
組合關(guān)系:聚合關(guān)系特殊情況(關(guān)聯(lián)關(guān)系中一種特殊情況)
特點(diǎn):強(qiáng)調(diào)整體和部分
組合關(guān)系和聚合關(guān)系區(qū)別疾棵?
組合關(guān)系:整體和部分不能夠分離,共享生命周期嚷量,整體的生命周期結(jié)束也就意味著部分生命周期結(jié)束陋桂。
例子:心臟和人關(guān)系
人:整體
心臟:部分
第四種:泛化關(guān)系
繼承關(guān)系
第五種:實(shí)現(xiàn)關(guān)系
實(shí)現(xiàn)接口