12.6 不变式

不变式约束是一个链接到一个分类符的约束。不变式约束的目的是规定分类符的不变式。一个不变式约束包含一个类型为布尔的OCL表达式。对于在任意时刻的该分类符的每个实例,该表达式必须为真。只有在某个实例正在执行一个操作时,该值才可以不为真。

UML元模型中不变式约束的位置等同于定义约束的位置,如图12.2所示(译者注:原文是图12.3,是错误的)。如下的良构规则必须要满足。该规则还定义了上下文分类符的值。

12.6.1 良构规则

[1] 该约束具有泛型«invariant» (A),并且只附加到一个模型元素(B),且该模型元素是一个分类符(C)。上下文分类符是被约束元素并且OCL表达式的类型必须是布尔。

context ExpressionInOcl
inv: self.constraint.stereotype.name = ‘invariant’                     -- A
    and
    self.constraint.constrainedElement->size() = 1                     -- B
    and
    self.constraint.constrainedElement.any(true).oclIsKindOf(Classifier) -- C
        implies
            contextualClassifier = self.constraint.constrainedElement->any(true).oclAsType(Classifier)
            and
            self.bodyExpression.type.name = ‘Boolean’

[2] @pre不允许在不变式约束中使用。

context ExpressionInOcl
inv: --

results matching ""

    No results matching ""