【问题标题】:UML class diagram with inheritance depending on properties values具有取决于属性值的继承的 UML 类图
【发布时间】:2012-10-20 22:46:46
【问题描述】:

示例如下:

 -----------                -------------------- 
|     X     | 1..1    0..1 |    <<abstract>>    |
|           |<>------------|         Y          |
|-----------|              |--------------------|
| +a:bool   |              | +b:positiveInteger |
'-----------'              '--------------------'

在现实世界中,抽象 Y 可以是具体的 A、B 或 C,根据以下规则:

  • atrue时,Y为A类;
  • afalseb == 1时,Y是B类;
  • afalseb &gt; 1 时,Y 为C 类。

您将如何在 UML 类图中对这些继承规则进行建模?

【问题讨论】:

  • 我不会。这些是侧面约束,不属于类图本身。

标签: inheritance uml class-diagram


【解决方案1】:

您可以为此使用OCL 语言。

首先你应该扩展你的图表并引入Y的三个具体子类ABC,然后你需要一个像这样的OCL约束:

context X:
inv: (self.a implies self.y isOclTypeOf(A)) and
     (((not self.a) and (not self.y.isOclUndefined())) implies (self.y.b = 1 implies self.y.isOclTypeOf(B))) and
     (((not self.a) and (not self.y.isOclUndefined())) implies (self.y.b > 1 implies self.y.isOclTypeOf(C)))

【讨论】:

猜你喜欢
  • 2016-08-09
  • 1970-01-01
  • 2020-05-10
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
  • 2017-02-09
  • 2019-09-25
  • 2023-02-02
相关资源
最近更新 更多