在另一个 class 中使用 class 的实例是否算作依赖或关联?

Does using an instance of a class inside of another class count as dependency or association?

我很难弄清楚在另一个内部实例化一个 class 然后使用它的一些方法算作 UML class 图中的依赖关系还是关联关系。例如:

public class Example {
    Thing thing = new Thing();

    public void method() {
            thing.doSomething();
    }
}

这个关联是因为 Example “有一个” Thing 吗?或者这种依赖性是因为 Example 有一个方法“使用”Thing 来正常工作?

在 UML 中,您可以使用 ExampleThing 之间的 关联 来表示它:

  • 纯粹主义者会建议使用 dot notation 并在 Thing 端放一个小点:这表明 Example 拥有关联的末端。并非所有建模工具都支持此表示法。
  • 由于 Example 的实例总是知道 Thing 的实例,但可能不是相反的情况,因此您希望显示此关联可导航(末尾的空心箭头)。

关联意味着依赖。因此,您不应该向图表添加冗余依赖项。没有关联的依赖项看起来像:

public class Example {
    Thing thing = new Thing();             // Example is associated to Thing

    public void method(AnotherThing x) {   // Example depends on AnotherThing
            ...;
    }
}