聚合(aggregation)和java中的合成(composition in java)的區別

聚合是描述“has-a”關係的兩個物件之間的關聯。組合是一種更具體的聚合型別,它意味著所有權。Java中聚合和組合的關鍵區別在於,如果包含的物件可以在沒有擁有物件的情況下存在,那麼它就是一個聚合;如果包含的物件沒有擁有物件的存在就不能存在,那麼它就是一個組合。...

聚合(aggregation)和java中的合成(composition in java)的區別

聚合是描述“has-a”關係的兩個對象之間的關聯。組合是一種更具體的聚合類型,它意味著所有權。Java中聚合和組合的關鍵區別在於,如果包含的對象可以在沒有擁有對象的情況下存在,那麼它就是一個聚合;如果包含的對象沒有擁有對象的存在就不能存在,那麼它就是一個組合。

面向對象編程(OOP)是軟件開發中的一個主要範式。它用於使用對象對軟件進行建模。對象是使用類創建的。類由屬性和方法組成。軟件中有多個對象。每個對象通過消息傳遞相互協作。兩個對象之間的關係稱為關聯。聚合和組合都是兩種類型的關聯。“has-a”關係描述了一個對象可以使用另一個對象。聚合和組合可以用支持OOP的語言實現。如果包含的對象可以在不存在所屬對象的情況下存在,那麼這兩個對象之間的關聯就是一個聚合。如果沒有擁有對象就不能存在包含的對象,那麼這兩個對象之間的關聯就是一個組合。

目錄

1. 概述和主要區別
2. Java中的聚合是什麼
3. 什麼是Java中的合成
4. Java中聚合與組合的相似性
5. 並排比較——以表格形式在Java中聚合與合成
6. 摘要

什麼是java中的聚合(aggregation in java)?

聚合是一種關聯。如果類具有實體引用,則稱為聚合。聚合表示has-a關係。Student對象可以具有Student_id、name、address等屬性。這個對象還可以有另一個名為address的對象,它有自己的信息,如城市、州、國家。在這種情況下,學生有一個實體參考地址。這是一種“有-有”的關係。

聚合(aggregation)和java中的合成(composition in java)的區別

圖01:標記等級

 

聚合(aggregation)和java中的合成(composition in java)的區別

圖02:描述聚合的主程序

根據上述程序,班級成績由數學、英語和科學成績三個屬性組成。這個學生有一個分數的對象。它有自己的特點,即數學、英語和科學成績。在main方法中,創建Marks對象並分配Marks值。學生對象s1可以使用marks對象m1。因此,學生與分數之間存在“有-有”的關係。Marks對象可以不帶Student對象而存在。因此,它是一個集合。

什麼是java中的合成(composition in java)?

作文是一種關聯。它是一種特定的聚合形式,它意味著所有權。假設有兩個類稱為類A和B。如果類B的對象被銷燬,則該對象將不存在,則為合成。一本書由許多頁組成。如果這本書被銷燬,這些頁面也會被摧毀。沒有book對象,頁面對象不可能存在。請參閱以下程序。

聚合(aggregation)和java中的合成(composition in java)的區別

圖03:課堂

 

聚合(aggregation)和java中的合成(composition in java)的區別

圖04:學校班級

 

聚合(aggregation)和java中的合成(composition in java)的區別

圖05:描述組成的主程序

根據上述程序,教室有兩個屬性:name和numOfStudents。學校是教室裡的物品的集合。在main方法中,創建了兩個教室對象。它們被添加到“教室”中。這些“教室”傳遞給學校對象。最後,通過遍歷集合打印出教室名稱和學生人數。如果校內物品被毀,教室物品也會被毀。這是一個構圖的例子。它還包含“has-a”關係,也意味著所有權。

什麼是java中聚合與組合的關係(the relati***hip between aggregation and composition in java)?

  • 聚合和組合是兩種類型的關聯,組合是一種特殊的聚合類型。合成是聚合的一個子集。

聚合(aggregation)和java中的合成(composition in java)的區別

Java中的聚合與組合
聚合是描述“有”關係的兩個對象之間的關聯。 組合是一種更具體的聚合類型,它意味著所有權。
使用
當一個對象使用另一個對象時使用聚合。 當一個對象擁有另一個對象時,使用複合。
對對象的影響
在聚合中,銷燬擁有的對象不會影響包含的對象。 在合成中,銷燬所屬對象將影響包含對象。

總結 - 聚合(aggregation) vs. java中的合成(composition in java)

聚合和組合是OOP中的兩個概念。“has-a”關係描述了一個對象可以使用另一個對象。聚合是描述“has-a”關係的兩個對象之間的關聯。組合是一種更具體的聚合類型,它意味著所有權。Java中聚合和組合的區別在於,如果包含的對象可以在沒有擁有對象的情況下存在,那麼它就是一個聚合;如果包含的對象沒有擁有對象的存在就不能存在,那麼它就是一個組合。

