了解UML這一篇就夠了

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:

圖1-1:UML的內容結構

UML中的事物

從圖1-1我們可以看到,UML中的事物包括結構事物鼓择、行為事物三幻、組織事物和輔助事物(也稱注釋事物)

結構事物(Structure Things)

  • 類(Class)
    類是具有相同屬性、相同方法呐能、相同語義和相同關系的一組對象的集合念搬。
    在UML圖中,類使用包括類名摆出、屬性和方法的矩形來表示朗徊,如下圖2-1所示:

    圖2-1:類

  • 接口(Interface)
    接口是指類或組件所提供的、可以完成特定功能的一組操作的集合偎漫。
    在UML圖中爷恳,接口通常用一個圓形來表示,如下圖2-2所示:

    圖2-2: 接口

  • 協(xié)作(Collaboration)
    協(xié)作定義了交互的操作象踊,表示一些角色和其他元素一起工作温亲,提供一些合作的動作。
    在UML圖中杯矩,協(xié)作通常用一個虛線橢圓來表示铸豁,如下圖2-3所示:

    圖2-3:協(xié)作

  • 用例(Use Case)
    用例定義了系統(tǒng)執(zhí)行的一組操作,對特定的用戶產生可以觀察的結果菊碟。
    在UML圖中,用例通常用一個實線橢圓來表示在刺,如下圖2-3所示:

    圖2-4:用例

  • 活動類(Active Class)
    活動類是指類對象有一個或多個線程或進程的類逆害∮毙樱活動類和類相似,只是它的對象代表的元素的行為和其他元素同時存在。
    在UML圖中钾菊,活動類的表示方法和普通類的表示方法相似累颂,也是使用一個矩形瘦棋,只是最外面的邊框使用粗線

  • 組件(Component)
    組件是物理上可替換的沛慢,實現(xiàn)了一個或多個接口的系統(tǒng)元素躺苦。
    在UML圖中愈诚,組件的表示方法比較復雜,如圖2-5所示:

    圖2-5:組件

  • 節(jié)點(Node)
    節(jié)點是一個物理元素哩罪,它在運行時存在,代表一個可計算的資源捕捂,比如一臺數據庫服務器。
    在UML圖中斗搞,節(jié)點使用一個立方體表示指攒,如圖2-6所示:

    圖2-6:節(jié)點

行為事物(Behavior Things)

行為事物也稱動作事物,是UML模型中的動態(tài)部分僻焚,代表時間和空間上的動作允悦。行為事物主要有兩種:交互和狀態(tài)機。它們是UML模型中最基本的兩個動態(tài)事物元素虑啤,通常和其他的結構元素隙弛、主要是類、對象連接在一起狞山。

  • 交互(Interaction)
    在UML圖中全闷,交互的消息通常畫成帶箭頭的直線,如圖3-1所示:
    圖3-1:交互
  • 狀態(tài)機(State Machine)
    狀態(tài)機是對象的一個或多個狀態(tài)的集合萍启。在UML圖中总珠,狀態(tài)機通常用一個圓角矩形來表示,如圖3-2所示:
    圖3-2:狀態(tài)機

組織事物(Grouping Things)

組織事物也稱分組事物勘纯,是UML模型中組織的部分姚淆,可以把它看作一個個的盒子,每個盒子里面的對象關系相對復雜屡律,而盒子與盒子之間的關系相對簡單。組織事物只有一種降淮,稱為包(Package)超埋。
包是一種有組織地將一系列元素分組的機制。包與組件的最大區(qū)別在于佳鳖,包純粹是一種概念上的東西霍殴,僅僅存在于開發(fā)階段結束之前,而組件是一種物理元素系吩,存在于運行時来庭。在UML圖中,包通常表示為一個類似文件夾的符號穿挨,如圖4-1所示:

圖4-1:包

輔助事物(Annotation Things)

輔助事物也稱為注釋事物月弛,屬于這一類的只有注釋(Annotation)肴盏。
注釋就是UML模型的解釋部分。在UML圖中帽衙,一般表示為折起一角的矩形菜皂,如圖5-1所示:


圖5-1:注釋

UML中的關系

UML中的關系(Relationships)主要包括4種:關聯(lián)關系、依賴關系厉萝、泛化關系和實現(xiàn)關系恍飘。

  • 關聯(lián)(Association)關系
    關聯(lián)關系是一種結構化的關系,指一種對象和另一種對象有聯(lián)系谴垫。給定關聯(lián)的兩個類章母,可以從其中的一個類的對象訪問到另一個類的相關對象。
    在UML圖中翩剪,關聯(lián)關系用一條實線表示乳怎,如圖6-1所示:
    圖6-1:關聯(lián)關系

