UML中常見關(guān)系詳解(泛化亲雪、實現(xiàn)行疏、依賴、關(guān)聯(lián)终息、組合、聚合)

轉(zhuǎn)自:https://www.cnblogs.com/jiyuqi/p/4571543.html

UML中類與類柳譬,類與接口续镇,接口與接口的關(guān)系有:泛化(generalization),關(guān)聯(lián)(association)制跟,依賴(dependency)雨膨,實現(xiàn)(realization)這幾種读串。
泛化(generalization)關(guān)系是指一個類(子類、子接口)繼承另外一個類(稱為父類排监、父接口)的功能杰捂,并可以增加它自己新功能的能力嫁佳,繼承是類與類或者接口與接口最常見的關(guān)系,在Java中通過關(guān)鍵字extends來表示瞒瘸。

圖1:泛化

實現(xiàn)(realization)是指一個class實現(xiàn)interface接口(一個或者多個)情臭,表示類具備了某種能力赌蔑,實現(xiàn)是類與接口中最常見的關(guān)系娃惯,在Java中通過implements關(guān)鍵字來表示

圖2:實現(xiàn)

依賴(dependency)關(guān)系也是表示類與類之間的連接,表示一個類依賴于另外一個類的定義愕提,依賴關(guān)系是單向的。簡單理解就是類A使用到了類B纽谒,這種依賴具有偶然性、臨時性鼓黔,是非常弱的關(guān)系澳化。但是類B的變化會影響到類A稳吮。舉個例子,如某人要過河盖高,則人與船的關(guān)系就是依賴喻奥,人過河之后捏悬,與船的關(guān)系就解除了,因此是一種弱的連接甥厦。在代碼層面刀疙,為類B作為參數(shù)被類A在某個方法中使用

圖3:依賴

關(guān)聯(lián)(association)關(guān)系表示類與類之間的連接谦秧,它使得一個類知道另外一個類的屬性和方法撵溃。

關(guān)聯(lián)可以使用單箭頭表示單向關(guān)聯(lián)缘挑,使用雙箭頭或者不使用箭頭表示雙向關(guān)聯(lián),不建議使用雙向關(guān)聯(lián)诲宇,關(guān)聯(lián)有兩個端點,每個端點可以有一個基數(shù)蹬挺,表示這個關(guān)聯(lián)的類可以有幾個實例巴帮。

0..1 表示可以有0個或者1個實例

0..* 表示對實例的數(shù)目沒有限制

1 ? ? 表示只能有一個實例

1..* 表示至少有一個實例

關(guān)聯(lián)關(guān)系體現(xiàn)的是兩個類虐秋,或者類與接口之間的強依賴關(guān)系,這種關(guān)系很強烈用押,比依賴更強蜻拨,不是偶然性的桩引,也不是臨時性的,而是一種長期性血崭,相對平等的關(guān)系夹纫,表現(xiàn)在代碼層面设凹,為被關(guān)聯(lián)的類B以類屬性的形式出現(xiàn)在類A中,也可能是關(guān)聯(lián)類A引用了被關(guān)聯(lián)類B的全局變量跺涤。

在Java中监透,關(guān)聯(lián)關(guān)系是使用實例變量來實現(xiàn)的

圖4:關(guān)聯(lián)

聚合(aggregation)是關(guān)聯(lián)關(guān)系的特例胀蛮,是強的關(guān)聯(lián)關(guān)系粪狼,聚合是整個與個體的關(guān)系,即has-a關(guān)系狡刘,此時整體和部分是可以分離的,他們具有各自的生命周期剑按,部分可以屬于多個對象艺蝴,也可以被多個對象共享猜敢;比如計算機和CPU盒延,公司與員工的關(guān)系;在代碼層面聚合與關(guān)聯(lián)是一致的胯盯,只能從語義上來區(qū)分畦贸。

聚合關(guān)系也是使用實例變量來實現(xiàn)的楞捂,在java語法上區(qū)分不出關(guān)聯(lián)和聚合薄坏,關(guān)聯(lián)關(guān)系中類處于一個層次,而聚合則明顯的在兩個不同的層次

圖5:聚合

組合(compostion)也是關(guān)聯(lián)關(guān)系的一種特例寨闹,體現(xiàn)的是一種contain-a關(guān)系胶坠,比聚合更強,是一種強聚合關(guān)系繁堡。它同樣體現(xiàn)整體與部分的關(guān)系沈善,但此時整體與部分是不可分的,整體生命周期的結(jié)束也意味著部分生命周期的結(jié)束椭蹄,反之亦然闻牡。如大腦和人類。

體現(xiàn)在代碼層面與關(guān)聯(lián)是一致的绳矩,只能從語義來區(qū)分罩润。

組合與聚合幾乎完全相同,唯一區(qū)別就是對于組合割以,“部分”不能脫離“整體”單獨存在猜极,其生命周期應(yīng)該是一致的

圖6:組合

總結(jié):

主要是關(guān)聯(lián)關(guān)系的細化需要注意強弱莱找,由若到強分別是 依賴 < 關(guān)聯(lián) < 聚合 < 組合

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市相满,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌建蹄,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸟妙,死亡現(xiàn)場離奇詭異花椭,居然都是意外死亡,警方通過查閱死者的電腦和手機嫌松,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門贾陷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來髓废,“玉大人凑保,你說我怎么就攤上這事频伤”镄ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵用僧,是天一觀的道長。 經(jīng)常有香客問我院仿,道長剥汤,這世上最難降的妖魔是什么暮芭? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任瑞筐,我火速辦了婚禮野宜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己其徙,他們只是感情好褪尝,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布沙庐。 她就那樣靜靜地躺著棉安,像睡著了一般。 火紅的嫁衣襯著肌膚如雪菇爪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天是尖,我揣著相機與錄音兜辞,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的允懂。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼搜吧,長吁一口氣:“原來是場噩夢啊……” “哼蜒程!你這毒婦竟也來了伪嫁?” 一聲冷哼從身側(cè)響起晶伦,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤脆淹,失蹤者是張志新(化名)和其女友劉穎烘嘱,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡辐怕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年批什,在試婚紗的時候發(fā)現(xiàn)自己被綠了合呐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蜡豹,靈堂內(nèi)的尸體忽然破棺而出炊昆,到底是詐尸還是另有隱情敢茁,我是刑警寧澤逢倍,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布妆毕,位于F島的核電站,受9級特大地震影響序六,放射性物質(zhì)發(fā)生泄漏裁着。R本人自食惡果不足惜秉沼,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一休建、第九天 我趴在偏房一處隱蔽的房頂上張望邑彪。 院中可真熱鬧,春花似錦篮迎、人聲如沸岂傲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涕烧。三九已至瞻凤,卻和暖如春蛛壳,著一層夾襖步出監(jiān)牢的瞬間树肃,已是汗流浹背劣像。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像溃论,于是被迫代替她去往敵國和親扼劈。 傳聞我的和親對象是個殘疾皇子贼涩,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

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