Uml 如何为简单的训练应用程序建模(类图)

Uml 如何为简单的训练应用程序建模(类图),uml,modeling,class-diagram,class-design,Uml,Modeling,Class Diagram,Class Design,我开发了一个简单的锻炼Android应用程序,没有考虑uml类图。现在我想重构它 应用程序的工作原理 在主屏幕上,只有一个按钮可以开始训练课程。点击它,将触发10秒的倒计时,等待该人员做好准备 然后,应用程序将显示几个练习,一次一个,中间有一个休息间隔。每次运动需要30秒;每次休息时间间隔为10秒。在每次练习/休息时,应用程序都会显示以下信息: 当前练习/休息的倒计时计时器 当前练习的名称,或者在休息时间间隔的情况下,下一个练习的名称 说明当前(或下一个)练习的图像 暂停按钮 最后,当训练课程结

我开发了一个简单的锻炼Android应用程序,没有考虑uml类图。现在我想重构它

应用程序的工作原理 在主屏幕上,只有一个按钮可以开始训练课程。点击它,将触发10秒的倒计时,等待该人员做好准备

然后,应用程序将显示几个练习,一次一个,中间有一个休息间隔。每次运动需要30秒;每次休息时间间隔为10秒。在每次练习/休息时,应用程序都会显示以下信息:

  • 当前练习/休息的倒计时计时器
  • 当前练习的名称,或者在休息时间间隔的情况下,下一个练习的名称
  • 说明当前(或下一个)练习的图像
  • 暂停按钮
  • 最后,当训练课程结束时,应用程序会显示GIF作为庆祝。最后一个屏幕上还有一个“回家”按钮

    UML类图 我制作了以下UML类图来为这个应用程序建模:

    我的怀疑 但是,我不确定这是否是对所描述的场景建模的正确方法。如果我能得到一些反馈/评论,我将不胜感激

    我怀疑的一个主要问题是如何处理
    WorkoutActivity
    类。它在图表中没有属性,因为我无法以建模这个问题的方式为它考虑任何属性。因为它是空的,所以对我来说有点奇怪。我曾考虑过使用list类(例如,
    exerciseList
    )对练习集进行建模,但我还是有点拘泥于这个图表


    另一个问题是关于按钮,我是否应该将它们包括在图表中?

    这取决于您想要表示什么

    如果您的模型用于训练领域,请保持简单:不需要按钮(用户界面对象)和计时器(执行上下文)

    在叙述中,你提到了“训练课程”。我假设这就是
    WorkoutActivity
    的内容。所以最好与命名保持一致

    您可以很容易地想到属性:它是会话的日期和时间(以及用户帐户?):这可以让用户在培训中遵循他/她的规律

    一种更通用的方法是让一个由多个抽象的
    WorkoutActivity
    组成的
    WorkoutSession
    (注意:与当前图表中的含义不同)。每个
    WorkoutActivity
    都将是一个专业化的活动:要么是
    练习
    ,要么是
    休息时间
    ,要么是
    信息活动
    (例如
    最终性
    ,但为什么不同时也是一个
    开始性
    活动,以鼓励新用户,以及其他偶尔的活动,如提示和技巧,或广告)。比如:


    每次练习后有一次中断的约束不需要是结构化的:它可以是在合成或生成会话时强制执行的约束。如果将来您希望每2或3次练习(例如:高级用户)就有一次休息,这将为您提供更大的灵活性。

    谢谢您的反馈。我认为计时器是UI的一个重要部分,因为每个练习/休息都有计时器,所以我决定将其包含在类图中。关于您提到的一般方法,我认为它可以用继承来表示:
    exercise
    BreakInterval
    WorkoutActivity
    的子类。你是这么想的吗?然而,在应用程序中,
    最终性
    不是锻炼活动的一部分,因此我不会将其包括在继承中。(事实上,它只是一个视图类,因为在Android开发中,一个视图,一个UI屏幕,后缀是“活动”。所以你可以把“最终性”看作是“最终性屏幕”的同义词)最后一件事,你说“[一次中断的约束]可以是你在合成或生成会话时强制执行的约束”。这会以某种方式影响类图吗?如何表示?@EstevaoCostaG3如果模型是设计模型而不是域模型,则可以显示设计的相关类,包括UI和控件类。您可以使用entity/control/boundary来澄清类的类型。@EstevaoCostaG3没问题:如果您觉得最终活动非常不同,您可以自由保留一个单独的类:这是您的设计,您是这方面的船长;-)(出于好奇,如果你完成了这个应用程序,并在应用程序商店中提供了它,只需在这里发布一个链接:我还有几公斤要释放,这个概念看起来不错;-)