一篇看懂UML

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卡睦,一起剝皮案震驚了整個(gè)濱河市宴胧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌表锻,老刑警劉巖牺汤,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異浩嫌,居然都是意外死亡檐迟,警方通過查閱死者的電腦和手機(jī)补胚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來追迟,“玉大人溶其,你說我怎么就攤上這事《丶洌” “怎么了瓶逃?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長廓块。 經(jīng)常有香客問我厢绝,道長,這世上最難降的妖魔是什么带猴? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任昔汉,我火速辦了婚禮,結(jié)果婚禮上拴清,老公的妹妹穿的比我還像新娘靶病。我一直安慰自己,他們只是感情好口予,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布娄周。 她就那樣靜靜地躺著,像睡著了一般沪停。 火紅的嫁衣襯著肌膚如雪煤辨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天木张,我揣著相機(jī)與錄音众辨,去河邊找鬼。 笑死窟哺,一個(gè)胖子當(dāng)著我的面吹牛泻轰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播且轨,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼浮声,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了旋奢?” 一聲冷哼從身側(cè)響起泳挥,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎至朗,沒想到半個(gè)月后屉符,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年矗钟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了唆香。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吨艇,死狀恐怖躬它,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情东涡,我是刑警寧澤冯吓,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站疮跑,受9級(jí)特大地震影響组贺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜祖娘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一失尖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贿条,春花似錦雹仿、人聲如沸增热。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽峻仇。三九已至公黑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間摄咆,已是汗流浹背凡蚜。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吭从,地道東北人朝蜘。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像涩金,于是被迫代替她去往敵國和親谱醇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容