資源描述:
《圖解uml類與類之間的六中關(guān)系》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、圖解UML類與類之間的六中關(guān)系大話設(shè)計模式上的一個圖,我用EA畫出來的:?UML中的6大關(guān)系相關(guān)英文及音標:?依賴關(guān)系?dependency?[di'pend?nsi]?關(guān)聯(lián)關(guān)系?association??[?,s?u?i'ei??n]?聚合關(guān)系aggregation?[??gr??ge???n]???組合關(guān)系composition?[,k?mp?'zi??n]?實現(xiàn)?realization??[,ri:?l?'ze???n]?泛化?generalization??[,d?en?r?l?'ze???n]?UML中的6大關(guān)系簡單解釋:1.關(guān)聯(lián):連接模
2、型元素及鏈接實例,用一條實線來表示;2.依賴:表示一個元素以某種方式依賴于另一個元素,用一條虛線加箭頭來表示;3.聚合:表示整體與部分的關(guān)系,用一條實線加空心菱形來表示;4.組成:表示整體與部分的有一關(guān)系,用一條實線加實心菱形來表示;5.泛化(繼承):表示一般與特殊的關(guān)系,用一條實線加空心箭頭來表示;6.實現(xiàn):表示類與接口的關(guān)系,用一條虛線加空心箭頭來表示;注意:泛化關(guān)系和實現(xiàn)關(guān)系又統(tǒng)稱為一般關(guān)系;總之:一般關(guān)系表現(xiàn)為繼承或?qū)崿F(xiàn)(isa),關(guān)聯(lián)關(guān)系、聚合關(guān)系、合成/組合關(guān)系表現(xiàn)為成員變量(hasa),依賴關(guān)系表現(xiàn)為函數(shù)中的參數(shù)(usea);UML中
3、的6大關(guān)系詳細說明:1、關(guān)聯(lián)關(guān)系: 含義:類與類之間的連結(jié),關(guān)聯(lián)關(guān)系使一個類知道另外一個類的屬性和方法;通常含有“知道”,“了解”的含義體現(xiàn):在C#中,關(guān)聯(lián)關(guān)系是通過成員變量來實現(xiàn)的;方向:雙向或單向;圖示:實線+箭頭;箭頭指向被關(guān)聯(lián)的類;舉例:“漁民”需要知道“天氣”情況才能夠出?! ?/公司關(guān)聯(lián)雇員publicclassCompany{???privateEmployeeemployee;???publicEmployeeGetEmployee()???{???????returnemployee;???}???publicvoidSetE
4、mployee(Employeeemployee)???{???????this.employee=employee;???}???//公司運作???????publicvoidRun()???{???????employee.StartWorking();???}}//A關(guān)聯(lián)BclassA{???Bb=newB();}classB{}它體現(xiàn)的是兩個類、或者類與接口之間語義級別的一種強依賴關(guān)系,比如我和我的朋友;這種關(guān)系比依賴更強、不存在依賴關(guān)系的偶然性、關(guān)系也不是臨時性的,一般是長期性的,而且雙方的關(guān)系一般是平等的、關(guān)聯(lián)可以是單向、雙向的;表現(xiàn)在
5、代碼層面,為被關(guān)聯(lián)類B以類屬性的形式出現(xiàn)在關(guān)聯(lián)類A中,也可能是關(guān)聯(lián)類A引用了一個類型為被關(guān)聯(lián)類B的全局變量;?2、依賴關(guān)系: 含義:是類與類之間的連接,表示一個類依賴于另外一個類的定義;依賴關(guān)系僅僅描述了類與類之間的一種使用與被使用的關(guān)系;體現(xiàn):在C#中體現(xiàn)為局部變量、方法/函數(shù)的參數(shù)或者是對靜態(tài)方法的調(diào)用;方向:單向;圖示:虛線+箭頭;舉例:人依賴于水和空氣;汽車依賴汽油 //人劃船,人依賴于船publicclassPerson{???//劃船???publicvoidOarage(Boatboat)???{???????boat.Oar
6、age();???}}?//A依賴于BclassA{???publicvoidFunction(Bb)???{}}classB{}可以簡單的理解,就是一個類A使用到了另一個類B,而這種使用關(guān)系是具有偶然性的、、臨時性的、非常弱的,但是B類的變化會影響到A;比如某人要過河,需要借用一條船,此時人與船之間的關(guān)系就是依賴;表現(xiàn)在代碼層面,為類B作為參數(shù)被類A在某個method方法中使用;?3、聚合關(guān)系: 含義:是關(guān)聯(lián)關(guān)系的一種,是一種強關(guān)聯(lián)關(guān)系;聚合關(guān)系是整體和個體/部分之間的關(guān)系;關(guān)聯(lián)關(guān)系的兩個類處于同一個層次上,而聚合關(guān)系的兩個類處于不同的層次上,
7、一個是整體,一個是個體/部分;在聚合關(guān)系中,代表個體/部分的對象有可能會被多個代表整體的對象所共享;體現(xiàn):C++中,聚合關(guān)系通過將被聚合者的(數(shù)組)指針作為內(nèi)部成員來實現(xiàn)的;方向:單向;圖示:空心菱形+實線+箭頭;箭頭指向被聚合的類,也就是說,箭頭指向個體/部分;舉例:鴨群與鴨子具有聚合關(guān)系;汽車由引擎、輪胎以及其它零件組成,因為汽車壞掉了,沒有壞掉的引擎,輪胎和其他零件還可以繼續(xù)使用。聚合是關(guān)聯(lián)關(guān)系的一種特例,他體現(xiàn)的是整體與部分、擁有的關(guān)系,即has-a的關(guān)系,此時整體與部分之間是可分離的,他們可以具有各自的生命周期,部分可以屬于多個整體對象,
8、也可以為多個整體對象共享;比如計算機與CPU、公司與員工的關(guān)系等;表現(xiàn)在代碼層面,和關(guān)聯(lián)關(guān)系是一致的,只能從語義級別來區(qū)分