聚合、组合和依赖之间的区别是什么?


当前回答

聚合意味着一种关系,其中子节点可以独立于父节点存在。示例:类(父)和学生(子)。删除“类”,“学生”仍然存在。

复合指的是一种关系,其中子进程不能独立于父进程而存在。示例:House(父)和Room(子)。房间并不是独立于House而存在的。

以上两种是包含的形式(因此是亲子关系)。

依赖关系是一种较弱的关系形式,在代码术语中表示类使用另一种by形参或返回类型。

依赖是联系的一种形式。

其他回答

Aggregation and composition are terms that most people in the OO world have acquired via UML. And UML does a very poor job at defining these terms, as has been demonstrated by, for example, Henderson-Sellers and Barbier ("What is This Thing Called Aggregation?", "Formalization of the Whole-Part Relationship in the Unified Modeling Language"). I don't think that a coherent definition of aggregation and composition can be given if you are interested in being UML-compliant. I suggest you look at the cited works.

关于依赖关系,这是类型(不是对象)之间高度抽象的关系,几乎可以表示任何东西。

聚合和复合几乎完全相同,除了在子进程完全由父进程控制时使用复合。

聚合

Car -> Tires

轮胎可以从Car对象上取下并安装到另一个对象上。此外,如果汽车报废了,轮胎也不一定要销毁。

作文

Body -> Blood Cell

当Body对象被摧毁时,血细胞也随之被摧毁。

依赖

两个对象之间的关系,改变其中一个可能影响另一个。

一个对象可以包含另一个对象作为其属性的一部分。

文件包含包含单词的句子。 计算机系统有硬盘、内存、处理器等。

所以遏制不需要是物理上的。例如,计算机系统有保修期。

聚合意味着一种关系,其中子节点可以独立于父节点存在。示例:类(父)和学生(子)。删除“类”,“学生”仍然存在。

复合指的是一种关系,其中子进程不能独立于父进程而存在。示例:House(父)和Room(子)。房间并不是独立于House而存在的。

以上两种是包含的形式(因此是亲子关系)。

依赖关系是一种较弱的关系形式,在代码术语中表示类使用另一种by形参或返回类型。

依赖是联系的一种形式。

遏制:-这里访问内部对象,我们必须使用外部对象。我们可以重用所包含的对象。 聚合:在这里我们可以一次又一次地访问内部对象而不使用外部对象。