Ran*_*pho 63
一个关联几乎总是意味着一个对象的另一对象作为字段/属性/属性(术语不同).
甲依赖性通常(但不总是)意味着一个对象接受另一个对象作为方法参数,实例化,或使用另一个对象.一个依赖是非常由一个隐含的关联.
Mit*_*eat 45
通常,您使用关联来表示类中的字段.链接始终存在,因为您始终可以向其客户询问订单.它实际上不一定是一个字段,如果你从更多的界面角度进行建模,它只能表明存在一个将返回订单客户的方法.
引用第三版UML Distilled(现在刚出来)"如果对一个元素(供应商)的定义的更改可能导致另一个元素(客户端)的更改,则两个元素之间存在依赖关系".这是一个非常模糊和一般的关系,这就是为什么UML对不同形式的依赖有很多刻板印象.在代码术语中,诸如命名参数类型和在临时变量中创建对象之类的事物意味着依赖性.
...
Ahm*_*any 40
在OOP术语中:
关联 - > A 有一个 C对象(作为成员变量)
依赖- > 甲引用乙(作为方法参数或返回类型)
public class A {
private C c;
public void myMethod(B b) {
b.callMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
还有一个更详细的答案.
小智 22
依赖性就像定义一个方法,该方法接受String(在Java中,C#,因为string是其中的对象)作为参数,然后您的类依赖于String类.
关联就像在类中声明字符串作为属性一样.然后你的代码与字符串类相关联.
String name = null //: is a association.
Run Code Online (Sandbox Code Playgroud)
Dee*_*ohn 14
依赖性 - 类中的更改会影响其依赖类的更改.示例 - 圆取决于Shape(接口).如果更改Shape,它也会影响Circle.因此,Circle依赖于Shape.
关联 - 意味着两个对象之间存在某种关系
(一,一,多,多)
协会有两种类型 -
聚合
1)组成 - 两个对象之间更强的关联或关系.您正在另一个类A中创建一个B 类对象
Run Code Online (Sandbox Code Playgroud)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 */
}
}
Run Code Online (Sandbox Code Playgroud)
即使你删除了A类,B也会存在于外面(B在外面创建并传递给A类)
另一个例子 - Man&Car.男人有车,但男人和车独立存在.
Raf*_*Raf 10
这里:"关联与依赖关系与聚合与组合",你有一个很好的vade mecum与uml类图和代码片段.作者给出了一个关系列表:关联,依赖,聚合,组合在一个地方.