关联和依赖之间的区别?

Cha*_*lie 79 uml

在UML类图中,关联关系和依赖关系之间有什么区别?

据我所知,一个联系是一种更强大的关系,而不是依赖关系,但我不确定它是如何更强大的.

任何一个例子都会受到欢迎:)

Ran*_*pho 63

一个关联几乎总是意味着一个对象的另一对象作为字段/属性/属性(术语不同).

依赖性通常(但不总是)意味着一个对象接受另一个对象作为方法参数,实例化,或使用另一个对象.一个依赖是非常由一个隐含的关联.


Mit*_*eat 45

依赖和关联有什么区别?:

通常,您使用关联来表示类中的字段.链接始终存在,因为您始终可以向其客户询问订单.它实际上不一定是一个字段,如果你从更多的界面角度进行建模,它只能表明存在一个将返回订单客户的方法.

引用第三版UML Distilled(现在刚出来)"如果对一个元素(供应商)的定义的更改可能导致另一个元素(客户端)的更改,则两个元素之间存在依赖关系".这是一个非常模糊和一般的关系,这就是为什么UML对不同形式的依赖有很多刻板印象.在代码术语中,诸如命名参数类型和在临时变量中创建对象之类的事物意味着依赖性.

...

  • 为什么回答,当马丁为你做得好多了?!+1 (6认同)
  • 这对我来说还不是很清楚,但我确实理解的一点是依赖关系比关联更"弱".似乎关联是依赖关系的一个子集,尽管在我看来,至少依赖关系是一个比关联更强大的*字.这可能是混乱的根源. (5认同)
  • 你的解释离现实世界的例子太远了,所以它甚至没有让软件工程师清楚地理解。 (2认同)

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. 组成
  2. 聚合

    1)组成 - 两个对象之间更强的关联或关系.您正在另一个类A中创建一个B 对象

 public class A {
       B b;
       public void setB(){
         this.b= new B();
        }
     }
Run Code Online (Sandbox Code Playgroud)

如果我们删除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类图和代码片段.作者给出了一个关系列表:关联,依赖,聚合,组合在一个地方.

  • 当我阅读您的评论时想到的第一个问题:在关联的情况下 - 为什么要持有对对象的引用而不使用它?你的意思是引用只是一个字段,只有在客户想知道引用时才返回? (2认同)