这个问题已经在这里有一个答案:
- 有什么关联,聚合和组合的区别? 16个回答
是什么聚集,组成和依赖之间的区别?
这个问题已经在这里有一个答案:
是什么聚集,组成和依赖之间的区别?
聚合意味着那里的孩子可以独立于母公司的存在的关系。 例子:class(父)和学生(孩子)。 删除类和学生依然存在。
组成暗示那里的孩子就不能存在独立于母公司的关系。 例如:家(父母)和室(孩子)。 房间不存在单独的一所房子。
以上两个是遏制 (因此父子关系)的形式。
依赖关系是在代码术语关系和一个较弱的形式表示一类由参数使用另一或返回类型。
依赖性是关联的一种形式。
聚合和组合物几乎完全不同之处在于组合物相同,使用时儿童的生活完全由父控制。
聚合
Car -> Tires
该Tires
可以采取关闭的Car
对象和安装在不同的一个。 此外,如果汽车被累计,轮胎不一定被摧毁。
组成
Body -> Blood Cell
当Body
对象被销毁的BloodCells
被摧毁它。
依赖
两个对象之间的关系,其中改变一个可能影响其他。
聚合 -可分离部分的整体。 该部分都有其自己的身份,从它是什么的一部分分开。 你可以挑选部分,并将其移动到另一个对象。 (现实世界的例子:轮 - >车,bloodcell - >体)
构成 -整体的不可分离的部分。 你不能动部件到另一个对象。 更像是一个性质。 (现实世界的例子:曲线 - >路,个性 - >人,MAX_SPEED - >汽车,对象的属性 - >对象)
需要注意的是一种关系,即在一个设计中的聚集体可以是另一种的组合物。 它的所有有关的关系是如何在具体的设计中。
依赖 -敏感的改变。 (雨量 - >天气,headposition - > bodyposition)
注:“Bloodcell” - >血“可能是‘组合物’,而不叫血的实体不可能存在的血细胞。‘血液’ - >体”可能是‘聚合’血液可以不叫身体的实体存在。
与组合物的关系相关联的对象将不包含的对象以外存在。 实例是预约和所有者(一个人)或一个日历; 一个TestResult和病人。
在另一方面,由含有对象聚集的对象可以含有物体之外存在。 例子是门和房子; 在员工和部门。
依赖关系涉及协作或授权 ,其中一个对象与另一个对象请求服务并且是依赖为此在该对象上。 随着服务的客户端,你想要的服务接口保持不变,即使提供未来服务。
聚合和组合是大多数人在世界OO通过UML已经收购的条款。 和UML确实在定义这些条款很不好,因为已经证明通过,例如,亨德森 - 塞勒斯和巴比尔(“这是什么东西叫聚合?”,“在统一建模语言整体 - 部分关系的形式化“)。 我不认为聚合和组合的一致定义可以,如果你有兴趣成为UML兼容给出。 我建议你看看引用作品。
对于依赖,这类型(而不是对象),这可能意味着几乎所有的东西之间的高度抽象的关系。
一个对象可能包含另一个作为其属性的一部分。
因此,遏制不必是物理。 例如,计算机系统有保修。
遏制: - 这里访问内部对象,我们必须使用外部对象。 我们可以重用所包含的对象。 聚集: - 在这里,我们可以在不使用外部对象连连访问内部对象。