布尔型或枚举型属性会影响关联数吗?

问题描述 投票:0回答:1

布尔值或类型属性可以影响其可以具有的关联数量吗?我怎样才能做到这一点,例如,如果布尔属性设置为 1,则意味着仅当关联类的年份不同时,e3 才能与 e1 关联,而如果为 0,则意味着可以有更多关联 布尔值为 1 时的示例 e3-1300-e1 e3-1300-e1 错误 布尔值为 0 e3-1300-e1 e3-1300-e1

这样的推理正确吗? 解决方案是否可以消除主要关联并在子类中创建一个新关联,因为它们是特定于这些情况的?

enter image description here

uml associations class-diagram
1个回答
0
投票

我认为实现这一目标有两种主要方法。

一种方法是专业化。您可以将 E3 专门化为 E3-b1 和 E3-b2,而不是使用布尔值(或枚举)控制 E3 行为或结构。这些专业化将自动继承 E3 关联,因此也继承 E2 关联。

对于其中一个专业化,您可以重新定义关联及其多重性(可以在末尾使用 {redefines ...} ,或者更好地使用关联之间的继承。这是显示异常的一种非常直观的方式。

如果您不喜欢这种方法,例如因为您的 UML 工具不支持关联之间的良好继承,或者因为您的实现不允许在运行时更改类,那么您需要布尔值才能更改,您可以选择第二种方法:

只需在关联或 E3 上添加约束,即可限制链接的 E1 实例的最大数量。这可以通过以下任一方式完成:

  • {} 之间的明文约束解释了限制
  • 或者在 OCL 上表达的正式约束,它可以轻松地允许对链接实例集进行谓词(对于 OCL 专家 - Jim 来说很容易?)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.