Java中的关联与聚合与组合

Java中的关联与聚合与组合,java,oop,Java,Oop,我正在努力理解这些术语的含义。我举了几个例子,比如: 聚合:Facebook有一个用户 组合:facebook中的每个用户都有一个会话 关联:人员使用浏览器 但是我对有一个和使用了我的一个示例感到困惑。为什么不能是用户使用facebook帐户或facebook使用会话来验证用户身份 就OOP而言,这是错误的吗?我在哪里遗漏了这个概念?检查是否准确地讨论了聚合与组合 因此,用Java术语来说,Facebook用户有一个名字(组合)和一个Facebook用户有一个朋友列表(聚合)使用关系意味着两件事

我正在努力理解这些术语的含义。我举了几个例子,比如:

聚合:Facebook有一个用户

组合:facebook中的每个用户都有一个会话

关联:人员使用浏览器

但是我对有一个使用了我的一个示例感到困惑。为什么不能是用户使用facebook帐户或facebook使用会话来验证用户身份

就OOP而言,这是错误的吗?我在哪里遗漏了这个概念?

检查是否准确地讨论了聚合与组合


因此,用Java术语来说,Facebook用户有一个名字(组合)和一个Facebook用户有一个朋友列表(聚合)

使用关系意味着两件事

->两者都可以独立存在

->数据从整个分类器()流向零件分类器(浏览器

有一种关系意味着两件事

->部分分类器(会话)的生存期取决于整个分类器的生存期(facebook

->数据通常只朝一个方向流动(即,从整个分类器(facebook)到部分分类器(session)。

对主题进行了简洁的解释

首先,对一个领域进行建模没有一成不变的方法,有几种方法是解决特定问题的正确建模方法。例如,您最初的示例使用了一个
Facebook
类,而在后续的示例中,您现在使用的是
Facebook帐户
类型:使用一个或另一个(或者两者都使用)会对您的模型产生影响,但不会使其失效

也就是说,根据代码项目现场,关联关系意味着:

  • 所有者:没有所有者
  • 一生:拥有自己的一生
  • 子对象:所有子对象都是独立的
考虑到这一点,我不认为
用户
Facebook帐户
之间存在关联关系,因为它们彼此高度依赖(假设用户指的是Facebook用户),所以组合可能是更好的关系


我不确定你的
课程是指什么。如果是d,那么说Facebook使用会话进行身份验证是毫无意义的,
用户
会话
之间的关联关系可能是一种否定,因为一个用户可以在一天内有几个会话,而它是所有会话的所有者。

你的例子很好,我对它们做了一些修改,希望能让它更清楚。我只会小心使用关联,用UML术语来说,关联是正确的,但放在Java中,本质上意味着调用来自另一个对象的方法。我开始关注Java,因为您在问题中添加了该标记。此外,关联是通用术语;聚合(使用a)和组合(具有a)是关联的类型。是一篇很好的文章..这将帮助您理解..和的另一个可能的副本请参阅以下基于代码的示例: