【问题标题】:UML Class Diagram - Bidirectional AssociationUML 类图 - 双向关联
【发布时间】:2018-08-24 23:48:21
【问题描述】:

场景

大学的老师可以使用学生的名字和姓氏来搜索学生。同样,学生可以使用他们的名字和姓氏来搜索老师。

我做了什么

我使用了带有标签的关联行,searchesFor,表示教师可以搜索学生,反之亦然。我还使用了不超过一个多重符号。

问题

如果我不使用 searchesFor 旁边的实心箭头来指示关系的方向,我的解决方案会自然地按照场景中的说明进行阅读吗?

【问题讨论】:

  • 并非如此。 1 的多重性严格来说是 1,不超过。那将是 0..1。你所拥有的是告诉我一个老师与一个学生相关联。你想表达什么?我会认为老师和学生会是多对多的关系吗?否则互相寻找对方就没有意义了?

标签: uml diagram class-diagram


【解决方案1】:

没有。

UML 规范在这种情况下没有提供任何标准。您通常不会显示实心三角形,仅在理解不清楚时才放置它们,以便读者认为您只是没有注意到这里的歧义。

您可以使用文本注释(评论)使其清晰。

还要注意“类似数据库”的多重用法。每一端的多重性意味着每个链接端只有一个对象。如果某位教师搜索了一名学生,您是否希望将此学生的搜索限制为仅限该一位教师?

最后搜索的是一个非常短暂的持久关系。你确定值得这样记录吗?

【讨论】:

  • 对不起,我的答案的第一个版本提到了符号的完全不同的部分。现已修复。
【解决方案2】:

我认为你的设计是错误的。必须有一些实例来收集所有教师和所有学生,您可以从其中获得姓名:

当然,您可以简单地将学生与教师以 m-n 关系联系起来。但这会导致糟糕的设计。当您插入新学生时,必须将其添加到所有现有教师(以便他们可以适当地找到)。反之亦然,老师/学生也以同样的方式应用。

您是否有一个 Staff 实例或教师和学生的单独实例取决于。

【讨论】:

    猜你喜欢
    • 2013-03-07
    • 2014-07-01
    • 1970-01-01
    • 2010-12-26
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多