关键区别——聚合与组合
面向对象编程(OOP)是软件开发中的一种常见范式。对象是类的实例。一次创建对象是不可能的。应该有一个蓝图或描述来创建一个对象。这个蓝图被称为类。类包含属性和方法。对象是使用类创建的。类和对象类似于现实世界中的平面图和房屋。没有正确的计划是不可能建房子的。同样地,类用于创建对象。一个对象与其他对象协作。表示两个或多个对象之间关系的链接称为“关联”。聚合和组合是关联的类型。它们描述了阶级之间的关系。本文讨论了聚合与组合的区别。聚合和组合的关键区别在于,聚合是两个对象之间的关联,它描述了“has a”关系,而composition是一种更具体的聚合类型,它意味着所有权。
目录
1. 概述和主要区别
2. 什么是聚合
3. 什么是构图
4. 聚合与合成的相似性
5. 并列比较-以表格形式汇总与组合
6. 摘要
什么是聚合(aggregation)?
两个对象之间的关系通过在统一建模语言(UML)中画一条线来表示。链接是一种关联。UML有助于获得系统的可视化表示。它不同于常规编程语言。关联还定义了对象的多重性。它们是一对一、一对多和多对多。当a类的单个对象与B类的单个对象相关联时,这是一种一对一的关系。一个例子是一个作家在写一本书。在这个例子中,一个作者正在写一本书。
当A类的一个对象与B类的许多对象相关联时,它是一对多的关系。例如,一个部门可以有很多员工。当类A的对象与B类的多个对象关联,而B类的对象与A类的多个对象关联时,则是多对多的关联。一个例子是,一个雇员可以从事多个项目,而一个项目可以有多个雇员。
聚合是进一步描述对象之间关系的类型关联。聚合描述“具有”关系。一些描述这种关系的例子是,一个学生“有”学生证,“一辆车”有一个“引擎”。也有可能用这种关系来扩大数量。例如,一个银行“有许多”银行账户,一个班“有许多”学生。可以用下面的例子来解释。
根据上面的例子,教室由一个或多个学生组成。多重性也用于表示对象的数量。它描述了一个教室有多个学生。菱形符号表示UML中的聚合。学生对象不依赖于类对象。如果类对象被破坏,它不会影响学生对象。那些物体仍然存在。
什么是作文(composition)?
合成是一种更具体的聚合形式。它描述了所有权。可以用下面的例子来解释。
如上所述,book对象由page对象或pages组成。多重性也用于表示对象的数量。它描述了一个教室有多个学生。突出显示的菱形符号表示UML中的组合。由于这本书有一页或多页,所以它是一个聚合,但它更具体。如果book对象被销毁,那么page对象也会被销毁。没有book对象,页面对象就不能存在。因此,组合是包含所有权的更具体的聚合形式。
聚合(aggregation)和作文(composition)的共同点
- 两者都用于面向对象编程。
- 两者都是在统一建模语言(UML)中使用的,以获得对系统的直观理解。
聚合(aggregation)和作文(composition)的区别
聚合与合成 | |
“聚合是两个对象之间的关联”。 | 组合是表示所有权的最具体的聚合类型。 |
UML符号 | |
聚合用菱形表示。 | 成分用突出显示的钻石表示。 |
功能 | |
在聚合中,如果拥有的对象被销毁,则不会影响包含对象。 | 拥有它的对象,如果它被销毁,将影响它的组成。 |
总结 - 聚合(aggregation) vs. 作文(composition)
面向对象编程是软件开发中的一个主要范例。在OOP中,系统使用对象进行建模。这些对象不是孤立存在的。对象与其他对象协作。对象之间的关系称为关联。聚合和组合是关联的类型。聚合和组合的区别在于,聚合是两个对象之间的关联,它描述了“has a”关系,而composition是更具体的聚合类型,它意味着所有权。聚合和组合都有助于理解系统的行为。
下载聚合vs composition的pdf版本
你可以下载这篇文章的PDF版本,并按照引文说明离线使用。请在这里下载PDF版本聚合和合成的区别