Difference between association and dependency?

In a UML class diagram, what is the difference between an association relationship and a dependency relationship?

From what I know, an association is a stronger relationship than a dependency, but I'm not sure how it is stronger.

Any example would be more than welcome :)

110267 次浏览

依赖和关联的区别是什么? :

通常,您使用关联来表示类似字段的内容 在一个类中。链接总是在那里,因为你总是可以问一个 为其客户订购。它实际上不需要是一个字段,如果您是 从更多的接口角度来看,它可以只指示 方法的存在,该方法将返回订单的客户。

引用《 UML 提炼》(UML Distilled)第三版(现在刚刚出版)中的话: “ a 定义更改时,两个元素之间存在依赖关系 一个元素(供应商)可能会导致其他元素(供应商)的变化 这是一个非常模糊和笼统的关系,这就是为什么 UML 为不同形式的依赖性提供了大量的原型。 在代码术语中,例如命名参数类型和创建 对象在临时变量中意味着依赖关系。

...

协会几乎总是意味着一个对象具有另一个对象作为字段/属性/属性(术语不同)。

依赖性通常(但并不总是)意味着一个对象接受另一个对象作为方法参数、实例化或使用另一个对象。依赖性在很大程度上是由 协会所暗示的。

依赖性是非常普遍的,降低复杂性就是尽可能地降低依赖性。

An association is a strong (static) dependency. Aggregation and Composition are even stronger.

依赖性就像是当你定义一个方法,它接受一个字符串(在 Java 中,C # ,因为字符串是它们中的一个对象)作为参数,那么你的类就依赖于字符串类。

关联类似于在类中将字符串声明为属性。 则代码与字符串类关联。

String name = null //: is a association.

这里: “关联与依赖,聚合与合成”,你有一个伟大的 vade mecum 与 uml 类图和代码片段。 作者给了我们一个关系列表: 关联,依赖,聚合,合成在一个地方。

用 OOP 术语来说:

关联—— > A < em > has-a C对象(作为成员变量)

依赖项—— > A < em > 参考文献 B(作为方法参数或返回类型)

public class A {
private C c;
public void myMethod(B b) {
b.callMethod();
}
}

还有一个 更详细的答案

依赖性 -类中的变化会影响其依赖类中的变化。示例-Circle 依赖于形状(一个接口)。如果你改变形状,它也会影响圆。所以,Circle 依赖于塑形。

关联 -意味着两个对象之间存在一定的关系

(one-one, one-many,many-many)

关联有两种类型-

  1. Composition
  2. 聚集

    1)成分 -较强的 协会或两个物体之间的关系。您正在另一个 < strong > 类 A 中创建一个 B 级对象

 public class A {
B b;
public void setB(){
this.b= new B();
}
}

如果我们删除类 A,B 将不存在(B 对象只在 A 内部创建)。

另一个例子-身体和肝脏。肝脏不能存在于身体之外。

2)两个对象之间的聚合 -弱类型的 协会

public class A {
B b;
public void setB(B b_ref){
this.b= b_ref;
/* object B is passed as an argument of a method */
}
}

即使你删除了 A 类,B 也会存在于外部(B 是在外部创建并传递给 A 类)

另一个例子-人和车。人有一辆车,但人和车独立存在。

关联 是指一个对象只有一个链接到另一个对象,而不使用关系对象方法。比如 Ruby

class User
has_one :profile
end


user = User.first
profile = user.profile
profile.sign_out

这意味着您可以从用户那里获得一个 Profile 对象,但是用户不会在自己内部使用 Profile 的方法(不依赖于 Profile 的接口)。

Dependency means that User has link to another object and call that object's methods inside himself

class User
has_one :profile


def personal_info
profile.info
end
end

在这里,如果配置文件的信息方法将被改变或重命名我们的依赖用户类也需要被改变。

我总是检查这个答案,因为它没有坚持在我的脑海里。在阅读了公认的答案后,我发现这个更有帮助 UML Dependency vs Association