如何为简单的锻炼应用程序建模(Class 图)
How to model a simple Workout app (Class diagram)
我开发了一个简单的锻炼 Android 应用程序,没有考虑 uml class 图。现在我想重构它。
应用程序的工作原理
在主屏幕上,只有一个按钮可以开始锻炼。通过点击它,一个 10 秒的倒计时被触发,等待这个人准备好。
然后,该应用程序将显示多个练习,一次一个,它们之间有休息时间。每个练习需要 30 秒;每次休息间隔,10 秒。在每个 exercise/break 上,该应用会显示以下信息:
- 当前的倒数计时器exercise/break;
- 当前练习的名称,或者在休息间隔的情况下,下一个练习的名称;
- 说明当前(或下一个)练习的图像;
- 一个暂停按钮。
最后,当锻炼结束时,该应用程序会显示一个 GIF 作为庆祝。在最后一个屏幕上还有一个 "Go home" 按钮。
UML class 图
我制作了以下 UML class 图来为这个应用建模:
我的疑惑
但是,我不太确定这是否是为所描述的场景建模的正确方法。如果我能得到一些关于它的 feedback/review,我将不胜感激。
我怀疑的主要事情之一是处理 WorkoutActivity
class。它在图表中没有任何属性,因为我无法按照我对这个问题建模的方式来考虑它的任何属性。因为它是空的,所以对我来说有点奇怪。我考虑过使用列表 class(例如 ExercisesList
)来模拟练习集,但我有点受困于这张图。
另一个问题是关于按钮的,我应该把它们包括在图表中吗?
这完全取决于你想代表什么。
如果您的模型适用于锻炼领域,请保持简单:不需要按钮(用户界面对象)和计时器(执行上下文)。
您在叙述中提到了 "workout session"。我假设这就是 WorkoutActivity
的意思。所以最好与命名保持一致。
你可以很容易地想到属性:它是会话的日期和时间(和用户帐户?):这可以让用户在训练中遵循 his/her 规律。
一种更通用的方法是让 WorkoutSession
由多个抽象 WorkoutActivity
组成(注意:与您当前图表中的含义不同)。每个 WorkoutActivity
都会是一个专业化:Exercise
、BreakInterval
或 InfoActivity
(例如 FinalActivity
,但为什么不也是 StartActivity
activity 以鼓励新用户和其他偶尔的活动,例如提示和技巧或广告)。类似于:
每次练习后休息一次的限制不需要是结构性的:它可以是您在组成或生成会话时强制执行的限制。这给了你更大的灵活性,如果将来你想每 2 或 3 个练习休息一下(例如:高级用户)。
我开发了一个简单的锻炼 Android 应用程序,没有考虑 uml class 图。现在我想重构它。
应用程序的工作原理
在主屏幕上,只有一个按钮可以开始锻炼。通过点击它,一个 10 秒的倒计时被触发,等待这个人准备好。
然后,该应用程序将显示多个练习,一次一个,它们之间有休息时间。每个练习需要 30 秒;每次休息间隔,10 秒。在每个 exercise/break 上,该应用会显示以下信息:
- 当前的倒数计时器exercise/break;
- 当前练习的名称,或者在休息间隔的情况下,下一个练习的名称;
- 说明当前(或下一个)练习的图像;
- 一个暂停按钮。
最后,当锻炼结束时,该应用程序会显示一个 GIF 作为庆祝。在最后一个屏幕上还有一个 "Go home" 按钮。
UML class 图
我制作了以下 UML class 图来为这个应用建模:
我的疑惑
但是,我不太确定这是否是为所描述的场景建模的正确方法。如果我能得到一些关于它的 feedback/review,我将不胜感激。
我怀疑的主要事情之一是处理 WorkoutActivity
class。它在图表中没有任何属性,因为我无法按照我对这个问题建模的方式来考虑它的任何属性。因为它是空的,所以对我来说有点奇怪。我考虑过使用列表 class(例如 ExercisesList
)来模拟练习集,但我有点受困于这张图。
另一个问题是关于按钮的,我应该把它们包括在图表中吗?
这完全取决于你想代表什么。
如果您的模型适用于锻炼领域,请保持简单:不需要按钮(用户界面对象)和计时器(执行上下文)。
您在叙述中提到了 "workout session"。我假设这就是 WorkoutActivity
的意思。所以最好与命名保持一致。
你可以很容易地想到属性:它是会话的日期和时间(和用户帐户?):这可以让用户在训练中遵循 his/her 规律。
一种更通用的方法是让 WorkoutSession
由多个抽象 WorkoutActivity
组成(注意:与您当前图表中的含义不同)。每个 WorkoutActivity
都会是一个专业化:Exercise
、BreakInterval
或 InfoActivity
(例如 FinalActivity
,但为什么不也是 StartActivity
activity 以鼓励新用户和其他偶尔的活动,例如提示和技巧或广告)。类似于:
每次练习后休息一次的限制不需要是结构性的:它可以是您在组成或生成会话时强制执行的限制。这给了你更大的灵活性,如果将来你想每 2 或 3 个练习休息一下(例如:高级用户)。