如何在 class 图表中对健康属性的测量进行建模?
How can measurements of health properties be modeled in a class diagram?
我有一个用户 class 可以 "measure" 一些与日期相关的参数并将它们输入到应用程序中。所以 1 用户 -> 许多类型的许多参数与许多日期(许多测量)相关联。参数类型是固定的,可以是数字也可以是字符串,例如:体重,身高,卡路里摄入量,一些字符串……用枚举表示。
现在我的主要问题是:参数可以是不同数据类型(数字或字符串)这一事实是否意味着通用参数类型必须针对两个参数子组进行专门化?还是类型本身隐含了每种参数类型的数据类型? (例如 "weight" 表示它应该是一个数字)
考虑到 "Parameter" class 如何以正确的方式表示:
- 可以是数字也可以是字符串
- 还有一个超级用户class可以为特定用户添加参数
- 超级用户可以输入的参数是普通用户可以输入的一些参数加上超级用户独有的一些其他参数(例如:脂肪体重),因此不存在 1-1 对应关系
- 数值参数还有其他可以由超级用户修改的附加属性(例如:限制重量)
- 超级用户应该能够为某些参数添加 "notes"
我的困惑源于我没有 OOP 编程的背景并且我在网上找不到任何类似的例子。我只需要输入正确的方向即可。上图是否正确?为什么它很可能不是?目前的问题是如何实现超级用户也可以向 some 参数添加注释的事实。
我:
- 创建一个参数 class 并将枚举类型作为属性自动暗示输入的数据类型,例如 weight = number?
- 为每个用户创建两个子class,例如UserParameters 和 SuperUserParameters,虽然有些参数重叠?
- 保持原样并进行一些调整?
- 其他更好的方法?
我认为您根本不应该在 UML 级别上这样做。您将进入记忆 management/overlays。这些是您不应该关心的实现细节。相反,您将 HeartRate
和 Weight
作为不同的对象处理。他们不会有共同的"value",这只是一些内存分配。它们就是它们的本质,无论您需要字符串还是数字,都是一些 属性 不同的业务对象。
我想建议使用改进的术语。由于您的应用是关于(健康)属性 测量的,因此我会将您的 class 名称 "Parameter" 替换为 Measurement
。
以下模型应满足您的所有要求(下面讨论的除外):
请注意,两个子classes UserProperty
和SpecialProperty
只是定义了Property
的分区。可以通过向 Property
class 添加枚举属性 propertyCategory
来消除它们,将 USER_PPROPERTY
和 SPECIAL_PPROPERTY
作为其枚举文字。
唯一尚未涵盖的要求是
the numerical parameters have other additional attributes that can be
modified by the superuser (for example: limit weight)
这需要进一步说明。如果这些 "other additional attributes" 形成一个固定的集合,那么它们可以被建模为 Property
class.
的进一步属性
我有一个用户 class 可以 "measure" 一些与日期相关的参数并将它们输入到应用程序中。所以 1 用户 -> 许多类型的许多参数与许多日期(许多测量)相关联。参数类型是固定的,可以是数字也可以是字符串,例如:体重,身高,卡路里摄入量,一些字符串……用枚举表示。
现在我的主要问题是:参数可以是不同数据类型(数字或字符串)这一事实是否意味着通用参数类型必须针对两个参数子组进行专门化?还是类型本身隐含了每种参数类型的数据类型? (例如 "weight" 表示它应该是一个数字)
考虑到 "Parameter" class 如何以正确的方式表示:
- 可以是数字也可以是字符串
- 还有一个超级用户class可以为特定用户添加参数
- 超级用户可以输入的参数是普通用户可以输入的一些参数加上超级用户独有的一些其他参数(例如:脂肪体重),因此不存在 1-1 对应关系
- 数值参数还有其他可以由超级用户修改的附加属性(例如:限制重量)
- 超级用户应该能够为某些参数添加 "notes"
我的困惑源于我没有 OOP 编程的背景并且我在网上找不到任何类似的例子。我只需要输入正确的方向即可。上图是否正确?为什么它很可能不是?目前的问题是如何实现超级用户也可以向 some 参数添加注释的事实。
我:
- 创建一个参数 class 并将枚举类型作为属性自动暗示输入的数据类型,例如 weight = number?
- 为每个用户创建两个子class,例如UserParameters 和 SuperUserParameters,虽然有些参数重叠?
- 保持原样并进行一些调整?
- 其他更好的方法?
我认为您根本不应该在 UML 级别上这样做。您将进入记忆 management/overlays。这些是您不应该关心的实现细节。相反,您将 HeartRate
和 Weight
作为不同的对象处理。他们不会有共同的"value",这只是一些内存分配。它们就是它们的本质,无论您需要字符串还是数字,都是一些 属性 不同的业务对象。
我想建议使用改进的术语。由于您的应用是关于(健康)属性 测量的,因此我会将您的 class 名称 "Parameter" 替换为 Measurement
。
以下模型应满足您的所有要求(下面讨论的除外):
请注意,两个子classes UserProperty
和SpecialProperty
只是定义了Property
的分区。可以通过向 Property
class 添加枚举属性 propertyCategory
来消除它们,将 USER_PPROPERTY
和 SPECIAL_PPROPERTY
作为其枚举文字。
唯一尚未涵盖的要求是
the numerical parameters have other additional attributes that can be modified by the superuser (for example: limit weight)
这需要进一步说明。如果这些 "other additional attributes" 形成一个固定的集合,那么它们可以被建模为 Property
class.