如何在UML Class分析图中关联这些类?
How to associate these classes in UML Class Analysis Diagram?
我正在尝试为大学项目设计 UML 分析 Class 图。我的 UML 图如下所示:
我遇到了两个不同的问题:
- 用户可以有多个角色。具有管理者角色的用户可以管理其他用户及其角色。如何在UML中说明这种关联?
- 用户使用刷卡方式进入房间。如何在 UML 中显示这种关联?
- 为角色 class 提供一些用于预期目的的管理方法。但是行为上下文在 activity 或序列图中更好地显示,您可以在其中详细说明 "manage" 的作用。
- 添加一个从 User 到 SwipeCard 的关联,并将其命名为 "use"。进一步添加一个从 SwipeCard 到 Room 的关联,并将其命名为 "opens".
回复 1:
这些是操作角色的方法,
显示经理如何使用它们。约束说明只有经理可以使用此方法。
简短快速回答
制作 Role
class,而不是 Manager
class。
冗长无聊的回答
我有一个类似的案例,但是,最终,有一个类似的 Manager
class,后来添加了一个 MiddleManager
class 也可以管理其他 classes.
..........................
..+-----------------+.....
..| User |--+..
..+-----------------+..|..
...........^...........|..
........../ \..........|..
..........\ /..........|..
...........v...........|..Can Manage Other Users
...........|...........|..
...........|...........|..
...........|...........|..
..+-----------------+..|..
..| Role |--+..
..+-----------------+.....
..| [+] CanManage() |.....
..+-----------------+.....
..........................
因此,我将函数或属性 canManage()
移动到 Role
class。
正如@Thomas Kilian 提到的,你的问题更多的是行为特征,而不是结构特征。在 class 图中,行为表示为方法或属性。
更新:
..........................
..+-----------------+.....
..| User |--+..
..+-----------------+..|..«Can Manage Other Users»
..| [+] CanManage() |--+..
..+-----------------+.....
...........^..............
........../ \.............
..........\ /.............
...........v..............
...........|..............
...........|..............
...........|..............
..+-----------------+.....
..| Role |.....
..+-----------------+.....
..........................
另一个版本可能包含自引用关联。
您对分析模型有了一个很好的开端。我会做的一些事情:
- 重新定义
User
和 Role
之间的关联(或使其成为关联 class),称为 Role Assignment
。
- 在每个关联的每一端添加一个动词短语 属性 名称。例如,
Manager
授权 Role Assignment
和 Role Assignment
授权 Manager
.
这里是第一个从我脑海中截取的例子:
我遗漏了很多东西,包括操作,我会抑制这些内容以与 SME 进行验证。我无法为您完成 所有 工作!
我正在尝试为大学项目设计 UML 分析 Class 图。我的 UML 图如下所示:
我遇到了两个不同的问题:
- 用户可以有多个角色。具有管理者角色的用户可以管理其他用户及其角色。如何在UML中说明这种关联?
- 用户使用刷卡方式进入房间。如何在 UML 中显示这种关联?
- 为角色 class 提供一些用于预期目的的管理方法。但是行为上下文在 activity 或序列图中更好地显示,您可以在其中详细说明 "manage" 的作用。
- 添加一个从 User 到 SwipeCard 的关联,并将其命名为 "use"。进一步添加一个从 SwipeCard 到 Room 的关联,并将其命名为 "opens".
回复 1:
简短快速回答
制作 Role
class,而不是 Manager
class。
冗长无聊的回答
我有一个类似的案例,但是,最终,有一个类似的 Manager
class,后来添加了一个 MiddleManager
class 也可以管理其他 classes.
..........................
..+-----------------+.....
..| User |--+..
..+-----------------+..|..
...........^...........|..
........../ \..........|..
..........\ /..........|..
...........v...........|..Can Manage Other Users
...........|...........|..
...........|...........|..
...........|...........|..
..+-----------------+..|..
..| Role |--+..
..+-----------------+.....
..| [+] CanManage() |.....
..+-----------------+.....
..........................
因此,我将函数或属性 canManage()
移动到 Role
class。
正如@Thomas Kilian 提到的,你的问题更多的是行为特征,而不是结构特征。在 class 图中,行为表示为方法或属性。
更新:
..........................
..+-----------------+.....
..| User |--+..
..+-----------------+..|..«Can Manage Other Users»
..| [+] CanManage() |--+..
..+-----------------+.....
...........^..............
........../ \.............
..........\ /.............
...........v..............
...........|..............
...........|..............
...........|..............
..+-----------------+.....
..| Role |.....
..+-----------------+.....
..........................
另一个版本可能包含自引用关联。
您对分析模型有了一个很好的开端。我会做的一些事情:
- 重新定义
User
和Role
之间的关联(或使其成为关联 class),称为Role Assignment
。 - 在每个关联的每一端添加一个动词短语 属性 名称。例如,
Manager
授权Role Assignment
和Role Assignment
授权Manager
.
这里是第一个从我脑海中截取的例子:
我遗漏了很多东西,包括操作,我会抑制这些内容以与 SME 进行验证。我无法为您完成 所有 工作!