根据角色的用户操作的类图

问题描述 投票:0回答:1

我是UML的初学者,我有一个PHP应用,其中有一个管理员区域和用户区域。用户可以具有admin角色,user角色或两者兼有。在用户界面中,我们可以提交薪水预付款的salary_request,然后在管理面板中,可以acceptdeny提交salary_request,这将仅更改实际[ C0]。

数据库如下:

  • status表:ID,电子邮件,密码,名字,姓氏
  • [salary_request表:ID,名称
  • [users:user_id,role_id(rolesuser_role之间的关系表]]
  • users:id,金额,日期,request_by,validated_by,状态

所以类是:

  • roles
  • salary_requests
  • User
  • Role枚举

我不知道如何在类图中添加这些关系/规则:

  • SalaryRequest可以扮演一个或多个角色
  • 如果Status是简单用户,则他只能提交User
  • 如果User是管理员,他可以接受或拒绝SalaryRequests
  • 如果User同时扮演SalaryRequestUser的角色,他可以添加admin并接受或拒绝它们。

我能弄清楚的是这个类图还不完整,我不确定到目前为止是否正确:

user

uml class-diagram
1个回答
0
投票
用户可以具有一个或多个角色
可以将多重性应用于用户和角色之间的关联以进行识别。在UML中,多重性以文本形式写在关联的每一端,可以是绝对值列表,也可以是范围为“ Lower .. Upper”形式,其中“ *”是通配符,表示“ any”。

例如:

0 .. *表示零或很多。

    1 .. *表示一个或多个。
  • 1,2仅表示一个或两个。
  • 1表示一个。
  • 因此,用户和角色之间的关联在用户端可能具有多个“ 1”(恰好是一个),在角色端具有多个“ 1 .. *”(一个或多个)。
  • 如果用户是简单用户,则只有在以下情况下,他才能提交SalaryRequests:用户是管理员,如果用户,他可以接受或拒绝SalaryRequest兼有管理员和用户角色,他可以添加SalaryRequests并接受或拒绝它们。

  • 这很难解释如何表达,因为答案取决于您要解释的内容和原因。

    类图表示代码的

    结构的各个方面,而不是其行为,而您想要在此处表达的内容更多的是[[behavioural。

    您的图中用户和SalaryRequest之间的关联已经足够广泛,可以覆盖您在上面确定的所有规则,因此,仅从类设计的角度来看,您可以保持原样并解释系统的行为规则。以其他方式(例如,使用用例或活动图进行解释)。

    但是,如果您认为规则足够强大,需要在类的structure中进行编码,则必须开始在封装了类的类中派生出不同的子类型或组合。您想要的行为,然后使用它们之间的关联将规则投射到结构中。但是,请注意:我不确定您实际上是要从结构上做到这一点,因为与更改行为相比,更改结构的成本通常更高且影响更深。
    © www.soinside.com 2019 - 2024. All rights reserved.