UML中類之間的關(guān)系分為以下幾種:依賴、關(guān)聯(lián)、泛化、聚合、組合。
依賴是指一個(gè)類使用了另一個(gè)類,它是一種使用關(guān)系,描述了一個(gè)事物的規(guī)格說(shuō)明的變化可能會(huì)影響到使用它的另一個(gè)事物(反之不一定)。最常見(jiàn)的依賴關(guān)系是一個(gè)類內(nèi)部中使用到了另一個(gè)類的定義。在UML中表示為一條指向被依賴事物的虛線。 依賴可以采取多種方式來(lái)實(shí)現(xiàn),如以下代碼
當(dāng)類之間在概念上有連接關(guān)系時(shí),類之間的連接稱之為關(guān)聯(lián),關(guān)聯(lián)是一種結(jié)構(gòu)關(guān)系,說(shuō)明一個(gè)事物的對(duì)象與另一個(gè)事物的對(duì)象相聯(lián)系。給定一個(gè)連接兩各類的關(guān)聯(lián),可以從一個(gè)類的對(duì)象導(dǎo)航到另一個(gè)類的對(duì)象。 關(guān)聯(lián)一般采取全局變量的方式來(lái)實(shí)現(xiàn),如以下代碼
依賴和關(guān)聯(lián)都是一個(gè)類中使用了另一個(gè)類,那它們有什么區(qū)別呢? 依賴和關(guān)聯(lián)都是兩個(gè)或多個(gè)相對(duì)獨(dú)立的類之間的關(guān)系。當(dāng)一個(gè)對(duì)象負(fù)責(zé)構(gòu)造另一個(gè)對(duì)象的實(shí)例,或者依賴另一個(gè)對(duì)象的服務(wù)時(shí),這兩個(gè)對(duì)象之間主要體現(xiàn)為依賴關(guān)系;當(dāng)一個(gè)對(duì)象的實(shí)例與另一個(gè)對(duì)象的一些特定實(shí)例存在固定的對(duì)應(yīng)關(guān)系時(shí),這兩個(gè)對(duì)象之間為關(guān)聯(lián)關(guān)系。依賴關(guān)系表現(xiàn)在局部變量,方法的參數(shù),以及對(duì)靜態(tài)方法的調(diào)用;關(guān)聯(lián)關(guān)系是使用實(shí)例變量來(lái)實(shí)現(xiàn)。
泛化就是面向?qū)ο笾械睦^承。它表示類與類之間的繼承關(guān)系,接口與接口之間的繼承關(guān)系,或類對(duì)接口的實(shí)現(xiàn)關(guān)系。一般化的關(guān)系是從子類指向父類的,與繼承或?qū)崿F(xiàn)的方法相反。 代碼如下
當(dāng)對(duì)象A被加入到對(duì)象B中,成為對(duì)象B的組成部分時(shí),對(duì)象B和對(duì)象A之間為聚合關(guān)系。聚合是關(guān)聯(lián)關(guān)系的一種,是較強(qiáng)的關(guān)聯(lián)關(guān)系,強(qiáng)調(diào)的是整體與部分之間的關(guān)系。 與關(guān)聯(lián)關(guān)系一樣,聚合關(guān)系也是通過(guò)實(shí)例變量來(lái)實(shí)現(xiàn)這樣關(guān)系的。關(guān)聯(lián)關(guān)系和聚合關(guān)系來(lái)語(yǔ)法上是沒(méi)辦法區(qū)分的,從語(yǔ)義上才能更好的區(qū)分兩者的區(qū)別。 聚合用帶一個(gè)空心菱形(整體的一端)的實(shí)線表示。
聚合與關(guān)聯(lián)的區(qū)別:關(guān)聯(lián)關(guān)系所涉及的兩個(gè)對(duì)象是處在同一個(gè)層次上的。比如人和自行車就是一種關(guān)聯(lián)關(guān)系,而不是聚合關(guān)系,因?yàn)槿瞬皇怯勺孕熊嚱M成的。
組合是一種特殊的聚合關(guān)系,它是一種強(qiáng)類型的聚合,組合中的部分不能脫離整體而獨(dú)立存在。例如Windows的窗口和窗口上的菜單就是組合關(guān)系。組合中的整體和部分的生命周期一致,即部分必須在組合創(chuàng)建的同時(shí)或者之后創(chuàng)建,在組合銷毀之前或者同時(shí)銷毀,部分的生命周期不會(huì)超出組合的生命周期。 組合是用帶實(shí)心菱形(整體的一端)的實(shí)線來(lái)表示。
組合與聚合的區(qū)別:
|
|
來(lái)自: 昵稱22369024 > 《IT技術(shù)》