UML類圖與類的關(guān)系詳解

虛線箭頭指向依賴碴倾;

實線箭頭指向關(guān)聯(lián)逗噩;

虛線三角指向接口;

實線三角指向父類跌榔;

空心菱形能分離而獨立存在异雁,是聚合;

實心菱形精密關(guān)聯(lián)不可分僧须,是組合纲刀;

image

上面是UML的語法。

在畫類圖的時候担平,理清類和類之間的關(guān)系是重點示绊。類的關(guān)系有泛化(Generalization)、實現(xiàn)(Realization)暂论、依賴(Dependency)和關(guān)聯(lián)(Association)面褐。其中關(guān)聯(lián)又分為一般關(guān)聯(lián)關(guān)系和聚合關(guān)系(Aggregation),合成關(guān)系(Composition)空另。下面我們結(jié)合實例理解這些關(guān)系盆耽。

基本概念

類圖(Class Diagram): 類圖是面向?qū)ο笙到y(tǒng)建模中最常用和最重要的圖,是定義其它圖的基礎(chǔ)扼菠。類圖主要是用來顯示系統(tǒng)中的類摄杂、接口以及它們之間的靜態(tài)結(jié)構(gòu)和關(guān)系的一種靜態(tài)模型。

類圖的3個基本組件:類名循榆、屬性析恢、方法。

image

泛化(generalization):表示is-a的關(guān)系秧饮,是對象之間耦合度最大的一種關(guān)系映挂,子類繼承父類的所有細(xì)節(jié)泽篮。直接使用語言中的繼承表達(dá)。在類圖中使用帶三角箭頭的實線表示柑船,箭頭從子類指向父類帽撑。

image

實現(xiàn)(Realization):在類圖中就是接口和實現(xiàn)的關(guān)系。這個沒什么好講的鞍时。在類圖中使用帶三角箭頭的虛線表示亏拉,箭頭從實現(xiàn)類指向接口。

image

依賴(Dependency):對象之間最弱的一種關(guān)聯(lián)方式逆巍,是臨時性的關(guān)聯(lián)及塘。代碼中一般指由局部變量、函數(shù)參數(shù)锐极、返回值建立的對于其他對象的調(diào)用關(guān)系笙僚。一個類調(diào)用被依賴類中的某些方法而得以完成這個類的一些職責(zé)。在類圖使用帶箭頭的虛線表示灵再,箭頭從使用類指向被依賴的類肋层。

image

關(guān)聯(lián)(Association) : 對象之間一種引用關(guān)系,比如客戶類與訂單類之間的關(guān)系檬嘀。這種關(guān)系通常使用類的屬性表達(dá)槽驶。關(guān)聯(lián)又分為一般關(guān)聯(lián)、聚合關(guān)聯(lián)與組合關(guān)聯(lián)鸳兽。后兩種在后面分析掂铐。在類圖使用帶箭頭的實線表示,箭頭從使用類指向被關(guān)聯(lián)的類揍异∪桑可以是單向和雙向。

image

聚合(Aggregation) : 表示has-a的關(guān)系衷掷,是一種不穩(wěn)定的包含關(guān)系辱姨。較強于一般關(guān)聯(lián),有整體與局部的關(guān)系,并且沒有了整體,局部也可單獨存在。如公司和員工的關(guān)系戚嗅,公司包含員工雨涛,但如果公司倒閉,員工依然可以換公司懦胞。在類圖使用空心的菱形表示替久,菱形從局部指向整體。

image

組合(Composition) : 表示contains-a的關(guān)系躏尉,是一種強烈的包含關(guān)系蚯根。組合類負(fù)責(zé)被組合類的生命周期。是一種更強的聚合關(guān)系胀糜。部分不能脫離整體存在颅拦。如公司和部門的關(guān)系蒂誉,沒有了公司,部門也不能存在了距帅;調(diào)查問卷中問題和選項的關(guān)系右锨;訂單和訂單選項的關(guān)系。在類圖使用實心的菱形表示锥债,菱形從局部指向整體陡蝇。

image

多重性(Multiplicity) : 通常在關(guān)聯(lián)、聚合哮肚、組合中使用。就是代表有多少個關(guān)聯(lián)對象存在广匙。使用數(shù)字..星號(數(shù)字)表示允趟。如下圖,一個割接通知可以關(guān)聯(lián)0個到N個故障單鸦致。

image

聚合和組合的區(qū)別

這兩個比較難理解潮剪,重點說一下。聚合和組合的區(qū)別在于:聚合關(guān)系是“has-a”關(guān)系分唾,組合關(guān)系是“contains-a”關(guān)系抗碰;聚合關(guān)系表示整體與部分的關(guān)系比較弱,而組合比較強绽乔;聚合關(guān)系中代表部分事物的對象與代表聚合事物的對象的生存期無關(guān)弧蝇,一旦刪除了聚合對象不一定就刪除了代表部分事物的對象。組合中一旦刪除了組合對象折砸,同時也就刪除了代表部分事物的對象看疗。

