在UML图中,“age: Integer{0<=age<=150}”是什么意思?

3
我想根据下面展示的UML图纸编写C#代码。然而,我遇到了"age: Integer{0<=age<=150}"这个属性,我会圈出来给你看。请问它是什么意思?我们如何将其转换成C#代码? C#


2
只是提一下,结尾应该是花括号,而不是圆括号。在图表中已经显示正确,但你在问题中打错了。答案已经给出,所以我只会限制我的输入到这个评论和点赞;-) - Ister
@Ister 你本可以简单地修复它 :-) - qwerty_so
1
@qwerty_so 我总是忘记我可以这样做 :-D 谢谢你提醒我(并且我想是修复了);-) - Ister
2个回答

6

这意味着年龄的最小限制为0岁,最大限制为150岁。系统中的个人不应有负数年龄或超过150岁的年龄。

您可以通过在用户输入年龄时进行条件检查来实现此操作。


1
非常好。然而,执行不应仅限于用户界面。由于这是私有属性,约束是类不变量,最好由类的所有操作(特别是setData())保证或强制执行。 - Christophe

3

这被称为 约束条件,可以通过周围花括号进行识别。您可以编写清晰的文本、使用数学公式或编写 OCL(不适合心脏虚弱者,在任何情况下都可能太长)。

请参阅UML 2.5第35页:

约束是指示必须由包含约束的模型的任何有效实现满足的限制的断言。约束附加到一组受约束元素,并表示关于这些元素的附加语义信息。 [...]

<constraint> ::= ‘{‘ [ <name> ‘:’ ] <boolean-expression> ‘ }’


1
确实!在这种情况下,让我们假设数学公式,因为 OCL 中的比较器是整数、字符串和实数的二元操作,但不适用于布尔值(这会使表达式在运算符优先级方面不一致)。 - Christophe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接