聚合(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
  • 阅读 ( 719 )
  • 分类:IT

你可能感兴趣的文章

扔(throw)和抛出java(throws in java)的区别

关键区别——java中的throw与throws 编程时可能会出错。程序中的错误会产生意外的结果,也可能会终止程序的执行。因此,正确地检测和管理错误,才能正确地执行程序。错误可以有两种类型。它们是编译时错误和运行时错误...

  • 发布于 2020-09-21 19:02
  • 阅读 ( 352 )

包装类(wrapper class)和java中的基元类型(primitive type in java)的区别

关键区别——java中的包装类与原语类型 Java是一种流行的编程语言,用于开发各种应用程序。Java的一个优点是它支持面向对象编程(OOP)。使用OOP,可以使用对象对程序或软件进行建模。类被用作创建对象的蓝图。有必要在...

  • 发布于 2020-10-19 06:27
  • 阅读 ( 734 )

静止的(static)和java期末考试(final in java)的区别

关键区别——java中的静态与最终版本 每种编程语言都有特定的语法。程序员在编写程序时应该遵循这些语法。程序设计语言的关键字根据任务的不同具有特定的含义。它们由编程语言提供,不能用于用户定义的变量、方法、...

  • 发布于 2020-10-19 07:48
  • 阅读 ( 315 )

选中的(checked)和java中的未检查异常(unchecked exception in java)的区别

关键区别——java中的检查异常与未检查异常 异常是运行时错误。有两种类型的异常称为检查异常和未检查异常。当发生选中的异常时,Java应用程序连接到外部资源,如文件、设备或数据库。这些异常由编译器检查。检查的...

  • 发布于 2020-10-19 08:38
  • 阅读 ( 276 )

聚合(aggregation)和作文(composition)的区别

...聚合是两个对象之间的关联,它描述了“has a”关系,而composition是一种更具体的聚合类型,它意味着所有权。 目录 1. 概述和主要区别 2. 什么是聚合 3. 什么是构图 4. 聚合与合成的相似性 5. 并列比较-以表格形式汇总与组合 6. 摘...

  • 发布于 2020-10-19 20:29
  • 阅读 ( 210 )

超载(overloading)和在java中重写(overriding in java)的区别

...别——java中重载与重写 面向对象编程(OOP)是软件开发中的一个主要范式。它是一种使用类和对象设计程序的方法。班级就是蓝图。它描述了对象中应该包含的内容。或者应该定义对象的属性。因此,对象是类的实例。这些对...

  • 发布于 2020-10-19 21:20
  • 阅读 ( 362 )

聚合(aggregation)和作文(composition)的区别

...人和他的衣服在某一点上可以被视为一个整体。 Summary:1.Composition implies 其组成物的实际所有权,而聚合不一定拥有其任何聚合。2.组成对其组件具有更强的键,而聚合与其聚合的键较弱或更松散。3.组成具有内部层次上存在的组...

  • 发布于 2021-06-22 14:26
  • 阅读 ( 165 )

抽象类(abstract class)和java接口(interface in java)的区别

...法。好吧,因为Java8,接口也有方法实现,它们可以有Java中的静态和默认方法。让我们详细研究一下两者的区别。 什么是java中的抽象类(an abstract class in java)? Java中的抽象类是一个声明为抽象的类——它可能包含也可能不包含...

  • 发布于 2021-06-25 03:52
  • 阅读 ( 302 )

应用程序编程接口(api)和java框架(framework in java)的区别

...构建安全高效的应用程序。 覆盖的关键领域 1.什么是Java中的API–定义,功能2.什么是Java中的框架–定义,功能3.API和Java中的框架的区别–主要区别的比较 关键术语 API、框架、Java 什么是java中的api(api in java)? API代表应用程序...

  • 发布于 2021-07-01 01:02
  • 阅读 ( 537 )

抽象类(abstract class)和java接口(interface in java)的区别

...以使用接口实现多重继承。 覆盖的关键领域 1.什么是Java中的抽象类-定义,功能2.什么是Java中的接口-定义,功能3.Java中抽象类和接口的区别是什么-主要区别的比较 关键术语 抽象类、接口、多重继承 什么是java中的抽象类(abstrac...

  • 发布于 2021-07-01 01:29
  • 阅读 ( 276 )
ddhu928597
ddhu928597

0 篇文章

相关推荐