UML中类的关系
UML中類的關(guān)系
? ? ? ? ? UML中的類主要包含了四種關(guān)系,包括關(guān)聯(lián),依賴,泛化,實(shí)現(xiàn),其中的關(guān)聯(lián)關(guān)系又包含了聚合和組合關(guān)系。
一、???關(guān)聯(lián)
? ? ? ? ? 關(guān)聯(lián)的分類,具體包括普通關(guān)聯(lián),聚合,組合。
? ? ? ? ? 普通關(guān)聯(lián)
? ? ? ? ? 關(guān)聯(lián)體現(xiàn)的是兩個(gè)類之間語義級(jí)別的一種強(qiáng)依賴關(guān)系,比如我和我的朋友,這種關(guān)系比依賴更強(qiáng)、不存在 依賴關(guān)系的偶然性、關(guān)系也不是臨時(shí)性的,一般是長期性的,而且雙方的關(guān)系一般是平等的。關(guān)聯(lián)可以是單向、雙向的。表現(xiàn)在代碼層面,為被關(guān)聯(lián)類B以類的屬性 形式出現(xiàn)在關(guān)聯(lián)類A中,也可能是關(guān)聯(lián)類A引用了一個(gè)類型為被關(guān)聯(lián)類B的全局變量。
? ? ? ? ? 表示方法:在UML類圖設(shè)計(jì)中,關(guān)聯(lián)關(guān)系用由關(guān)聯(lián)類A指向被關(guān)聯(lián)類B的帶箭頭實(shí)線表示,在關(guān)聯(lián)的兩端可以標(biāo)注關(guān)聯(lián)雙方的角色和多重性標(biāo)記。
? ? ? ? ? 聚合
? ? ? ? ? 聚合是關(guān)聯(lián)關(guān)系的一種特例,它體現(xiàn)的是整體與部分的關(guān)系,即has-a的關(guān)系。此時(shí)整體與部分之間是可分離的,它們可以具有各自的生命周期,部分可以屬于 多個(gè)整體對(duì)象,也可以為多個(gè)整體對(duì)象共享。比如計(jì)算機(jī)與CPU、公司與員工的關(guān)系等,比如一個(gè)航母編隊(duì)包括海空母艦、驅(qū)護(hù)艦艇、艦載飛機(jī)及核動(dòng)力攻擊潛艇 等。表現(xiàn)在代碼層面,和關(guān)聯(lián)關(guān)系是一致的,只能從語義級(jí)別來區(qū)分。
? ? ? ? ? 表示方法:在UML類圖設(shè)計(jì)中,聚合關(guān)系以空心菱形加實(shí)線箭頭表示。
? ? ? ? ? 組合
? ? ? ? ? 組合也是關(guān)聯(lián)關(guān)系的一種特例,它體現(xiàn)的是一種contains-a的關(guān)系,這種關(guān)系比聚合更強(qiáng),也稱為強(qiáng)聚合。它同樣體現(xiàn)整體與部分間的關(guān)系,但此時(shí)整體與部分是不可分的,整體的生命周期結(jié)束也就意味著部分的生命周期結(jié)束,比如人和人的大腦。表 現(xiàn)在代碼層面,和關(guān)聯(lián)關(guān)系是一致的,只能從語義級(jí)別來區(qū)分。
? ? ? ? ? 表示方法:在UML類圖設(shè)計(jì)中,組合關(guān)系以實(shí)心菱形加實(shí)線箭頭表示。?
二、???依賴
? ? ? ? ? 簡單的理解,依賴就是一個(gè)類A使用到了另一個(gè)類B,而這種使用關(guān)系是具有偶然性的、臨時(shí)性的、非常弱的,但是類B的變化會(huì)影響到類A。比如某人要過河,需 要借用一條船,此時(shí)人與船之間的關(guān)系就是依賴。表現(xiàn)在代碼層面,為類B作為參數(shù)被類A在某個(gè)method方法中使用。
? ? ? ? ? 表示方法:在UML類圖設(shè)計(jì)中,依賴關(guān)系用由類 A指向類B的帶箭頭虛線表示。
三、???泛化(也叫繼承)
? ? ? ? ? 表示類與類之間的繼承關(guān)系,接口與接口之間的繼承關(guān)系,或類對(duì)接口的實(shí)現(xiàn)關(guān)系。一般化的關(guān)系是從子類指向父類的,與繼承或?qū)崿F(xiàn)的方法相反。
? ? ? ? ? 表示方法:在UML類圖設(shè)計(jì)中,泛化用一條帶空心三角箭頭的實(shí)線表示,從子類指向父類,或者子接口指向父接口。
四、???實(shí)現(xiàn)
? ? ? ? ? 實(shí)現(xiàn)指的是一個(gè)class類實(shí)現(xiàn)interface接口(可以是多個(gè))的功能,實(shí)現(xiàn)是類與接口之間最常見的關(guān)系。在Java中此類關(guān)系通過關(guān)鍵字 implements明確標(biāo)識(shí),在設(shè)計(jì)時(shí)一般沒有爭議性。
? ? ? ? ? 表示方法:在UML類圖設(shè)計(jì)中,實(shí)現(xiàn)用一條帶空心三角箭頭的虛線表示,從類指向?qū)崿F(xiàn)的接口。
總結(jié)