【问题标题】:Is this UML association matching the code correctly?这个 UML 关联是否正确匹配代码?
【发布时间】:2020-04-04 02:36:40
【问题描述】:

我正在尝试学习 UML 图,但我发现这部分很难理解。我已经搜索了一个很好的解释,但找不到。 我知道ProgramCordinator 应该有一个带有Teachers 的列表。 但是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


    【解决方案1】:

    关联上的箭头表示可导航性。箭头末端的物体可以被另一侧的物体看到。可以说是弃用了。相反,您通过使用大点和角色名称来记录拥有的属性。见下文。

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

    • 老师应该有一个项目协调员?: 不,只是每个老师只能有一个协调员。方向告诉我们不会有回头路。但是,从商业角度来看,导航没有意义。可能你同意老师必须认识他的协调员,因为他们必须互相交谈。编码人员意识到了这一点,并做出了比 UML 告诉的更好的实现。

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

    如果 UML 是在代码之后制作的:

    • 导航箭头错误
    • 缺少对象创建操作

    现在(不显示第二个缺陷)UML 应该是

    一个协调不能分配给无穷无尽的老师。每位教师只有一名协调员。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      相关资源
      最近更新 更多