这是聚合吗?

时间:2015-03-23 20:47:30

标签: java intellij-idea uml aggregation

我有以下代码

 public static void main(String[] args) {
    Engine engine = new Engine("This Engine!");
    Car b = new Car(engine);

    b = null;
}

这是聚合吗?我总是认为聚合是指即使另一个类被“摧毁”,某些东西仍然可以“生存”......例如Car and Engine。如果我删除Car实例,引擎仍然可以存在。

这是对的吗?

2 个答案:

答案 0 :(得分:1)

首先,我会说你的代码看起来会更好

Car b = new Car();
b.setEngine(engine);

看起来会更好。

然后关于你的聚合思考,是的,你是对的。 “不知何故”。但是,如果你真的分裂你的“对象”细粒度。我的意思是,如果没有发动机,你会有车吗? :)

我实际上会看到这辆车,我会更多地考虑汽车和司机的聚合。如果汽车损坏,你仍然有一个司机。如果司机死了,你还有车。

uml关于汇总:

聚合是“有”关联关系的变体;聚合比关联更具体。它是一个代表整体或部分关系的协会。作为一种关联,可以命名聚合并使用与关联相同的装饰。但是,聚合可能不涉及两个以上的类;它必须是二元关联。

当类是其他类的集合或容器时,可能会发生聚合,但所包含的类对容器没有强大的生命周期依赖性。容器的内容不会自动销毁。

  

组合物/聚合

与聚合混淆的另一种关系是构图。当聚合描述“有”关系时,该组合执行“包含/部分”关系。正如我所说的,通常情况下,引擎是你的汽车对象权利(组成)的一部分。 Car对象有一个Driver(聚合)。

答案 1 :(得分:0)

即使其他类被“摧毁”,某些内容仍然可以“生效”。

是的,聚合是B独立于A存在的地方,例如,员工在没有经理的情况下仍然存在。

在对象A“拥有”B的情况下,合成更强。除了与A相关之外,B没有任何目的。