日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

泛化、实现、依赖和关联的区别

發(fā)布時(shí)間:2023/12/9 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 泛化、实现、依赖和关联的区别 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

傳統(tǒng)應(yīng)用程序設(shè)計(jì)中所說(shuō)的依賴一般指“類之間的關(guān)系”,那先讓我們復(fù)習(xí)一下類之間的關(guān)系:
a、實(shí)現(xiàn)
表示類對(duì)接口的實(shí)現(xiàn)。
UML圖中實(shí)現(xiàn)使用一條帶有空心三角箭頭的虛線指向接口,如下:

b、泛化
表示類與類之間的繼承關(guān)系、接口與接口之間的繼承關(guān)系。
UML圖中實(shí)現(xiàn)使用一條帶有空心三角箭頭的實(shí)線指向基類,如下:

c、依賴
表現(xiàn)為函數(shù)中的參數(shù)(use a),是類與類之間的連接,表示一個(gè)類依賴于另一個(gè)類的定義,其中一個(gè)類的變化將影響另外一個(gè)類。例如如果A依賴于B,則B體現(xiàn)為局部變量,方法的參數(shù)、或靜態(tài)方法的調(diào)用。如電視(TV)依賴于頻道(channel)常見(jiàn)的依賴關(guān)系如下:
(1)類B以參數(shù)的形式傳入類A的方法。
(2)類B以局部變量的形式存在于類A的方法中。
(3)類A調(diào)用類B的靜態(tài)方法。
UML圖中實(shí)現(xiàn)使用一條帶有箭頭的虛線指向被依賴的類,如下:

d、關(guān)聯(lián)
表現(xiàn)為變量(has a),類與類之間的聯(lián)接,它使一個(gè)類知道另一個(gè)類的屬性和方法。例如如果A依賴于B,則B體現(xiàn)為A的全局變量,如person類和company類。

關(guān)聯(lián)關(guān)系有雙向關(guān)聯(lián)和單向關(guān)聯(lián):
1、雙向關(guān)聯(lián):兩個(gè)類都知道另一個(gè)類的公共屬性和操作。
2、單向關(guān)聯(lián):只有一個(gè)類知道另外一個(gè)類的公共屬性和操作。
大多數(shù)關(guān)聯(lián)應(yīng)該是單向的,單向關(guān)系更容易建立和維護(hù),有助于尋找可服用的類。
UML圖中實(shí)現(xiàn)使用一條實(shí)線連接相同或不同類,如下:

e、聚合
是關(guān)聯(lián)關(guān)系的一種,是弱的關(guān)聯(lián)關(guān)系。聚合關(guān)系是整體和個(gè)體的關(guān)系。普通關(guān)聯(lián)關(guān)系的兩個(gè)類處于同一層次上,而聚合關(guān)系的兩個(gè)類處于不同的層次,一個(gè)是整體,一個(gè)是部分。同時(shí),是一種弱的“擁有”關(guān)系。此時(shí)整體與部分之間是可分離的,他們可以具有各自的生命周期, 部分可以屬于多個(gè)整體對(duì)象,也可以為多個(gè)整體對(duì)象共享;比如計(jì)算機(jī)與CPU、公司與員工的關(guān)系等;表現(xiàn)在代碼層面,和關(guān)聯(lián)關(guān)系是一致的,只能從語(yǔ)義級(jí)別來(lái)區(qū)分。
UML圖中實(shí)現(xiàn)使用一條帶有虛心菱形的線來(lái)表示,如下:

