1

根据维基百科

依赖关系是一种关系,它表明一个元素或一组元素需要其他模型元素来进行规范或实现。 [1] 该元素依赖于称为供应商的独立元素

那么它与单向关联不一样吗?当一个类中的操作使用另一个类的对象作为其参数时,我们是否使用依赖关系?

单向关联和依赖有何不同。任何例子都会很有帮助

4

2 回答 2

5

依赖:

表示客户元素(任何类型,包括类、包、用例等)了解另一个供应商元素,供应商的变化会影响客户。

所以“依赖”是非常广泛的关系。假设如果一个类对象(客户端)有另一个类对象(供应商)作为成员,如果一个类对象向另一个类对象发送消息,如果一个类对象将另一个类对象作为其方法的参数,即使一个类(客户端)是另一个类(供应商)的子类,也会存在依赖关系,因为来自供应商的更改会影响客户端。

从技术上讲,所有这些关系都可以通过“依赖”行显示。但是上面的一些关系已经有了特殊的符号:比如超类-子类关系我们有泛化关系。不需要也显示“依赖”线,因为如果它们有泛化关系,它们就有依赖关系。我们对具有另一个类对象作为成员[属性]的类对象(客户端)具有“关联”关系。所以在这种情况下也不需要显示额外的依赖行。

实际上,“依赖关系”是类图定义错误的关系。但它对于显示 UML 没有特殊符号的依赖关系很有用,例如:

  • 如果您的一个类(客户端)方法中有另一个类对象(供应商)作为参数
  • 如果您依赖于全局变量
  • 当您在另一个类上调用静态方法时。
  • 局部变量(你认为你有重要的依赖)

在此处输入图像描述

public class RepositoryManager
{
     public UpdatePriceFor(ProductDescription description)
     {
          Time date = Clock::GetTime();
          Money oldPrice =description.GetPrice();
          ...
     }

    private  IList<Item> itemsList = new List<Item>();

}

所以所有的“关联”也都表现出“依赖”。但“依赖”是广义-一般-弱的关系。通常,如果存在比依赖关系更具体的特殊关系,则比使用它更强。最后,“经济地”使用你所有的关系。根据建模者模型读者的观点仅显示重要的部分。

[来源:改编自 Craig Larman 的 Applying UML and Patterns 书]

检查 Fowlers bliki 以获取更多信息DependencyAndAssociation

于 2013-05-02T21:34:23.850 回答
1

关联意味着两个关联的实体在语义上是联系在一起的。依赖关系只声明存在......嗯,某种依赖关系。所有关联都是依赖关系,而依赖关系实际上并不意味着关联。例如,如果类“A”有一个方法接受“B”并将其作为参数传递给另一个类中的函数,则它依赖于类“B”。但是如果'A'调用了'B'类的某个方法,它应该被建模为关联。

免责声明我已经阅读了 UML 规范,也多次问过自己这个问题。我得出了上面的定义,但我仍然不确定它是否 100% 正确。

于 2013-05-02T15:40:31.653 回答