Uml 从类图制作用例图时的困惑

Uml 从类图制作用例图时的困惑,uml,class-diagram,use-case,Uml,Class Diagram,Use Case,我试图借助我的类图来制作一个用例图,但问题是我在这里感到困惑,我应该采取什么作为参与者,将要采取什么行动,我应该采取什么属性,以及在哪里使用? 请帮忙。提前感谢。您不能从类设计创建用例。只有相反的方向。表单遵循函数,反之亦然。您的类图表明您还不熟悉类建模。你的课程预订机票和付款听起来像是用例,而不是合适的课程。类是处理这些数据的数据和功能的容器,而用例是参与者在系统帮助下执行的工作 为您提供所需的帮助对于这个平台来说可能太广泛了。学习关于UML建模的介绍性文本,了解什么可以用哪种类型的模型来表达

我试图借助我的类图来制作一个用例图,但问题是我在这里感到困惑,我应该采取什么作为参与者,将要采取什么行动,我应该采取什么属性,以及在哪里使用

请帮忙。提前感谢。

您不能从类设计创建用例。只有相反的方向。表单遵循函数,反之亦然。

您的类图表明您还不熟悉类建模。你的课程
预订机票
付款
听起来像是用例,而不是合适的课程。类是处理这些数据的数据和功能的容器,而用例是参与者在系统帮助下执行的工作


为您提供所需的帮助对于这个平台来说可能太广泛了。学习关于UML建模的介绍性文本,了解什么可以用哪种类型的模型来表达。不要觉得必须使用语言提供的所有元素。有很多用例模型不需要包含和扩展关系。

正如Thomas指出的,从类设计到用例没有算法方法。事实上,对于一个给定的类图,甚至根本不允许存在用例(例如,如果类只表示业务对象之间的关系而不表示参与者)

但是,通过从人的角度分析特定的图表,可以很好地推断出类图:

1)确定候选演员

参与者指定用户或与主体交互的任何其他系统所扮演的角色。图表中的候选用户包括:
访问者
管理员
、注册用户

电影
图书票
付款
显然不代表用户的角色

2)确定候选用例

用例定义了系统和参与者之间的交互,以实现某个目标。因此,让我们集思广益,找出所有看起来像是互动的东西:

  • 非常明确的候选用例:
    订票
    (注册用户的类和方法),
    付款
    (注册用户的类和方法)

  • 不太明确的候选用例或交互:
    查看电影
    (注册用户的关系和方法),
    更新电影
    (关系),
    添加电影记录
    (管理方法),
    更新电影记录
    (管理方法),
    删除电影记录
    (管理方法),
    确认访客注册
    (根据关系推断),'Get registered
    (用户方法),
    cancel ticket
    (以及
    注册用户
    的方法),
    登录
    (注册用户
    的方法),
    注销
    (注册用户
    的方法),
    更新可用座位
    (订票方式),
    确认交易
    (方式),
    退票退款
    (方式)

  • 隐式/推断的用例或交互:
    创建和维护管理员
    创建访问者
    注册和维护注册用户帐户
    ,还有其他吗

3)整理用例

在所有确定的潜在用例和交互中,不是所有的都应该得到用例状态。然后,您必须找到哪些是用例,哪些只是同一用例的一部分。例如:

  • 更新电影目录
    将由
    更新电影
    添加电影记录
    更新电影记录
    删除电影记录
    组成
  • 获得注册
    确认访客注册
    显然是同一用例的一部分,因为目标是相同的:注册用户
  • 。。。 我让你作为执行官来处理剩下的事情
4)回顾演员

在确定了有意义的用例之后,您可能希望审查您的候选参与者:

  • 一些候选演员可能看起来实际上只是与用户无关的对象(这里不是这种情况,但可能是,例如,如果你有一个电影制片人,这只是一个与电影相关的信息,而不是系统的用户)

  • 为您已经确定的重要用例确定明显缺少的参与者。举个例子,我最初认为这是一个互联网电影行业。但是
    更新座位
    的方法显然表明我们在谈论一个真正的剧院。那么,谁将从用户那里获得付款、分发票据、报销与系统相关的费用呢?如果只是在线预订系统,我们很好。如果cahs桌面操作员也应使用该系统,则我们应添加此参与者

  • 找出候选演员之间的关系。注册用户首先是访问者。我们是否在图表中同时表示这两种情况

5)绘制您的用例图

现在您拥有了所有的元素,您可以制作您的用例图了。但是你仍然需要决定你想要表现的细节层次。这里有一项建议:


谢谢。我也有同样的感觉。但若我正在制作用例,那个么我就有一个问题,那个就是要添加哪个部分以及要添加哪个部分。你能帮忙吗?如果你问另一个问题:如何在类图中显示UC的I/E,我可能会给出答案(你可能不喜欢)。但这将是另一个问题。这个问题只有这个答案。我读过这个问题后甚至没有看类图,但你是绝对正确的。非常感谢你用非常简单的方式解释这些事情