对象和创建列表但在方法中添加对象的 class 之间的 UML 关系

UML relationship between object and class that creates list, but adds objects in method

像这样:

public class create {

  private List<Object> l  = new ArrayList<>();

  public void put() {

        Object o1 = new Object();

        l.add(o1);
    }
}

不考虑列表,我假设它是一个依赖项。 但是现在这个class和Object是什么关系呢?

由于 List<Object> l 属性,这种情况下的关系将是一个聚合。 create class 是 class Object.

的集合

'Aggregate'的定义是:

a whole formed by combining several (typically disparate) elements.

在 UML 中,聚合关系定义为

an association that represents a part-whole or part-of relationship or a "has a" association relationship


如果 create class 没有 l 属性,那么它将是一个依赖项。

public class create {

  public void put() {

        List<Object> l  = new ArrayList<>();

        Object o1 = new Object();

        l.add(o1);
    }
}

这是因为 create class 依赖 Object class 来实现 put() 方法。

create和Object的关系是聚合:

顶部的多重性是 *,因为对象可以是零个或多个创建实例的一部分。

底部的多重性也是 * 因为 create class 的实例可以有零个或多个对象的列表。

这张class图隐藏了聚合关系的具体实现。也可以画一个更技术化的图,其中包含class ArrayList,但这不是你问的。