0

示例如下:

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

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

  • 什么时候,Y是A类atrue
  • afalse且时b == 1,Y 为 B 类;
  • 当和a时,Y 是 C 类。falseb > 1

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

4

1 回答 1

1

您可以为此使用OCL语言。

首先,您应该扩展您的图表并引入三个具体的子类 、ABof CY然后您需要一个像这样的 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)))
于 2012-10-21T06:13:40.260 回答