当将一个对象用作另一个对象内部的字段(关联)与方法参数(依赖项)时

时间:2018-11-02 07:55:18

标签: java class oop uml ooad

在UML类图中,关联是比依赖关系更强的关系,

关联和依赖性可以如下实现:

关联-> A具有一个B对象(作为成员变量)

public class A {
    private B b;
    A(B b){
        this.b= b;
    }
    public void myMethod() {
        b.callMethod();
    }
}

依赖关系-> A引用B(作为方法参数或返回类型)

public class A {

public void myMethod(B b) {
    b.callMethod();
}

}

在上面的示例中,可以使用关联或依赖性来实现调用b.callMethod()

我想知道何时使用其中一种方法:

  • 一个对象将另一个对象作为字段(关联)
  • 对象接受另一个对象作为方法参数(依赖项)?

p.s-任何示例都将不胜感激:)

2 个答案:

答案 0 :(得分:1)

您仅对打算在任一关联类中引入拥有财产的关联进行建模。如果不是这种情况,并且您仅在参数中引用另一个类,则将使用依赖项。在建模过程中,通常从简单关联或临时依赖关系开始。这是因为您感觉到两者之间的约束力。一个简单的(最终指示)关联是该属性的第一个指示。在稍后的设计阶段中,您将为角色命名并添加多重性(因此删除了方向箭头,因为现在通过角色名称的用法来明确方向)。最后,放置点以表明角色名称应实现为拥有的属性。依赖关系是一个可选的东西,例如“也在这里看”。它只是有助于导航到正确的位置,但是您不会为其创建任何属性。

答案 1 :(得分:0)

让我们看看打印机的示例:

public class Printer {

   private Paper paper;
   private Inks inks;

   Printer(Paper paper, Inks inks){
      this.paper = paper;
      this.inks = inks;
   }

   public PrintedFile print(PDFFile pdfFile){
     // print PDFFile to paper
   }
}

关联(打印机具有...)(聚合/组成): 1)纸 2)墨水

依赖: 1)PDF文件(Pdf文件不是打印机的一部分,打印机只是使用它...)

恢复:如果对象A应该将对象B作为其内部的一部分,则它是关联。如果对象A仅使用对象B,而对象B不是对象A的一部分,则它是依赖项。