【问题标题】:Is there a way to associate an enum literal with classes in UML class diagram?有没有办法将枚举文字与 UML 类图中的类相关联?
【发布时间】:2020-06-24 18:55:09
【问题描述】:

我正在尝试设计一个 UML 类图,它代表基于角色与其他类交互的用户,我选择将角色表示为枚举类,如下所示:

我想表达的是,只有具有角色 ADMIN 的用户才能创建项目,只有 MANAGER 可以修改它,并且每个 CONSULTANT 都只能参与其中,这可以通过角色的枚举表示来实现吗?

【问题讨论】:

  • 我可以使用 uml 约束吗?
  • 我可以为此使用 uml 约束吗?”:是的
  • 但是你在 UserRoleName 之间的关系是错误的,首先没有理由使用 RoleName要知道 Users (而 enum 不能这样做),所以关系必须是定向的(User ---> RoleName),其次使用多重性“”意味着给定的*用户可以有多个角色,是真的吗?
  • @bruno 是的,你是对的,我将修改问题,并且我将使用 uml 约束添加我的答案。
  • 坦率地说,你对我的回答不感兴趣,我删除它没用...

标签: enums uml enumeration class-diagram


【解决方案1】:

一种解决方案是像这样使用 uml 约束:

【讨论】:

  • 它们是您的图表中的一些错误/错别字,最后我给出了一个答案,以比通过对该答案的评论更好的方式指出它们
【解决方案2】:

作为枚举 RoleName 最好使用<<enumeration>> 绘制(如图 7.1 - Object Constraint Language - formal/2014-02-03 的类图示例第 7 页)

如果 Role 只是 RoleName 的一个信封,则该类是无用的(这就是我在下图中的假设)

关系创建、管理、参与不代表属性,多重性在这种情况下没有意义。关系 role 具有默认的多重性 1

您的约束是先决条件,它们的上下文是类 User,而在 OCL 中,相等运算符是“=”,因此您的图表可以是:

【讨论】:

    【解决方案3】:

    您正在混合静态表示和行为。 UserProject一个 关联(不是 3 个不同的):

    可以在协作中展示不同的行为(源自某些 UC)。例如。在这样的广告中:

    只是一个草图,但这应该可以为您提供要点。

    【讨论】:

      猜你喜欢
      • 2016-08-02
      • 2011-11-17
      • 2010-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-11
      • 2018-07-31
      • 2011-06-26
      相关资源
      最近更新 更多