假设我们有两个名为Point和Line的类。Line类有两个构造函数。这是Point类的代码。
// The Point class definition
public class Point {
// Private member variables
private int x, y; // (x, y) co-ordinates
// Constructors
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public Point() { // default (no-arg) constructor
x = 0;
y = 0;
}
}
这是Line类的代码。
public class Line {
// Private member variables
Point begin, end; // Declare begin and end as instances of Point
// Constructors
public Line(int x1, int y1, int x2, int y2) {
begin = new Point(x1, y1);
end = new Point(x2, y2);
}`
public Line(Point begin, Point end) {
this.begin = begin;
this.end = end;
}
}
如您所见,Line类有两个构造函数。第一个构造函数是组合的例子,而第二个构造函数是集合的例子。现在,关于这个案子我们能说些什么?一个类可以同时有聚合和合成吗?谢谢你的回答。
由于组合(相对于聚合)的定义特征是具有独占/不可共享的部分(参见https://stackoverflow.com/a/27889087/2795909),因此Point
-Line
部分-整体关系的示例显然是聚合(无论您是将点对象传递给构造函数还是在构造函数中创建它们),因为定义行的两个点可以与其他行共享。
聚合和组合之间区别的一个普遍接受的定义是终身责任和所有权。
A
保存对其他对象的引用,但这些其他对象与其他类共享。释放 A
时,其他对象将继续存在并在应用程序中使用B
由其他对象“组成”。释放 A 时,其他对象也是如此。这一点值得引用福勒的话:
在UML中,很少有什么比聚合和合成更让人惊愕的了
...
聚合(白菱形)除了常规关联之外没有语义。正如吉姆·伦博(Jim Rumbaugh)所说,这是一种建模安慰剂。
...
组合(黑钻石)确实带有语义。最特别的是,一个对象只能是一个组合关系的一部分
所以,是的,一个类对于它所引用的对象既可以有组合关系,也可以有聚集关系,但是可能不像你所展示的例子那样。
请考虑以下情况: 我如何在类图上表示< code>A和< code>B之间的关系?如果< code>B只保存一个< code>A(而不是一个数组),我会使用组合/聚合,但是在这种情况下,我不确定应该做什么。非常感谢你的帮助!
因为聚合和组成是相关的关联,或者我们可以说它给出了对对象或其他任何东西之间关系的理解。 我发布这个问题是因为我在采访中问了一个问题,什么是组成和聚合。 所以根据我的理解,我给出了我的想法,如下所示。 http://www.coderanch.com/t/522414/java/java/Association-Aggregation-Composition 聚集、关联和组合 Java中的关联、聚合
我开始研究 OOAD,我很难找到一个 代码示例来说明如何以编程方式实现、和。(到处都有几篇文章,但它们与 C# 或 Java 有关)。我确实找到了一两个例子,但它们都与我的导师的指示相冲突,我很困惑。 我的理解是,在: < li >关联:Foo有一个指向Bar对象的指针作为数据成员 < li >聚合:Foo有一个指向Bar对象的指针,Bar的数据被深度复制到该指针中。 < li >组成:Foo有一
问题内容: 我想知道如何在python中以 UML术语 实现组合和聚合。 如果我了解: 聚合: class B: pass class A(object): def init(self): self.B = B 组成: 在其他语言中,我将其实现为指向B的指针。我猜这是python中的指针。 这样对吗? 问题答案: 如果我正确理解,聚合与组合是关于对象对其成员的职责(例如,如果删除实例,是否还要删除
我知道聚合和组合之间的概念差异。有人能用实例告诉我它们之间在Java中的实现区别吗?
问题内容: 我面临着一个持续的问题,那就是将授权,组成和聚合彼此区分开来,并确定在哪种情况下最好相互使用。 我已经查阅了一本Java OO分析和设计书,但是我的困惑仍然存在。主要的解释是这样的: 委托 :当我的对象按原样使用另一个对象的功能而不更改它时。 组成 :我的对象由其他对象组成,这些对象在我的对象被销毁并收集垃圾后便不再存在。 聚集 :我的对象由其他对象组成,即使我的对象被破坏,它们也可以