【问题标题】:How to associate these classes in UML Class Analysis Diagram?如何在 UML 类分析图中关联这些类?
【发布时间】:2016-03-02 19:03:17
【问题描述】:

我正在尝试为一个大学项目设计 UML 分析类图。我的 UML 图如下所示:

我遇到了两个不同的问题:

  1. 用户可以有多个角色。具有管理员角色的用户可以管理其他用户及其角色。如何在 UML 中说明这种关联?
  2. 用户使用刷卡进入房间。如何在 UML 中显示这种关联?

【问题讨论】:

    标签: uml data-modeling model-associations


    【解决方案1】:

    您对分析模型有一个很好的开端。我会做的一些事情:

    • 具体化User 和Role 之间的关联(或使其成为关联类),称为Role Assignment。
    • 为每个关联的每一端添加一个动词短语属性名称。例如,Manager 授权 Role Assignment 和Role Assignment 授权者 Manager。

    这是我头顶上第一个例子:

    我留下了一堆东西,包括操作,我会压制这些东西以供 SME 验证。我不能为你做所有的工作! ?

    【讨论】:

    • 听起来不错。我建议您添加显示 UML 图的图像或 ascii,以便了解您的答案
    • @Jim L. 是的,请加一张UML图,这样会更容易理解。
    • 另外,我更新了 SwipeCard 部分,因为它非常简单。具有经理角色的用户部分仍然不明确,请检查:[链接](drive.google.com/file/d/0B6_hNGJUq8_2RzBraENZS29RU1k/…)
    • @user3566211:这更容易理解吗?分析模型的一个相当重要的一点是准确地捕获领域并与非技术专家验证理解。我认为这很容易理解,因为它是简单的英语。
    【解决方案2】:

    简短的快速回答

    创建Role 类,而不是Manager 类。

    冗长无聊的答案

    我有一个类似的案例,但最终有一个类似的Manager 类,后来添加了一个MiddleManager 类,它也可以管理其他类。

    ..........................
    ..+-----------------+.....
    ..|      User       |--+..
    ..+-----------------+..|..
    ...........^...........|..
    ........../ \..........|..
    ..........\ /..........|..
    ...........v...........|..Can Manage Other Users
    ...........|...........|..
    ...........|...........|..
    ...........|...........|..
    ..+-----------------+..|..
    ..|      Role       |--+..
    ..+-----------------+.....
    ..| [+] CanManage() |.....
    ..+-----------------+.....
    ..........................
    

    所以,我将一个函数或属性 canManage() 移动到 Role 类。

    正如@Thomas Kilian 提到的,您的问题更多是行为特征,而不是结构特征。行为在类图中表示为方法或属性。

    更新:

    ..........................
    ..+-----------------+.....
    ..|      User       |--+..
    ..+-----------------+..|..«Can Manage Other Users»
    ..| [+] CanManage() |--+..
    ..+-----------------+.....
    ...........^..............
    ........../ \.............
    ..........\ /.............
    ...........v..............
    ...........|..............
    ...........|..............
    ...........|..............
    ..+-----------------+.....
    ..|      Role       |.....
    ..+-----------------+.....
    ..........................
    

    另一个版本可能包含自引用关联。

    【讨论】:

    • 拥有 Manager 的用户不仅可以管理角色,还可以管理其他用户。我试图在 UML 中展示这一点。我理解你关于这个问题是行为问题的观点,但我认为仍有一些方法可以在 UML 类分析图中显示这一点,尽管没有详细说明。
    • 仅从用户到用户的自我关联怎么样。由于具有管理员角色的用户可以管理其他用户,因此该用户也可以管理他们的角色。但这是一个有效的假设或方法吗?
    • 是的,自关联也适用。请记住,做事或制作模型的方法可能不止一种,而且所有方法都可能是正确的。
    • 请给我您对这种方法的最终意见或意见,我应该这样做吗?
    • 是的,没问题。但是,如果您的作业包括其他东西,如顺序图或活动图,那么可能其他解决方案可能适用。如果它只是一个类图,那么自关联图就可以了。
    【解决方案3】:
    1. 为角色类提供一些用于预期目的的管理方法。但是行为上下文更好地显示在活动或序列图中,您可以在其中详细说明“管理”的作用。
    2. 添加从用户到 SwipeCard 的关联并将其命名为“使用”。进一步添加从 SwipeCard 到 Room 的关联并将其命名为“opens”。

    回复1:

    这些是操作角色的方法和

    显示经理如何使用它们。约束告诉只有经理可以使用这个方法。

    【讨论】:

    • Thomas,你回答的第二部分很有说服力,我决定听从你的建议。但是,我在第 1 部分中没有理解您的意思。您介意在 UML 中显示这一点吗?
    • 见我的补充。很好,你问了。我解释错了,但画出来后,错误很明显,我可以改正。
    • Thomas,你是用时序图来建议的,我想用分析图来完成,请查看更新后的图:drive.google.com/file/d/0B6_hNGJUq8_2RzBraENZS29RU1k/…
    • 分析还涉及对行为的描述。您可以只使用静态类(/分析)图并添加 cmets。但是使用行为图会更清楚地说明问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多