引用
  • 發表於 2020-10-24 01:38
  • 閱讀 ( 55 )
  • 分類:科技

你可能感興趣的文章

扔(throw)和丟擲java(throws in java)的區別

關鍵區別——java中的throw與throws 程式設計時可能會出錯。程式中的錯誤會產生意外的結果,也可能會終止程式的執行。因此,正確地檢測和管理錯誤,才能正確地執行程式。錯誤可以有兩種型別。它們是編譯時錯誤和執行時...

  • 發佈於 2020-09-21 19:02
  • 閲讀 ( 52 )

字串緩衝區(string stringbuffer)和java中的stringbuilder(stringbuilder in java)的區別

關鍵區別–java中的string與stringbuffer與stringbuilder String、StringBuffer和stringbuilder是Java中的類。字串在Java程式設計中被廣泛使用。一旦建立了字串物件,就不可能更改它們。每次字串發生更改時,它都會建立一個新字串。即使是...

  • 發佈於 2020-10-02 19:22
  • 閲讀 ( 45 )

聚合水果(aggregate fruit)和多果(multiple fruit)的區別

聚合果與多果的關鍵區別在於聚合果是由單花的無果核雌蕊群形成的果實,而多果是由一個花序的多個花的雌蕊群形成的果實。 花是有花植物的生殖結構。它促進有性生殖。一朵花有不同的部分。受精後,子房成熟為果實。...

  • 發佈於 2020-10-15 09:20
  • 閲讀 ( 57 )

包裹(package)和java介面(interface in java)的區別

Java中的Package和Interface的主要區別在於,Package有助於對類進行有條理的分類以方便訪問和維護,而Interface則有助於實現多個繼承和實現抽象。 Java是最流行的程式語言之一。Java的主要優點是它支援面向物件程式設計。這種方...

  • 發佈於 2020-10-18 11:01
  • 閲讀 ( 50 )

等於(equals)和java中的hashcode(hashcode in java)的區別

...是一種方法,類透過該方法隱式或顯式地將儲存在類例項中的資料分解為單個雜湊值,該雜湊值是一個32位有符號整數。在Java中,equals和hashCode之間的關鍵區別在於equals用於比較兩個物件,而hashCode用於雜湊,以決定物件應歸入...

  • 發佈於 2020-10-19 00:40
  • 閲讀 ( 52 )

睡覺(sleep)和在java中等待(wait in java)的區別

關鍵區別——java中的休眠與等待 Sleep和wait是Java中用於多執行緒處理的兩種方法。sleep方法屬於Thread類,而wait方法來自Object類。Java中sleep和wait的關鍵區別在於,sleep用於在指定的毫秒數內暫停當前執行緒的執行,而wait方法用...

  • 發佈於 2020-10-19 03:04
  • 閲讀 ( 47 )

打破(break)和在java中繼續(continue in java)的區別

關鍵區別——java中的break與continue 在程式設計中,有時需要多次重複一個語句或一組語句。迴圈用於對同一組指令進行多次迭代。迴圈的一些例子是while迴圈、do while迴圈和for迴圈。在while迴圈中,首先計算測試表達式。如果...

  • 發佈於 2020-10-19 05:44
  • 閲讀 ( 61 )

包裝類(wrapper class)和java中的基元型別(primitive type in java)的區別

關鍵區別——java中的包裝類與原語型別 Java是一種流行的程式語言,用於開發各種應用程式。Java的一個優點是它支援面向物件程式設計(OOP)。使用OOP,可以使用物件對程式或軟體進行建模。類被用作建立物件的藍圖。有必...

  • 發佈於 2020-10-19 06:27
  • 閲讀 ( 89 )

靜止的(static)和java期末考試(final in java)的區別

關鍵區別——java中的靜態與最終版本 每種程式語言都有特定的語法。程式設計師在編寫程式時應該遵循這些語法。程式設計語言的關鍵字根據任務的不同具有特定的含義。它們由程式語言提供,不能用於使用者定義的變數、...

  • 發佈於 2020-10-19 07:48
  • 閲讀 ( 53 )

選中的(checked)和java中的未檢查異常(unchecked exception in java)的區別

關鍵區別——java中的檢查異常與未檢查異常 異常是執行時錯誤。有兩種型別的異常稱為檢查異常和未檢查異常。當發生選中的異常時,Java應用程式連線到外部資源,如檔案、裝置或資料庫。這些異常由編譯器檢查。檢查的...

  • 發佈於 2020-10-19 08:38
  • 閲讀 ( 61 )
ddhu928597
ddhu928597

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