此UML关联是否与代码正确匹配?

问题描述 投票:1回答:2

Uml-association

我正在尝试学习UML图,但是我很难理解这部分。我已经寻找了一个很好的解释,但是找不到。我知道ProgramCordinator应该有一个带有Teacher的列表。但是,即使箭头符号像这样的Teacher而不仅是实线,ProgramCoordinator是否也应该具有->吗?实线(-)与该实线(->)之间有什么区别吗?

这是我的代码:

public class ProgramCordinator{
   private List<Teacher> teachers;

   public ProgramCordinator(Teacher t){
      this.teachers.add(t);
   }

   public ProgramCordinator(){}

}

public class Teacher{
  private ProgramCordinator cordinator;

}

我是否可以在不传递任何参数的情况下实例化ProgramCoordinator(尽管该图表明我的列表中应该至少有一位老师)?最好的解决方案是什么?

java uml associations diagram class-diagram
2个回答
1
投票

但是老师应该有程序协调员吗?>

这种类型的一对多关系称为双向关系。您可以在休眠中看到其映射方式的example

我可以在不传递任何参数的情况下实例化程序协调器吗?>

根据您的图表,程序协调员应该至少有一位老师,但是您发布的代码具有公共的无参数构造函数,这将允许另一个类在没有老师的情况下创建程序协调员。如果要限制它,请使用无参数构造函数private

假设代码是在UML之后完成的:

  • 老师应该有一个程序协调员
?:不,只是每个老师只能有一位协调员。该指示告诉您将没有退路。但是,从业务角度来看,导航是没有意义的。也许您同意老师必须认识他的协调员,因为他们必须互相交谈。编码器感觉到了这一点,并且实现了比UML更好的实现。

  • 我可以在不传递任何参数的情况下实例化程序协调器
  • 吗?我不是Java编码员,但是根据您的代码,您可以选择一种实例化方法:带和不带老师作为参数。 UML没有指定任何实例化操作。因此,这两种操作都是编码器的一项(需要的)发明。

    如果UML是在代码之后进行的:

    导航箭头错误

      缺少对象创建操作


    0
    投票
    © www.soinside.com 2019 - 2024. All rights reserved.