深入理解JAVA中的聚集和組合的區(qū)別與聯(lián)系
選自《JAVA語(yǔ)言程序設(shè)計(jì)-基礎(chǔ)篇(原書第8版)》
定義:一個(gè)對(duì)象可以包含另一個(gè)對(duì)象。這兩個(gè)對(duì)象之間的關(guān)系稱為組合(composition)。
組合實(shí)際上是聚集關(guān)系的一種特殊形式。聚集模擬了具有(has-a)關(guān)系,表示兩個(gè)對(duì)象之間的歸屬關(guān)系。歸屬關(guān)系中的所有者對(duì)象稱為聚集對(duì)象(aggregation object),而它的類稱為聚集類(aggregating class)。歸屬關(guān)系中的從屬對(duì)象稱為被聚集類(aggregated object),而它的類被稱為被聚集類(aggregated class)。
一個(gè)對(duì)象可以被幾個(gè)其他聚集對(duì)象所擁有。如果一個(gè)對(duì)象只歸屬于一個(gè)聚集對(duì)象,那么它和聚集對(duì)象之間的關(guān)系就稱為組合(composition)。例如:“一個(gè)學(xué)生有一個(gè)名字”就是組合關(guān)系,“一個(gè)學(xué)生有一個(gè)地址”就是聚集關(guān)系,因?yàn)橐粋€(gè)地址可以被幾個(gè)學(xué)生所共享。
UML中,實(shí)心菱形表示組合關(guān)系,空心菱形表示聚集關(guān)系。如圖:

聚集關(guān)系通常被表示為聚集類中的一個(gè)數(shù)據(jù)域,如圖:

聚集還可以存在于同一類的多個(gè)對(duì)象之間。例如:一個(gè)人可能有一個(gè)管理者或者多個(gè)管理者。一個(gè)管理者可用變量表示,多個(gè)則可使用數(shù)組,如圖:

到這里,基本上聚集和組合的關(guān)系就不言自明了。
以上這篇深入理解JAVA中的聚集和組合的區(qū)別與聯(lián)系就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
spring框架配置實(shí)體類復(fù)雜屬性注入xml文件過程詳解
這篇文章主要介紹了spring框架配置實(shí)體類復(fù)雜屬性注入xml文件過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
解決Spring事務(wù)@Transactional多層嵌套失效問題
在使用Spring進(jìn)行事務(wù)管理時(shí),可能會(huì)遇到事務(wù)失效的問題,主要原因包括數(shù)據(jù)庫(kù)不支持事務(wù)、方法訪問級(jí)別不是public、未被Spring管理的Bean、當(dāng)前類的方法內(nèi)部調(diào)用以及配置的事務(wù)傳播性不當(dāng)?shù)?解決事務(wù)失效的方法有使用聲明式事務(wù)處理采用合適的事務(wù)傳播行為2024-11-11
深入理解Java8新特性之Lambda表達(dá)式的基本語(yǔ)法和自定義函數(shù)式接口
Lambda 表達(dá)式,也可稱為閉包,它是推動(dòng) Java 8 發(fā)布的最重要新特性。Lambda 允許把函數(shù)作為一個(gè)方法的參數(shù)(函數(shù)作為參數(shù)傳遞進(jìn)方法中)。使用 Lambda 表達(dá)式可以使代碼變的更加簡(jiǎn)潔緊湊2021-11-11
關(guān)于SpringBoot接收json格式的Demo案例
這篇文章主要介紹了關(guān)于SpringBoot接收json格式的Demo案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05