另外, 關聯(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所示:

    圖6-2:依賴關系

  • 泛化(Generalization)關系
    UML中的泛化關系定義了一般元素和特殊元素之間的分類關系,與和C++及Java中的繼承關系有些類似苗傅。在UML圖中抒线,泛化關系用一條帶有空心箭頭的實線來表示,如圖6-3所示:

    圖6-3:泛化關系

  • 實現(xiàn)(Realization)關系
    實現(xiàn)關系將一種模型元素(如類)與另一種模型元素(如接口)連接起來渣慕,其中接口只是行為的說明而不是結構或者實現(xiàn)嘶炭。真正的實現(xiàn)由前一個模型元素來完成。在UML圖中逊桦,實現(xiàn)關系一般用一條帶有空心箭頭的虛線來表示眨猎,如圖6-4所示:

    圖6-4:實現(xiàn)關系

以上講述了UML中的4種關系,除了需要注意各種關系的區(qū)別與聯(lián)系以外强经,還要了解對關系的修飾睡陪。最常見的,對關系可以做兩種修飾。

  1. 命名兰迫,即可以為關系取名信殊,如圖7-1所示:


    圖7-1:關系命名
  2. 數字,可以表示不同對應情況的關系逮矛,比如一對多鸡号、多對一、一對一和多對多等须鼎,如圖7-2所示:


    圖7-2:關系數字

UML中的圖

UML中的各種圖是UML模型的重要組成部分鲸伴,這里將概述一下組成UML的幾種圖。

  • 用例圖(Use Case Diagram)
    用例圖展現(xiàn)了一組用例晋控、參與者以及它們間的關系汞窗。可以用用例圖描述系統(tǒng)的靜態(tài)使用情況赡译。在對系統(tǒng)行為組織和建模方面仲吏,用例圖是相當重要的。用例圖的例子如圖8-1所示:
    圖8-1:用例圖舉例

注釋

  1. 小人形狀的用戶和ATM是參與者蝌焚;
  2. 橢圓形狀的插入卡裹唆、輸入密碼、打印票據只洒、驗證密碼及出款是用例许帐;
  • 類圖(Class Diagram)
    類圖展示了一組類、接口和協(xié)作及它們間的關系毕谴,在建模中所建立的最常見的圖就是類圖成畦。用類圖說明系統(tǒng)的靜態(tài)設計視圖,包含主動類的類圖——專注于系統(tǒng)的靜態(tài)進程視圖涝开。系統(tǒng)可有多個類圖循帐,單個類圖僅表達了系統(tǒng)的一個方面。一般在高層給出類的主要職責舀武,在低層給出類的屬性和操作拄养。類圖的例子如圖8-2所示:
    圖8-2:類圖舉例

注釋

  1. 圖中反映了5個類之間的關聯(lián)關系;
  2. 人民幣賬戶類和美元賬戶類從賬戶類繼承银舱;
  3. 賬戶與ATM相關聯(lián)衷旅;
  4. 用戶與兩種賬戶類相關聯(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所示:

    圖8-3:組件圖舉例

注釋
圖中有3個組件业崖,組件1與組件3和組件2存在著依賴關系。

  • 配置圖(Deployment Diagram)
    配置圖展現(xiàn)了對運行時處理節(jié)點以及其中組件的配置蓄愁。它描述系統(tǒng)硬件的物理拓撲結構(包括網絡布局和組件在網絡上的位置)双炕,以及在此結構上執(zhí)行的軟件(即運行時軟組件在節(jié)點中的分布情況)。用配置圖說明系統(tǒng)結構的靜態(tài)配置視圖撮抓,即說明分布妇斤、交付和安裝的物理系統(tǒng)。配置圖的例子如圖8-4所示:
    圖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所示:

    圖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所示:

    圖8-6:狀態(tài)圖舉例

  • 活動圖(Activity Diagram)
    活動圖是狀態(tài)圖的一個變體阅酪,顯示了系統(tǒng)中從一個活動到另一個活動的流程。活動圖顯示了一些活動术辐,強調的是對象之間的流程控制砚尽,例子如圖8-7所示:

    圖8-7:活動圖舉例

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市辉词,隨后出現(xiàn)的幾起案子必孤,更是在濱河造成了極大的恐慌,老刑警劉巖瑞躺,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件敷搪,死亡現(xiàn)場離奇詭異,居然都是意外死亡隘蝎,警方通過查閱死者的電腦和手機购啄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嘱么,“玉大人狮含,你說我怎么就攤上這事÷瘢” “怎么了几迄?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長冰评。 經常有香客問我映胁,道長,這世上最難降的妖魔是什么甲雅? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任解孙,我火速辦了婚禮,結果婚禮上抛人,老公的妹妹穿的比我還像新娘弛姜。我一直安慰自己,他們只是感情好妖枚,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布廷臼。 她就那樣靜靜地躺著,像睡著了一般绝页。 火紅的嫁衣襯著肌膚如雪荠商。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天续誉,我揣著相機與錄音莱没,去河邊找鬼。 笑死酷鸦,一個胖子當著我的面吹牛饰躲,可吹牛的內容都是我干的朴译。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼属铁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了躬翁?” 一聲冷哼從身側響起焦蘑,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盒发,沒想到半個月后例嘱,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡宁舰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年拼卵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛮艰。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡腋腮,死狀恐怖,靈堂內的尸體忽然破棺而出壤蚜,到底是詐尸還是另有隱情即寡,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布袜刷,位于F島的核電站聪富,受9級特大地震影響,放射性物質發(fā)生泄漏著蟹。R本人自食惡果不足惜墩蔓,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望萧豆。 院中可真熱鬧奸披,春花似錦、人聲如沸炕横。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽份殿。三九已至膜钓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卿嘲,已是汗流浹背颂斜。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拾枣,地道東北人沃疮。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓盒让,卻偏偏與公主長得像,于是被迫代替她去往敵國和親司蔬。 傳聞我的和親對象是個殘疾皇子邑茄,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內容