實例分析

聯(lián)通客戶響應(yīng)OSS。系統(tǒng)有故障單睦授、業(yè)務(wù)開通两芳、資源核查、割接去枷、業(yè)務(wù)重保怖辆、網(wǎng)絡(luò)品質(zhì)性能等功能模塊。現(xiàn)在我們抽出部分需求做為例子講解删顶。

大家可以參照著類圖竖螃,好好理解。

image

1. 通知分為一般通知翼闹、割接通知斑鼻、重保通知。這個是繼承關(guān)系猎荠。

2. NoticeService和實現(xiàn)類NoticeServiceImpl是實現(xiàn)關(guān)系坚弱。

3. NoticeServiceImpl通過save方法的參數(shù)引用Notice,是依賴關(guān)系蜀备。同時調(diào)用了BaseDao完成功能,也是依賴關(guān)系荒叶。

4. 割接通知和故障單之間通過中間類(通知電路)關(guān)聯(lián)碾阁,是一般關(guān)聯(lián)。

5. 重保通知和預(yù)案庫間是聚合關(guān)系些楣。因為預(yù)案庫可以事先錄入脂凶,和重保通知沒有必然聯(lián)系,可以獨立存在愁茁。在系統(tǒng)中是手工從列表中選擇蚕钦。刪除重保通知,不影響預(yù)案鹅很。

6. 割接通知和需求單之間是聚合關(guān)系嘶居。同理,需求單可以獨立于割接通知存在促煮。也就是說刪除割接通知邮屁,不影響需求單。

7. 通知和回復(fù)是組合關(guān)系菠齿。因為回復(fù)不能獨立于通知存在佑吝。也就是說刪除通知,該條通知對應(yīng)的回復(fù)也要級聯(lián)刪除绳匀。

經(jīng)過以上的分析芋忿,相信大家對類的關(guān)系已經(jīng)有比較好的理解了。大家有什么其它想法或好的見解襟士,歡迎拍磚盗飒。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市陋桂,隨后出現(xiàn)的幾起案子逆趣,更是在濱河造成了極大的恐慌,老刑警劉巖嗜历,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宣渗,死亡現(xiàn)場離奇詭異,居然都是意外死亡梨州,警方通過查閱死者的電腦和手機痕囱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來暴匠,“玉大人鞍恢,你說我怎么就攤上這事。” “怎么了帮掉?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵弦悉,是天一觀的道長。 經(jīng)常有香客問我蟆炊,道長稽莉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任涩搓,我火速辦了婚禮污秆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘昧甘。我一直安慰自己良拼,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布疾层。 她就那樣靜靜地躺著将饺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪痛黎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天刮吧,我揣著相機與錄音湖饱,去河邊找鬼。 笑死杀捻,一個胖子當(dāng)著我的面吹牛井厌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播致讥,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼仅仆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了垢袱?” 一聲冷哼從身側(cè)響起墓拜,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎请契,沒想到半個月后咳榜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡爽锥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年涌韩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氯夷。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡臣樱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情雇毫,我是刑警寧澤玄捕,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站嘴拢,受9級特大地震影響桩盲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜席吴,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一赌结、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧孝冒,春花似錦柬姚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至穴店,卻和暖如春撕捍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背泣洞。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工忧风, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人球凰。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓狮腿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親呕诉。 傳聞我的和親對象是個殘疾皇子缘厢,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349

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

  • 在畫類圖的時候,理清類和類之間的關(guān)系是重點甩挫。類的關(guān)系有泛化(Generalization)贴硫、實現(xiàn)(Realizat...
    趙宇_ios閱讀 674評論 0 1
  • 在UML 2.0的13種圖形中,類圖是使用頻率最高的UML圖之一捶闸。Martin Fowler在其著作《UML Di...
    雷雷_zll閱讀 13,225評論 0 14
  • 在UML類圖中夜畴,常見的有以下幾種關(guān)系:泛化(Generalization),實現(xiàn)(Realization),關(guān)聯(lián)(...
    mocobk閱讀 1,100評論 0 1
  • 忘記了uml類圖連線之間的關(guān)系删壮,記錄一下贪绘。 1. 關(guān)聯(lián)關(guān)系 關(guān)聯(lián)(Association)關(guān)系是類與類之間最常用的...
    cutieagain閱讀 1,820評論 0 2
  • UML類圖用來定義系統(tǒng)中的類,包括描述類的結(jié)構(gòu)和類之間的關(guān)系央碟。類圖的主要作用于描述系統(tǒng)的靜態(tài)結(jié)構(gòu)税灌。先看一張圖(圖片...
    Josaber閱讀 6,070評論 0 5