当前位置: 首页 > 面试题库 >

Java 聚合与构成

和柏
2023-03-14
问题内容

我很难理解UML中的组合和聚合之间的区别。有人可以给我一个很好的比较和对比吗?我也很想学习识别代码之间的区别和/或看一个简短的软件/代码示例。

编辑:我问的部分原因是因为我们在工作中正在进行反向文档活动。我们已经编写了代码,但是我们需要返回并为代码创建类图。我们只想正确捕获关联。


问题答案:

聚集与构成之间的区别取决于上下文。

以另一个答案中提到的汽车示例为例-是的,确实汽车尾气可以“独立”站立,因此可能与汽车的成分不同-但这取决于应用程序。如果你构建的应用程序实际上必须处理独立的汽车尾气(汽车商店管理应用程序?),那么聚合将是你的选择。但是,如果这是一个简单的赛车游戏,并且汽车尾气仅充当汽车的一部分-那么,构图会很好。

棋盘?同样的问题。没有棋盘,只有在某些应用程序中,棋子才不存在。在其他玩具制造商中,象棋棋子肯定不能组成棋盘。

尝试将合成/聚合映射到你喜欢的编程语言时,情况变得更糟。在某些语言中,区别可能更容易注意到(在简单的情况下,“按引用”与“按值”对比),但在另一些语言中则可能根本不存在。

还有最后的建议吗?不要在这个问题上浪费太多时间。这是不值得的。这种区别在实践中几乎没有用(即使你有一个完全清晰的“组成”,由于技术原因,例如缓存,你可能仍希望将其实现为聚合)。



 类似资料:
  • 问题内容: 我试图理解这些术语的含义。我举了一些例子,例如: 汇总:Facebook 有一个 用户 组成:facebook 中的 每个用户 都有一个 会话。 协会:人们 使用 浏览器 但是我对 具有 和 使用我的 示例感到困惑。为什么不能是用户 使用 Facebook帐户或Facebook 使用 会话来认证用户? 就OOP而言,这是错误的吗?我在哪里想念这个概念? 问题答案: 该 使用 关系意味着

  • 统计 BuguDao提供如下常用的统计功能,它们都是基于Aggregation实现的。 /* 求最大值 */ public double max(String key) public double max(String key, BuguQuery query) /* 求最小值 */ public double min(String key) public double min(Stri

  • 问题内容: 在我们的一个新项目中,我们受本文http://project-a.github.io/on-site-search-design-patterns- for-e-commerce/#generic-faceted-search的 启发而做“构面”结构。虽然在本文所述的范围内可以使它正常工作,但是在选择构面时却遇到了使其无法工作的问题。我希望有人可以提示您尝试一下,所以我不必再次将所有聚

  • 我在读一篇关于OOP中的关系、关联、组合、聚合等的文章。有些事情令人困惑 因此,在PHP中,我们调用以下代码组合 在阅读了几篇关于作文的文章后 以下是组成示例: 因此,根据我的理解,聚合意味着A类的对象可以存在于B类之外,而组合意味着A类生命周期的对象取决于B类。 我正确理解了吗?

  • 我是Java8流api的新手,我正在寻求一种解决方案,以运行我的对象列表并聚合某些属性,从而最终能够获得该属性类型和所有聚合结果的新列表。 例如,我的列表中有10个person对象,我想要一个基于第一人称年龄的所有年龄差异的列表 在执行流魔术之后,结果应该是int类型的,并且看起来如下所示

  • 本文向大家介绍Java中关联与聚合之间的区别,包括了Java中关联与聚合之间的区别的使用技巧和注意事项,需要的朋友参考一下 协会 就对象而言,关联是指两个相关对象之间的“具有”关系。例如,一个雇员有一个通讯地址。 聚合 就对象而言,聚合是指两个相关对象之间具有“ +”关系。例如,一个部门有多名员工。它指的是在父类中具有子对象的集合。例如: 序号 键 协会 聚合 1 定义 关联是指彼此使用的两个类之