关联和依赖之间的区别?
在UML类图中,关联关系和依赖关系有什么区别?
据我所知,一个关系比一个依赖关系更强大,但我不确定它是如何强大的。
任何例子将不止欢迎:)
依赖和关联有什么区别? :
一般来说,你使用一个关联来表示某个类的字段。 链接永远在那里,因为你总是可以为它的客户询问一个订单。 它不一定是一个领域,如果你从一个更接口的angular度来build模,它只能指出一个方法的存在,将返回订单的客户。
引用第3版的UML Distilled(现在刚出来),“如果对一个元素(供应商)的定义的更改可能导致另一个(客户)的更改,则两个元素之间存在依赖关系”。 这是一个非常模糊和普遍的关系,这就是为什么UML对于不同forms的依赖关系有着一系列的刻板印象。 在代码方面,诸如命名参数types和在临时variables中创build对象等意味着依赖性。
…
关联几乎总是意味着一个对象将另一个对象作为字段/属性/属性(术语不同)。 依赖通常(但不总是)意味着对象接受另一个对象作为方法参数,实例化或使用另一个对象。 一个关联非常隐含依赖关系。
依赖就像当你定义一个方法需要一个String(在Java中,C#,因为string是一个对象)作为参数,那么你的类依赖于String类。
关联就像在你的类中声明一个string作为一个属性一样。 那么你的代码与string类相关联。
String name = null //: is a association.
在OOP方面:
关联 – > A 有一个 C对象(作为成员variables)
依赖 – > 引用 B (作为方法参数或返回types)
public class A { private C c; public void myMethod(B b) { b.callMethod(); } }
还有一个更详细的答案 。
这里: “关联与依赖关系与聚合与构成” ,你有一个伟大的vade mecum与uml类图和代码片段。 作者给我们一个关系列表:关联,依赖,聚合,合成在一个地方。
依赖 – 一个类的变化影响它的依赖类的变化。 示例 – Circle依赖于Shape(一个接口)。 如果你改变Shape,它也会影响Circle。 所以,Circle对Shape的依赖。
协会 – 意味着2个对象之间有一定的关系
(一对一,一对多,多对多)
协会有两种types –
- 组成
-
聚合
1)构成 – 更强的2个对象之间的关联或关系。 您正在另一个类A中创build一个类B的对象
public class A { B b; public void setB(){ this.b= new B(); } }
如果我们删除类A,则B将不存在(B对象仅在A内创build)。
另一个例子 – 身体和肝脏.Liver不能存在于体外。
2)聚合 – 两个对象之间关联较弱的types。
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在外部创build并传递给A类)
另一个例子 – 人&汽车。 男人有一辆汽车,但是男人和汽车独立存在。
依赖性是非常普遍的,降低复杂性是尽可能减less依赖关系。
一个关联是一个强大的(静态)依赖关系。 聚集和组成更强。