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

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

生活随笔

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

编程问答

浅谈UML类图中类之间的5种关系

發(fā)布時(shí)間:2024/9/30 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈UML类图中类之间的5种关系 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

什么是UML類圖?

類圖顯示了一組類、接口、協(xié)作以及他們之間的關(guān)系。在UML中問(wèn)題域最終要被逐步轉(zhuǎn)化,通過(guò)類來(lái)建模,通過(guò)編程語(yǔ)言構(gòu)建這些類從而實(shí)現(xiàn)系統(tǒng)。類加上他們之間的關(guān)系就構(gòu)成了類圖,類圖中還可以包含接口、包等元素,也可以包括對(duì)象、鏈等實(shí)例。

類與類之間的關(guān)系

類與類之間的關(guān)系可以根據(jù)關(guān)系的強(qiáng)度依次分為以下五種:

依賴關(guān)系(Dependency)—關(guān)聯(lián)關(guān)系(Association)—聚合(Aggregation)—組合(Composition)—泛化(Generalization)

1. 依賴關(guān)系

依賴關(guān)系是五種關(guān)系中耦合最小的一種關(guān)系。使用虛線加箭頭表示,如下圖所示:

代碼:

public class Person { public void Call(){ Phone phone = new Phone(); } } public class Phone { }

解釋:Person 和 Phone之間是沒(méi)有關(guān)系的,但是由于偶爾的需要,Person需要使用Phone,在Person類中的具體方法中需要實(shí)例化Phone,這時(shí)Person就依賴于Phone.持有Phone類的是Person類的一個(gè)方法,而不是Person類,這點(diǎn)是最重要的。

2.關(guān)聯(lián)關(guān)系

關(guān)聯(lián)關(guān)系是實(shí)線加箭頭表示。表示類之間的關(guān)系比依賴要強(qiáng),如下圖所示:

代碼:

public class Person { //頭部是人的一個(gè)屬性 public Head head; public Person() { } } public class Head { public Head() { } }

解釋:Head是作為Person類的一個(gè)內(nèi)部屬性來(lái)使用,一旦實(shí)例化了Person類,同時(shí)也實(shí)例化了一個(gè)Head實(shí)例,所以他們的依賴性更強(qiáng)。與關(guān)聯(lián)最大的區(qū)別是:依賴時(shí)是在類的內(nèi)部具體方法中使用到另外一個(gè)類,而關(guān)聯(lián)則是作為內(nèi)部屬性來(lái)用,依賴關(guān)系僅當(dāng)具體方法被調(diào)用時(shí)才會(huì)實(shí)例化,比如剛才的Person只有打電話時(shí)才調(diào)用Phone實(shí)例化,而關(guān)聯(lián)是在new一個(gè)Person時(shí)就同時(shí)實(shí)例化了一個(gè)Head類來(lái)作為Person的內(nèi)部屬性.

3.聚合關(guān)系

聚合關(guān)系通過(guò)一個(gè)空心的菱形加箭頭表示,如下圖所示:

代碼:

public class PersonGroup { public Person person; //將person作為構(gòu)造方法的參數(shù)傳進(jìn)去 public PersonGroup(Person person) { this.person = person; } } public class Person { public Person() { } }

解釋:Person類是PersonGroup構(gòu)造方法的參數(shù),因此可以Person類可以完全脫離PersonGroup類而存在,不會(huì)因?yàn)镻ersonGroup實(shí)例的消亡而消亡,就像現(xiàn)實(shí)生活中,人不會(huì)因?yàn)槊撾x人群就掛了…

4.組合關(guān)系

組合關(guān)系通過(guò)一個(gè)實(shí)心的菱形加箭頭表示,如下圖所示:

代碼:

public class Person { public Foot foot; public Person() { //在構(gòu)造方法中實(shí)例化 foot = new Foot(); } } public class Foot { public Foot() { } }

解釋:

Foot類是在Person類的構(gòu)造方法中才被具體實(shí)例化,一旦Person實(shí)例生成,則Foot實(shí)例也生成,當(dāng)Person實(shí)例消亡,其Foot實(shí)例也消亡,就像現(xiàn)實(shí)生活中,生成一個(gè)人,并定會(huì)伴隨著腳的生成,但是如果那個(gè)人掛了,它的腳自然而然也就…(怎么聽(tīng)著怪怪-.-)

5.泛化關(guān)系

泛化關(guān)系通常包含類與類之間的繼承關(guān)系和類與接口實(shí)現(xiàn)關(guān)系,如下圖所示:

繼承:

接口:

總結(jié):以前一直對(duì)它們之間的區(qū)別模模糊糊,通過(guò)查閱和總結(jié)寫出來(lái)的個(gè)人經(jīng)驗(yàn),希望對(duì)大家的理解也有所幫助

原文地址: 淺談UML類圖中類之間的5種關(guān)系


想了解更多精彩內(nèi)容請(qǐng)關(guān)注我的公眾號(hào)

本人簡(jiǎn)書(shū)blog地址:http://www.jianshu.com/u/1f0067e24ff8????
點(diǎn)擊這里快速進(jìn)入簡(jiǎn)書(shū)

GIT地址:http://git.oschina.net/brucekankan/
點(diǎn)擊這里快速進(jìn)入GIT

總結(jié)

以上是生活随笔為你收集整理的浅谈UML类图中类之间的5种关系的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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