依赖和关联
2003年9月17日
依赖和关联有什么区别?
一般来说,您使用关联来表示类似于类中字段的东西。链接始终存在,因为您始终可以询问订单的客户。它不一定必须是字段,如果您是从更面向接口的角度进行建模,它可以只表示存在一个将返回订单客户的方法。
引用《UML精粹》第三版(现已出版),“如果一个元素(供应商)的定义发生变化可能导致另一个元素(客户端)发生变化,则这两个元素之间存在依赖关系”。这是一种非常模糊和通用的关系,这就是 UML 为不同形式的依赖关系提供大量构造型的原因。在代码方面,诸如命名参数类型和在临时变量中创建对象之类的操作意味着依赖关系。
您不希望在 UML 图表上显示每个依赖关系 - 依赖关系太多了。您需要非常有选择性地只显示与您要传达的内容相关的依赖关系。
我倾向于不经常在依赖关系上使用构造型。我发现大多数情况下,我想显示的关键点是依赖关系的存在,而哪种类型并不那么重要。
关联也意味着依赖关系,如果两个类之间存在关联,则也存在依赖关系。但我无法想象在图表上用额外的线来显示这种依赖关系的情况。关联暗示了它,泛化也是如此。
混淆的一个来源是 UML 1 中瞬态链接的使用。这些链接是由于 UML 1 中的元模型问题而出现的。它们表现为关联的构造型,例如参数。我一直不喜欢这些,因为我认为永久插槽和仅在方法上下文中存在的关联之间的区别非常重要。因此,我会在依赖关系而不是关联上使用这些构造型。在 UML 2 中,这个问题不再出现,因为元模型有不同的方法来处理方法范围内的关系,因此这些构造型在 UML 2 中不再有效。