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

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

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

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

