【问题标题】:Is ArrayList<X> an aggregation or composition?ArrayList<X> 是聚合还是组合?
【发布时间】:2019-07-26 02:13:21
【问题描述】:

我正在准备我的编程考试并遇到了这个问题,我知道在聚合中对象是借用的,而在组合中对象是拥有的。答案是作文吗?

ArrayList&lt;X&gt;X 的聚合还是 X 的组合?

ArrayList<Point> pts = new ArrayList<Point>();
Point p = new Point(0., 0., 0.);
pts.add(p);
p.setX( 10.0 );
System.out.println(p);
System.out.println(pts.get(0));

【问题讨论】:

    标签: java oop aggregation composition


    【解决方案1】:

    来自here

    简单规则:

    1. A“拥有”B = 组合:B 在没有 A 的系统中没有任何意义或目的
    2. A“使用”B = 聚合:B 独立于 A(在概念上)存在

    因此,这实际上取决于您的型号。列表中的元素是否可以在没有列表的情况下存在。是否必须将元素放入列表中才有意义?

    对于ArrayList&lt;Point&gt;,我认为是聚合。

    【讨论】:

    • 感谢您的反馈! 'ArrayList' 呢?
    • @UsamaGhawji 正如我所说,这取决于。你不能说它是对所有ArrayList&lt;X&gt; 的一个还是另一个。这取决于您使用它的环境。
    【解决方案2】:

    由于Point在数组之外确实存在,所以它是一个聚合。

    https://www.visual-paradigm.com/guide/uml-unified-modeling-language/uml-aggregation-vs-composition/

    如上所述:

    聚合意味着子可以存在的关系 独立于父母。示例:班级(家长)和学生 (孩子)。删除班级,学生仍然存在。

    组合暗示了一种关系,其中孩子不能存在 独立于父母。示例:房屋(父)和房间(子)。 房间不是独立于房子而存在的。

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 1970-01-01
      • 2019-12-31
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 2010-12-29
      相关资源
      最近更新 更多