UML中常見關(guān)系詳解(泛化、實現(xiàn)、依賴捍靠、關(guān)聯(lián)沐旨、組合、聚合)

UML中類與類榨婆,已經(jīng)類與接口磁携,接口與接口的關(guān)系有:泛化(generalization),關(guān)聯(lián)(association)良风,依賴(dependency)谊迄,實現(xiàn)(realization)這幾種。


泛化(generalization)關(guān)系時指一個類(子類烟央、子接口)繼承另外一個類(稱為父類统诺、父接口)的功能,并可以增加它自己新功能的能力疑俭,繼承是類與類或者接口與接口最常見的關(guān)系粮呢,在Java中通過關(guān)鍵字extends來表示。

實現(xiàn)(realization)是指一個class實現(xiàn)interface接口(一個或者多個)钞艇,表示類具備了某種能力啄寡,實現(xiàn)是類與接口中最常見的關(guān)系,在Java中通過implements關(guān)鍵字來表示香璃。

依賴(dependency)關(guān)系也是表示類與類之間的連接这难,表示一個類依賴于另外一個類的定義,依賴關(guān)系時是單向的葡秒。簡單理解就是類A使用到了類B,這種依賴具有偶然性嵌溢、臨時性眯牧,是非常弱的關(guān)系。但是類B的變化會影響到類A赖草。舉個例子学少,如某人要過河,則人與船的關(guān)系就是依賴秧骑,人過河之后版确,與船的關(guān)系就解除了,因此是一種弱的連接乎折。在代碼層面绒疗,為類B作為參數(shù)被類A在某個方法中使用。

在java中骂澄,依賴表現(xiàn)為:局部變量吓蘑,方法中的參數(shù)和對靜態(tài)方法的調(diào)用。

關(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)的

聚合(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)系中類出于一個層次外厂,而聚合則明顯的在兩個不同的層次冕象。

組合(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ū)別就是對于組合捐寥,“部分”不同脫離“整體”單獨存在,其生命周期應該是一致的祖驱。

總結(jié):

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

參考:

http://justsee.iteye.com/blog/808799

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市捺僻,隨后出現(xiàn)的幾起案子乡洼,更是在濱河造成了極大的恐慌,老刑警劉巖匕坯,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件束昵,死亡現(xiàn)場離奇詭異,居然都是意外死亡葛峻,警方通過查閱死者的電腦和手機锹雏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來术奖,“玉大人礁遵,你說我怎么就攤上這事〔杉牵” “怎么了榛丢?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長挺庞。 經(jīng)常有香客問我,道長稼病,這世上最難降的妖魔是什么选侨? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮然走,結(jié)果婚禮上援制,老公的妹妹穿的比我還像新娘。我一直安慰自己芍瑞,他們只是感情好晨仑,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般洪己。 火紅的嫁衣襯著肌膚如雪妥凳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天答捕,我揣著相機與錄音逝钥,去河邊找鬼。 笑死拱镐,一個胖子當著我的面吹牛艘款,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沃琅,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼哗咆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了益眉?” 一聲冷哼從身側(cè)響起晌柬,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎呜叫,沒想到半個月后空繁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡朱庆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年盛泡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娱颊。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡傲诵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出箱硕,到底是詐尸還是另有隱情拴竹,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布剧罩,位于F島的核電站栓拜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏惠昔。R本人自食惡果不足惜幕与,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望镇防。 院中可真熱鬧啦鸣,春花似錦、人聲如沸来氧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至中狂,卻和暖如春凫碌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吃型。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工证鸥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人勤晚。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓枉层,卻偏偏與公主長得像,于是被迫代替她去往敵國和親赐写。 傳聞我的和親對象是個殘疾皇子鸟蜡,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

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