Q1:UML的基本圖示
包含6大關(guān)系:泛化關(guān)系、實(shí)現(xiàn)關(guān)系、聚合關(guān)系敏沉、組合關(guān)系、關(guān)聯(lián)關(guān)系炎码、依賴關(guān)系
其中盟迟,兩兩互為一組相對(duì)關(guān)系。
Q2:泛化關(guān)系(generalization)
所謂的泛化關(guān)系代表A繼承至B潦闲,A屬于B攒菠。例如,青蘋果是一個(gè)蘋果的概念歉闰。
泛化是一種實(shí)體類的繼承辖众。
泛化關(guān)系在uml圖中由帶空心實(shí)線箭頭表示卓起。
Q3:實(shí)現(xiàn)關(guān)系(realize)
相較于泛化關(guān)系,實(shí)現(xiàn)關(guān)系則是對(duì)應(yīng)于抽象的繼承而言赵辕。
例如既绩,水果是一個(gè)抽象的概念,蘋果繼承于水果还惠。
實(shí)現(xiàn)關(guān)系在uml圖中由空心虛線箭頭表示饲握。
Q4:泛化關(guān)系與實(shí)現(xiàn)關(guān)系的相似與區(qū)別
兩者都是由空心箭頭表示,都是代表繼承的關(guān)系蚕键。
區(qū)別在于救欧,泛化關(guān)系是對(duì)一個(gè)實(shí)在的類進(jìn)行的繼承,而實(shí)現(xiàn)關(guān)系則是對(duì)于抽象類的一個(gè)繼承锣光。
Q5:聚合關(guān)系(aggregation)
聚合關(guān)系用一條帶空心菱形箭頭的直線表示笆怠,如下圖表示A聚合到B上,或者說(shuō)B由A組成誊爹;
針對(duì)代碼而言蹬刷,聚合關(guān)系如下:
public class GooseGroup
{
public Goose goose;
public GooseGroup(Goose goose)
{
this.goose = goose;
}
}
所聚合的對(duì)象內(nèi)存并不屬于該對(duì)象。
聚合關(guān)系在uml圖中由棱形空心實(shí)線箭頭表示频丘。
Q6:組合關(guān)系(composition)
組合關(guān)系用一條帶實(shí)心菱形箭頭直線表示办成,如下圖表示A組成B,或者B由A組成搂漠;
針對(duì)代碼而言迂卢,組合關(guān)系如下:
public class Goose
{
public Wing wing;
public Goose()
{
wing =new Wing();
}
}
所組合的對(duì)象內(nèi)存屬于該對(duì)象,但主對(duì)象銷毀時(shí)桐汤,附加對(duì)象同時(shí)被銷毀而克。
組合合關(guān)系在uml圖中由棱形實(shí)心實(shí)線箭頭表示。
Q7:聚合關(guān)系與組合關(guān)系的相似與區(qū)別
聚合關(guān)系與組合關(guān)系都是針對(duì)類的集合而言怔毛,都是由棱形實(shí)線箭頭表示员萍。
而在聚合關(guān)系中,從對(duì)象與主對(duì)象的關(guān)系不及組合關(guān)系中那么強(qiáng)依賴拣度。
Q8:關(guān)聯(lián)關(guān)系(association)
關(guān)聯(lián)關(guān)系代表兩個(gè)類直接有一定的結(jié)構(gòu)充活。
在代碼中則是以成員變量的形式來(lái)實(shí)現(xiàn)的。
其中關(guān)聯(lián)關(guān)系的方向代表一個(gè)需求者類指向一個(gè)被需求類蜡娶,如下圖混卵,A需要B的關(guān)系;
組合合關(guān)系在uml圖中由直實(shí)線箭頭表示。
Q9:依賴關(guān)系(dependency)
依賴關(guān)系與關(guān)聯(lián)關(guān)系十分相似窖张,但是依賴關(guān)系是在主對(duì)象運(yùn)行中實(shí)現(xiàn)的幕随,只需要使用到從對(duì)象的某些性質(zhì)。
就如同打開啤酒需要開瓶工具等宿接。
組合合關(guān)系在uml圖中由直虛線箭頭表示赘淮。
Q10:關(guān)聯(lián)關(guān)系與依賴關(guān)系的相似與區(qū)別
關(guān)聯(lián)關(guān)系與依賴關(guān)系不像前者那樣的有較強(qiáng)的依賴性辕录。
這兩關(guān)系的對(duì)象雙方可以互不干擾。
同時(shí)倆者都是由實(shí)箭頭表示梢卸。
而在關(guān)聯(lián)關(guān)系中走诞,從對(duì)象都是在構(gòu)造期間直接生成,而依賴關(guān)系則是在運(yùn)行期間生成調(diào)用的蛤高。