gpt4 book ai didi

同一类的Java组合和聚合?

转载 作者:行者123 更新时间:2023-11-29 05:12:24 25 4
gpt4 key购买 nike

假设我们有两个名为 Point 和 Line 的类。 Line 类有两个构造函数。这是点类的代码。

// 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 类有两个构造函数。第一个构造函数是 Compositon 的例子,而第二个构造函数是聚合的例子。现在,对于这个案例,我们能说些什么呢?一个类可以同时具有聚合和组合吗?感谢您的回答。

最佳答案

对于聚合和组合之间的区别,普遍接受的定义是终身责任和所有权。

  • 聚合:对象A 包含对其他对象的引用,但这些其他对象与其他类共享。当 A 被释放时,其他对象继续存在并在应用程序中使用
  • 组合:对象B 是由其他对象“组成”的。当 A 被处置时,其他对象也被处置。

值得quoting Fowler on this :

Few things in the UML cause more consternation than aggregation and composition

...

Aggregation (white diamond) has no semantics beyond that of a regular association. It is, as Jim Rumbaugh puts it, a modeling placebo

...

Composition (black diamond) does carry semantics. The most particular is that an object can only be the part of one composition relationship

所以是的,一个类可以与其引用的对象同时具有组合和聚合关系,但可能不像您展示的示例那样。

关于同一类的Java组合和聚合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27912305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com