我有一个 User 类,可以“测量”与日期相关的一些参数并将它们输入到应用程序中。因此,1 个用户 -> 与许多日期(许多测量)相关联的许多类型的许多参数。参数类型是固定的,可以是数字或字符串,例如:体重、高度、卡路里摄入量、一些字符串......它们表示为枚举。
现在我的主要问题是:参数可以是不同的数据类型(数字或字符串)这一事实是否意味着通用参数类型必须对两个参数子组进行专门化?或者每种类型参数的数据类型是否隐含在类型本身中? (例如“权重”意味着它应该是一个数字)
考虑到以下情况,如何以正确的方式表示“Parameter”类:
- 它可以是数字或字符串
- 还有一个 super 用户类,可以为特定用户添加参数
- super 用户可以输入的参数是普通用户可以输入的一些参数加上 super 用户独有的一些其他参数(例如:脂肪体重),因此不存在 1-1 对应关系
- 数字参数还有其他可由 super 用户修改的附加属性(例如:限制重量)
- 据说 super 用户应该能够为某些参数添加“注释”
我的困惑源于这样一个事实:我没有 OOP 编程背景,并且在网上找不到任何类似的示例。我只需要一个正确方向的输入。图中的图表正确吗?为什么很可能不是?目前的问题是如何实现 super 用户还可以向某些参数添加注释。
我会吗:
- 创建一个以枚举类型作为属性的单个参数类,该属性自动暗示输入的数据类型,例如权重 = 数字?
- 为每个用户创建两个子类,例如UserParameters 和 SuperUserParameters,尽管有些参数重叠?
- 保持原样并进行一些调整?
- 还有其他更好的方法吗?
最佳答案
我想建议使用改进的术语。由于您的应用与(健康)属性测量有关,因此我会将您的类名“Parameter”替换为 Measurement
。
以下模型应该满足您的所有要求(下面讨论的除外):
请注意,两个子类UserProperty
和SpecialProperty
只是定义了Property
的分区。可以通过向 Property
类添加枚举属性 propertyCategory
来消除它们,并将 USER_PPROPERTY
和 SPECIAL_PPROPERTY
作为其枚举文字。
唯一尚未涵盖的要求是
the numerical parameters have other additional attributes that can be modified by the superuser (for example: limit weight)
这需要进一步细化。如果这些“其他附加属性”形成固定集,则可以将它们建模为 Property
类的进一步属性。
关于uml - 如何在类图中对健康属性的测量进行建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61294132/