12.2 ExpressionInOcl 类型
因为在抽象语法中OclExpression是递归定义的,我们需要一个新的元类来代表顶层的OCL表达式语法树。这个元类称为ExpressionInOcl,如图12.1所示,它被定义为UML核心元类Expression的子类。在UML中,Expression元类有一个language属性,它的值可以是‘OCL’。它的body属性包含了实际表达式的文本表示。ExpressionInOcl的bodyExpression关联是到由OCL抽象语法元模型表示的OCL表达式的关联。body属性(从Expession继承而来)仍然可以用于存储OCL表达式的文本表示。language属性(也是从Expression继承而来)的值为‘OCL’。
图12.1 Metaclass ExpressionInOcl added to the UML metamodel
12.2.1 ExpressionInOcl
OCL中的表达式是用OCL写的表达式。因此language属性总是‘OCL’。
关联 | 说明 |
---|---|
bodyExpression | 实际OCL表达式的根,由OCL抽象语法元模型完全描述 |
contextVariable | self变量,类型是contextual classifier |
resultVariable | 代表操作返回的值 |
parameterVariable | 代表当前操作所拥有的参数 |
generatedType | 类型,例如集合类型,由OCL按需来创建,以做为bodyExpression中OclExpression的类型 |