11.2 OclAny, OclVoid, OclInvalid 和 OclMessage 类型

11.2.1 OclAny

UML模型中的所有类型和OCL标准库中的所有基本和集合类型都符合OclAny类型。概念上,OclAny是所有类型的超类。OclAny的特征在OCL表达式的每个对象上都可用。OclAny自身是元类型AnyType的一个实例。

UML模型中的所有类从OclAny继承了其所有的操作。为了避免模型中的属性与从OclAny继承来的属性发生命名冲突,所有的OclAny属性名称以’ocl‘开头。尽管理论上仍然有名称冲突,但它们是可以避免的。建模者可以使用OclAny限定名来显式的引用OclAny的属性。

11.2.2 OclMessage

本小节包含标准类型OclMessage的定义。正如本节所定义的,每个ocl消息类型实际上是一个具有一个参数的模板类型。‘T’ 指示参数。需要创建具体的操作或信号ocl消息类型来替换T。

预定义类型OclMessageMessageType的实例。每个OclMessage完全由作为参数的操作或信号来决定。注意,概念上,这种类型的数目是无限的,因为每个不同的操作或信号都可以是一个类型。这些类型是为命名的。每个类型以操作或信号名、操作的所有形式参数或信号的所有属性为属性。OclMessage自身是元类型MessageType的一个实例。

OclMessage有一些预定义的操作。

11.2.3 OclVoid

类型OclVoid符合所有除了OclInvalid外的其它类型。它只有一个实例 null,它对应UML LiteralNull 值规约。null上的任何属性调用将产生 invalid。除了11.3.2 中定义的操作(=,<>,oclAsType,oclIsInState,oclIsKindOf,oclIsTypeOf,oclIsInvalid,oclIsNew,oclIsUndefined,oclType)和11.5.4中定义的操作(and,implies,not,or,xor),在null上调用任何操作都产生invalid。然而,因为可以隐式的转换为一个集合字面量,所以一个计算为null的表达式可以用作集合操作(例如‘isEmpty’)的源。如果源是null字面量,它会隐式的通过调用oclAsSet()转换为一个空Set。

OclVoid自身是元类型VoidType的一个实例。

11.2.4 OclInvalid

类型OclInvalid是一个符合所有其它类型的类型。它只有一个实例,invalidinvalid上的任意属性调用都会产生invalid。除了11.3.3 中定义的操作(=,<>,oclAsType,oclIsInState,oclIsKindOf,oclIsTypeOf,oclIsInvalid,oclIsNew,oclIsUndefined,oclType)和11.5.4中定义的操作(and,implies,not,or,xor),在invalid上调用任何操作都产生invalid。OclInvalid自身是元类型 InvalidType的一个实例。

results matching ""

    No results matching ""