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

问题描述 投票:2回答: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
投票
假设代码是在UML之后完成的:

  • 老师应该有一个程序协调员 ?:不,只是每个老师只能有一位协调员。该指示告诉您将没有退路。但是,从业务角度来看,导航是没有意义的。也许您同意老师必须认识他的协调员,因为他们必须互相交谈。编码器感觉到了这一点,并且实现了比UML更好的实现。
  • 我可以在不传递任何参数的情况下实例化程序协调器
  • 吗?我不是Java编码员,但是根据您的代码,您可以选择一种实例化方法:带和不带老师作为参数。 UML没有指定任何实例化操作。因此,这两种操作都是编码器的一项(需要的)发明。

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

导航箭头错误

    缺少对象创建操作
  • 现在(不显示第二个缺陷)UML应该是
  • enter image description here

    [协调可以不指派无休止的老师。每位老师只有一名协调员。

    当然,您上面显示的UML设计可能是有原因的。但老实说,我无法想象任何事情;-)所以我缺乏UML知识。


  • 1
    投票

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

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

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

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