因为聚合和组成是相关的关联,或者我们可以说它给出了对对象或其他任何东西之间关系的理解。
我发布这个问题是因为我在采访中问了一个问题,什么是组成和聚合。
所以根据我的理解,我给出了我的想法,如下所示。
http://www.coderanch.com/t/522414/java/java/Association-Aggregation-Composition
聚集、关联和组合
Java中的关联、聚合和组合
也参观了更多。
我的基本解释是,聚合表示松散关系,而组合表示强关系,并对此进行了明确解释。
但是面试官侮辱了我,说这是一个理论概念,你说我想要完美的Java代码,它们是如何不同的,还告诉我如果我给你一个小应用程序,你如何识别这是聚合,这是组合?
所以现在我想了解纯技术概念和Java代码,它们有什么不同,是什么?
A 想在解释的答案中添加其他信息
聚合是Assosation的一种特殊形式(关联是通过对象建立的两个独立类之间的关系。关联可以是一对一、一对多、多对一、多对多)
组合是一种受限的聚合形式,其中两个实体高度依赖彼此。
聚合vs组合
-依赖性:聚合意味着子级可以独立于父级存在的关系。例如,部门和员工,删除部门和员工仍然存在。而组合意味着子级不能独立于父级存在的关系。例如:人类和心脏,心脏不独立于人类存在。
-关系类型:聚合关系是“has-a ”,组合是“part-of”关系。
-关联类型:组合是强关联,而聚合是弱关联。
参考:https://www . geeks forgeeks . org/association-composition-aggregation-Java/
考虑一个简单的 LinkedList
类示例。链接列表
由节点
组成。这里 LinkedList
类是拥有对象。当它被销毁时,其中包含的所有节点
都会被擦除。如果从列表中删除了节点
对象,则链接列表
对象仍将存在。
组合的实现使得一个对象包含另一个对象。
class LinkedList {
Node head;
int size;
}
这是构图。
另一个例子,考虑一个< code>Circle类,它有一个< code>Point类,用于定义其中心的坐标。如果删除了< code >圆,则其圆心也会随之删除。
class Circle {
private float radius;
private Point center;
public Circle(Point center, float radius) {
this.center = center;
this.radius = radius;
}
public void setRadius(float radius) {
this.radius = radius;
}
public void setCenter(Point center) {
this.center = center;
}
public float getRadius() {
return radius;
}
public Point getCenter() {
return center;
}
class Point {
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public void setY(int y) {
this.y = y;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public int getX() {
return x;
}
}
@Override
public String toString() {
return "Center: " + "(" + center.getX() + "," + center.getY() + ")" + "\nRadius: " + this.getRadius()
+ " centimeters";
}
}
java集合api的组合示例:HashMap
有一个Entry
类。如果删除了 HashMap
对象,则映射中包含的所有 Entry
对象都将随之删除。
聚合也是对象组合的一种类型,但不如组合强。它定义了“HAS A”关系。用非常简单的话来说,如果类A具有类B的引用,并且删除B不会影响A的存在,那么它就是聚合。你一定在某个时候用过它。
我试图确认我对关联、聚合的代码外观的理解 聚合:哈斯-a。它具有另一种类型的现有对象 组成:由另一个对象组成 协会:我对此有两种看法。 > 当一个类与另一个类相关联时。因此,上述两个都是关联的示例。 关联是一种较弱的聚合形式,其中类不保留对其接收的对象的引用。 我的理解正确吗?我在这里和这里阅读了相互矛盾的文章,所以我真的不确定该遵循哪一个。我的理解似乎符合第一个环节。我觉得第二个环节是错误的,或
假设我们有两个名为Point和Line的类。Line类有两个构造函数。这是Point类的代码。 这是Line类的代码。 如您所见,Line类有两个构造函数。第一个构造函数是组合的例子,而第二个构造函数是集合的例子。现在,关于这个案子我们能说些什么?一个类可以同时有聚合和合成吗?谢谢你的回答。
问题内容: 我想知道如何在python中以 UML术语 实现组合和聚合。 如果我了解: 聚合: class B: pass class A(object): def init(self): self.B = B 组成: 在其他语言中,我将其实现为指向B的指针。我猜这是python中的指针。 这样对吗? 问题答案: 如果我正确理解,聚合与组合是关于对象对其成员的职责(例如,如果删除实例,是否还要删除
我知道聚合和组合之间的概念差异。有人能用实例告诉我它们之间在Java中的实现区别吗?
请考虑以下情况: 我如何在类图上表示< code>A和< code>B之间的关系?如果< code>B只保存一个< code>A(而不是一个数组),我会使用组合/聚合,但是在这种情况下,我不确定应该做什么。非常感谢你的帮助!
问题内容: 我试图理解这些术语的含义。我举了一些例子,例如: 汇总:Facebook 有一个 用户 组成:facebook 中的 每个用户 都有一个 会话。 协会:人们 使用 浏览器 但是我对 具有 和 使用我的 示例感到困惑。为什么不能是用户 使用 Facebook帐户或Facebook 使用 会话来认证用户? 就OOP而言,这是错误的吗?我在哪里想念这个概念? 问题答案: 该 使用 关系意味着