f、組合
是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系強(qiáng)的關(guān)聯(lián)關(guān)系。它要求普通的聚合關(guān)系中代表整體的對(duì)象負(fù)責(zé)代表部分的對(duì)象的生命周期。Composition(組合關(guān)系)是一種強(qiáng)的“擁有”關(guān)系,體現(xiàn)了嚴(yán)格的部分和整體的關(guān)系,部分和整體的生命周期一致。他同樣體現(xiàn)整體與部分間的關(guān)系,但此時(shí)整體與部分是不可分的,整體的生命周期結(jié)束也就意味著部分的生命周期結(jié)束;比如你和你的大腦,window窗口和frame,在窗口中創(chuàng)建一個(gè)frame時(shí)必須把它附加到窗口上,當(dāng)窗口消失時(shí)frame也就消失了;表現(xiàn)在代碼層面,和關(guān)聯(lián)關(guān)系是一致的,只能從語(yǔ)義級(jí)別來(lái)區(qū)分;
UML圖中實(shí)現(xiàn)使用一條帶有實(shí)心菱形的線來(lái)表示

幾種關(guān)系所表現(xiàn)的強(qiáng)弱程度依次為:組合>聚合>關(guān)聯(lián)>依賴

聚合和組合的區(qū)別:
聚合關(guān)系是“has-a”關(guān)系,組合關(guān)系是“contains-a”關(guān)系;聚合關(guān)系表示整體與部分的關(guān)系比較弱,而組合比較強(qiáng);聚合關(guān)系中代表部分事物的對(duì)象與代表聚合事物的對(duì)象的生存期無(wú)關(guān),一旦刪除了聚合對(duì)象不一定就刪除了代表部分事物的對(duì)象。組合中一旦刪除了組合對(duì)象,同時(shí)也就刪除了代表部分事物的對(duì)象。我們用淺顯的例子來(lái)說(shuō)明聚合和組合的區(qū)別。“國(guó)破家亡”,國(guó)滅了,家自然也沒(méi)有了,“國(guó)”和“家”顯然也是組合關(guān)系。而相反的,計(jì)算機(jī)和它的外設(shè)之間就是聚合關(guān)系,因?yàn)樗鼈冎g的關(guān)系相對(duì)松散,計(jì)算機(jī)沒(méi)了,外設(shè)還可以獨(dú)立存在,還可以接在別的計(jì)算機(jī)上。在聚合關(guān)系中,部分可以獨(dú)立于聚合而存在,部分的所有權(quán)也可以由幾個(gè)聚合來(lái)共享,比如打印機(jī)就可以在辦公室內(nèi)被廣大同事共用

聚合和組合的區(qū)別則在語(yǔ)義和實(shí)現(xiàn)上都有差別,組合的兩個(gè)對(duì)象之間其生命期有很大的關(guān)聯(lián),被組合的對(duì)象是在組合對(duì)象創(chuàng)建的同時(shí)或者創(chuàng)建之后創(chuàng)建,在組合對(duì)象銷毀之前銷毀。一般來(lái)說(shuō)被組合對(duì)象不能脫離組合對(duì)象獨(dú)立存在,而且也只能屬于一個(gè)組合對(duì)象,例如一個(gè)文檔的版本,必須依賴于文檔的存在,也只能屬于一個(gè)文檔。聚合則不一樣,被聚合的對(duì)象可以屬于多個(gè)聚合對(duì)象,例如一個(gè)員工可能可以屬于多個(gè)公司

關(guān)聯(lián)和聚合的區(qū)別:
關(guān)聯(lián)和聚合的區(qū)別主要在語(yǔ)義上,關(guān)聯(lián)的兩個(gè)對(duì)象之間一般是平等的,例如你是我的朋友,聚合則一般不是平等的,例如一個(gè)公司包含了很多員工,其實(shí)現(xiàn)上是差不多的。

---------------------------------------------------------------------------------
Blog:http://www.cnblogs.com/linjiqin/
Hadoop交流群(250363249)、Java+Oracle交流群(158560018)

題外話:
本人來(lái)自鐵觀音的發(fā)源地——泉州安溪,有需要正宗安溪鐵觀音的友友歡迎Q我:416501600。

轉(zhuǎn)載于:https://www.cnblogs.com/linjiqin/p/3415440.html

總結(jié)

以上是生活随笔為你收集整理的泛化、实现、依赖和关联的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。