1. UML存在意義
- 幫助自己理清思路赊颠,了解類(lèi)與類(lèi)之間的關(guān)系。(約定這里的類(lèi)包括接口和類(lèi))
- 有助于設(shè)計(jì)模式學(xué)習(xí)劈彪,理解設(shè)計(jì)模式中類(lèi)與類(lèi)之間的關(guān)系(此處類(lèi)包含接口和類(lèi))
2. UML主要學(xué)習(xí)內(nèi)容
2.1 關(guān)系(4種)
關(guān)系是指類(lèi)與類(lèi)之間的關(guān)系竣蹦,主要分為四種:
- 泛化關(guān)系
- 實(shí)現(xiàn)關(guān)系
- 關(guān)聯(lián)關(guān)系(細(xì)分為關(guān)聯(lián)、聚合和組合)
- 依賴(lài)關(guān)系
2.2 UML圖(10種)
3. UML關(guān)系
- 類(lèi)的UML表示
在講述關(guān)系之前粉臊,為了清楚的表達(dá)類(lèi)與類(lèi)的關(guān)系草添,這里先說(shuō)明一下類(lèi)的UML表示:
類(lèi)名表示:
類(lèi) : 正常表示
抽象類(lèi): 斜體表示
接口:<<Intetface>>屬性的完整表示(【】?jī)?nèi)可省略):
可見(jiàn)性 屬性名 :數(shù)據(jù)類(lèi)型 【 = 默認(rèn)值】方法的完整表示(同上):
可見(jiàn)性 方法名(參數(shù)列表) 【:返回值類(lèi)型】可見(jiàn)性:
public : +
protected : #
private : -
**default : **
- UML關(guān)系主要體現(xiàn)在以下幾種情況:
- 類(lèi)與類(lèi)之間的關(guān)系
- 類(lèi)與接口之間的關(guān)系
- 接口與接口之間的關(guān)系
3.1 泛化關(guān)系(is-a關(guān)系)
- 是類(lèi)與類(lèi)或接口與接口之間的繼承關(guān)系
- 一個(gè)類(lèi)繼承另一個(gè)類(lèi)
- 一個(gè)接口繼承另一個(gè)接口(java中也可以是多個(gè))
- 體現(xiàn)形式:在java中通過(guò)extends關(guān)鍵字來(lái)標(biāo)識(shí)
- UML表示:用一個(gè)帶空心三角形的直線(xiàn)表示,三角形在父類(lèi)一側(cè):
3.2 實(shí)現(xiàn)關(guān)系
- 類(lèi)與接口之間的關(guān)系
- 一個(gè)類(lèi)實(shí)現(xiàn)了一個(gè)或多個(gè)接口
- 體現(xiàn)形式:在Java中通過(guò)implements來(lái)標(biāo)識(shí)
- UML表現(xiàn)形式:帶空心三角形的虛線(xiàn)表示扼仲,三角形在接口一側(cè)
3.3 依賴(lài)關(guān)系(use-a關(guān)系)
- 類(lèi)與類(lèi)之間的關(guān)系
- 類(lèi)A使用了類(lèi)B
- 依賴(lài)關(guān)系是單向的远寸,這種關(guān)系具有偶然性、臨時(shí)性屠凶。但是B的變化會(huì)影響到A驰后。
- 體現(xiàn)形式:若A依賴(lài)B,則B是作為A的局部變量矗愧、方法的參數(shù)或者靜態(tài)方法調(diào)用的形式出現(xiàn)的灶芝。
- UML表現(xiàn)形式:帶箭頭的虛線(xiàn)表示,箭頭在受方唉韭。
3.4 關(guān)聯(lián)關(guān)系(has-a關(guān)系)
- 類(lèi)與類(lèi)或類(lèi)與接口之間的關(guān)系
- 關(guān)聯(lián)關(guān)系使一個(gè)類(lèi)可以知道另一個(gè)類(lèi)的屬性和方法夜涕。
- 體現(xiàn)的是一種強(qiáng)依賴(lài)關(guān)系
- 兩個(gè)類(lèi)之間的關(guān)系是平等的
- 體現(xiàn)形式:類(lèi)B作為類(lèi)A的成員變量出現(xiàn)。類(lèi)A擁有類(lèi)B的實(shí)例属愤。
- 關(guān)聯(lián)關(guān)系分為兩種:
- 單向關(guān)聯(lián):只有一個(gè)類(lèi)知道另一個(gè)類(lèi)的公共屬性和操作
- 雙向關(guān)聯(lián):兩個(gè)類(lèi)都知道另一個(gè)類(lèi)的公共屬性和操作
- UML表現(xiàn)形式:用帶箭頭的實(shí)線(xiàn)表示女器,箭頭在受方。雙向關(guān)聯(lián)可以省略箭頭
3.5 聚合關(guān)系
- 類(lèi)與類(lèi)或接口之間的關(guān)系住诸。
- 關(guān)聯(lián)關(guān)系的一種驾胆,是強(qiáng)關(guān)聯(lián)關(guān)系涣澡。
- 兩者是整體與個(gè)體之間的關(guān)系(關(guān)聯(lián)關(guān)系則是平等關(guān)系),但是是可以分離的丧诺,具有各自的生命周期入桂。
- 體現(xiàn)的是一種弱擁有關(guān)系:A對(duì)象可以包含B對(duì)象,但是B對(duì)象不是A對(duì)象的組成部分驳阎。
- 體現(xiàn)形式:類(lèi)A是由類(lèi)B聚合而成抗愁,則在類(lèi)A中聲明類(lèi)B的對(duì)象變量,變量賦值可以在類(lèi)A的構(gòu)造函數(shù)中搞隐,也可以在普通的方法中驹愚。(這也體現(xiàn)了兩者可以具有不同的生命周期)
-UML表現(xiàn)形式:用帶空心菱形和箭頭的實(shí)線(xiàn)表示,空心菱形在整體一側(cè)劣纲,箭頭在個(gè)體一側(cè)
3.6 組合關(guān)系(contains-a關(guān)系)
- 類(lèi)與類(lèi)或接口之間的關(guān)系
- 是一種強(qiáng)聚合關(guān)系
- 是整體和部分的關(guān)系逢捺。部分是整體的一部分,不能脫離整體而獨(dú)立存在癞季。
- 整體和個(gè)體生命周期相同劫瞳。
- 體現(xiàn)形式:若A由B組成,則在類(lèi)A中聲明類(lèi)B的對(duì)象變量绷柒,變量賦值必須在類(lèi)A的構(gòu)造函數(shù)中志于。(這也體現(xiàn)了兩者可以具有相同的生命周期)
- UML表示:用帶實(shí)心菱形和箭頭的實(shí)線(xiàn)表示,實(shí)心菱形在整體一側(cè)废睦,箭頭在部分一側(cè)