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

2022-08-07 00:00:00 class dependencies java uml associations

我很难弄清楚,在另一个类中实例化一个类,然后使用它的一些方法在UML类图中算得上是依赖还是关联。例如:

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

    public void method() {
            thing.doSomething();
    }
}
此关联是因为示例";具有";内容吗?或者,这种依赖关系是因为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
            ...;
    }
}

相关文章