约束是一个可打包的元素,它表示与某个元素(拥有约束)或多个元素相关的某些条件、约束或断言。约束通常由布尔表达式指定,该表达式的计算结果必须为true或false。必须通过正确的系统设计来满足约束(即评估为true)。约束通常用于类图上的各种元素。
一般来说,约束有许多可能的所有者类型。拥有的元素必须具有对受约束元素的访问权限才能验证约束。约束的所有者将决定何时计算约束。例如,操作可以有前置条件和/或后置条件约束。
约束可以有一个可选的名称,尽管通常是匿名的。约束按照以下语法显示为花括号中的文本字符串:
constraint ::= '{' [ name ':'
] boolean-expression '}'
UML规范不限制可以用来表达约束的语言。约束语言的一些示例有:
ocl是在uml中预先定义的一种约束语言,但是如果使用某种uml工具来绘制图表,则可以应用该工具支持的任何约束语言。
对于表示法为文本字符串(例如类属性)的元素,约束字符串可以在大括号中跟随元素文本字符串。
银行账户属性约束- non empty
owner and positive balance.
对于应用于单个元素(例如类或关联路径)的约束,可以将约束字符串放在元素符号附近,最好放在名称(如果有的话)附近。UML工具必须使确定受约束元素成为可能。
对于应用于两个元素(例如两个类或两个关联)的约束,该约束可以显示为大括号中由约束字符串标记的元素之间的虚线。
帐户持有人是个人或公司,
{xor}是预定义的UML约束。
如果约束显示为两个元素之间的虚线,则可以在一端放置一个箭头。箭头的方向是约束内的相关信息。箭头末端的元素映射到constrainedElements集合中的第一位置,而箭头顶端的元素映射到第二位置。
对于三条或多条相同类型的路径(如泛化路径或关联路径),约束可以附加到穿过所有路径的虚线上。
约束字符串可以放置在注释符号中(与用于注释的符号相同),并通过虚线附着到约束元素的每个符号上。
银行账户限制- non empty
owner and positive balance.
|