???///UML類(lèi)圖關(guān)系:關(guān)聯(lián)???///???#region雙向關(guān)聯(lián):雙方都擁有對(duì)方的一個(gè)">
uml的類(lèi)圖關(guān)系(c#實(shí)例)

uml的類(lèi)圖關(guān)系(c#實(shí)例)

ID:14811610

大?。?77.50 KB

頁(yè)數(shù):5頁(yè)

時(shí)間:2018-07-30

uml的類(lèi)圖關(guān)系(c#實(shí)例)_第1頁(yè)
uml的類(lèi)圖關(guān)系(c#實(shí)例)_第2頁(yè)
uml的類(lèi)圖關(guān)系(c#實(shí)例)_第3頁(yè)
uml的類(lèi)圖關(guān)系(c#實(shí)例)_第4頁(yè)
uml的類(lèi)圖關(guān)系(c#實(shí)例)_第5頁(yè)
資源描述:

《uml的類(lèi)圖關(guān)系(c#實(shí)例)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、UML的類(lèi)圖關(guān)系(c#實(shí)例)???UML的類(lèi)圖關(guān)系分為:關(guān)聯(lián)、聚合/組合、依賴、泛化(繼承)。????///

???///UML類(lèi)圖關(guān)系:關(guān)聯(lián)???///???#region雙向關(guān)聯(lián):雙方都擁有對(duì)方的一個(gè)指針,當(dāng)然也可以是引用或者是值。C1-C2??????classC1???{???????publicC2theC2=newC2();???};???classC2???{???????publicC1theC1=newC1();???};???#endregion???#re

2、gion單向關(guān)聯(lián):C3有C4的指針,而C4對(duì)C3一無(wú)所知。C3->C4??????classC3???{???????publicC4theC4=newC4();???};???classC4???{???};???#endregion???#region自身關(guān)聯(lián)(反身關(guān)聯(lián)):自己引用自己,帶著一個(gè)自己的引用。??????classC14???{???????publicC14theC14=newC14();???};???#endregion???///

???///UML類(lèi)圖關(guān)系:聚合/組合?

3、??///當(dāng)類(lèi)之間有整體-部分關(guān)系的時(shí)候,我們就可以使用組合或者聚合。???///

???//聚合:表示C9聚合C10,但是C10可以離開(kāi)C9而獨(dú)立存在???//(獨(dú)立存在的意思是在某個(gè)應(yīng)用的問(wèn)題域中這個(gè)類(lèi)的存在有意義)。??????classC9???{???????publicC10theC10=newC10();???};???classC10???{???};???//組合(也有人稱(chēng)為包容):一般是實(shí)心菱形加實(shí)線箭頭表示,???//表示的是C8被C7包容,而且C8不能離開(kāi)C7而獨(dú)立存在。

4、???//但這是視問(wèn)題域而定的,例如在關(guān)心汽車(chē)的領(lǐng)域里,???//輪胎是一定要組合在汽車(chē)類(lèi)中的,因?yàn)樗x開(kāi)了汽車(chē)就沒(méi)有意義了。???//但是在賣(mài)輪胎的店鋪業(yè)務(wù)里,就算輪胎離開(kāi)了汽車(chē),它也是有意義的,這就可以用聚合了。??????classC7???{???????publicC8theC8=newC8();???};???classC8???{???};???//可以看到,代碼和聚合是一樣的。具體如何區(qū)別,可能就只能用語(yǔ)義來(lái)區(qū)分了。???///

???///UML類(lèi)圖關(guān)系:依賴???///

5、mmary>???//指C5可能要用到C6的一些方法,也可以這樣說(shuō),???//要完成C5里的所有功能,一定要有C6的方法協(xié)助才行。???//在形式上一般是C5中的某個(gè)方法把C6的對(duì)象作為參數(shù)使用(假設(shè)C5依賴于C6)。???//注意,要避免雙向依賴。一般來(lái)說(shuō),不應(yīng)該存在雙向依賴。???????usingnamespaceOfC6???classC5???{???????voidFunc(C6c6)???????{}???};???///

???///UML類(lèi)圖關(guān)系:泛化(繼承)???///

6、mmary>??????????classC11???{???}???classC12:C11???{???}?????重復(fù)度這里再說(shuō)一下重復(fù)度,其實(shí)看完了上面的描述之后,我們應(yīng)該清楚了各個(gè)關(guān)系間的關(guān)系以及具體對(duì)應(yīng)到代碼是怎么樣的,所謂的重復(fù)度,也只不過(guò)是上面的擴(kuò)展,例如A和B有著“1對(duì)多”的重復(fù)度,那在A中就有一個(gè)列表,保存著B(niǎo)對(duì)象的N個(gè)引用,就是這樣而已。???依賴和聚合組合、關(guān)聯(lián)等有什么不同呢????關(guān)聯(lián)是類(lèi)之間的一種關(guān)系,例如老師教學(xué)生,老公和老婆,水壺裝水等就是一種關(guān)系。這種關(guān)系是非常明顯的,在問(wèn)題領(lǐng)

7、域中通過(guò)分析直接就能得出。???依賴是一種弱關(guān)聯(lián),只要一個(gè)類(lèi)用到另一個(gè)類(lèi),但是和另一個(gè)類(lèi)的關(guān)系不是太明顯的時(shí)候(可以說(shuō)是“uses”了那個(gè)類(lèi)),就可以把這種關(guān)系看成是依賴,依賴也可說(shuō)是一種偶然的關(guān)系,而不是必然的關(guān)系,就是“我在某個(gè)方法中偶然用到了它,但在現(xiàn)實(shí)中我和它并沒(méi)多大關(guān)系”。例如我和錘子,我和錘子本來(lái)是沒(méi)關(guān)系的,但在有一次要釘釘子的時(shí)候,我用到了它,這就是一種依賴,依賴錘子完成釘釘子這件事情。???組合是一種整體-部分的關(guān)系,在問(wèn)題域中這種關(guān)系很明顯,直接分析就可以得出的。例如輪胎是車(chē)的一部分,樹(shù)葉是樹(shù)的

8、一部分,手腳是身體的一部分這種的關(guān)系,非常明顯的整體-部分關(guān)系。???上述的幾種關(guān)系(關(guān)聯(lián)、聚合/組合、依賴)在代碼中可能以指針、引用、值等的方式在另一個(gè)類(lèi)中出現(xiàn),不拘于形式,但在邏輯上他們就有以上的區(qū)別。????這里還要說(shuō)明一下,所謂的這些關(guān)系只是在某個(gè)問(wèn)題域才有效,離開(kāi)了這個(gè)問(wèn)題域,可能這些關(guān)系就不成立了,例如可能在某個(gè)問(wèn)題域中,我是一個(gè)木匠,需要拿著錘子去干活,可能

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。