如何在UML类图中指定参数的条件



如何在UML类图中为方法参数指定条件?

例如以下方法:

+grade(n : Integer)

n的值应介于1和6之间。有可能做到这一点吗?或者有没有一种不同的方式:

"+grade(n oneOf [1,2,3,4,5,6]"

谢谢你的帮助。

UML的语法不允许使用第二种方法。如果你在某个你可以控制的领域,你可以记录它的使用情况,这是可以的。然而,更好的方法是对该操作附加约束。您可以使用括号内的自由文本作为注释。或者,如果你更大胆,你可以写一个合适的OCL。这是我的观点,只有在学术界才是可取的。

详细说明qwerty_so的答案:

UML约束可以在类中的操作旁边表示:

  • 纯文本,如:{ n between 1 and 6 }

  • 使用OCL语法,如:{ n>0 and n<=6 }

如果它是一个较长的表达式,你也可以把它放在附加到操作的注释符号中(在UML中,我们说的是"操作",而不是"方法"(。

更复杂的约束也可以用普通的OCL表示,指示它所应用的context(例如,特定的类、属性或操作(。约束可以表示不变量(inv:(,在运算的情况下,还可以表示先决条件(pre:(和后条件(post:(。在您的情况下,它看起来像:

context: MyClass::grade(n : Integer)
pre: n>0 and n<=6     -- expression could involve properties using prefix 'self.'

这可以用类附带的UML注释来表示。但是,由于它可能非常复杂,特别是如果你想为每个操作记录合同,它也可以单独保存(例如,在建模工具的约束规范窗口中,或者作为图表或模型的补充文本(。

最新更新