11.3 操作和良构规则
11.3.1 OclAny
=(object2 : OclAny) : Boolean
如果object2是invalid,则结果是invalid。
如果self与object2i是相同的对象,则结果为真。
如果self和object2是相同数据类型的实例且具有相同的值,那么结果为真。
其它情况下结果为假。
中序(infix)操作符:
post: result = (self = object2)
<> (object2 : OclAny) : Boolean
如果object2是invalid,则结果是invalid。
如果self与object是相同的对象,则结果为假。
如果self和object2是相同数据类型的实例且具有相同的值,那么结果为假。
其它情况下结果为真。
中序(infix)操作符:
post: result = not (self = object2)
oclAsSet() : Set(T)
oclAsSet()操作用于隐式的将一个非集合转换为一个集合值。
结果Set包含源对象。
post: result = Set{self}
oclIsNew() : Boolean
只能用在后置条件中。如果self是在操作执行中被创建(例如,在前置条件时还不存在),那么结果为真。
post: [email protected]()
oclIsUndefined() : Boolean
如果self等同于invalid或null 则结果为真。
post: result = self.isTypeOf( OclVoid ) or self.isTypeOf(OclInvalid)
oclIsInvalid() : Boolean
如果self等同于OclInvalid,则结果为真。
post: result = self.isTypeOf( OclInvalid)
oclAsType(type : Classifier) : T
结果还是自身,其中self是T类型。类型T可以是UML模型中定义的任意分类符;如果self的实际类型在执行时不符合T,那么oclAsType操作结果为invalid。
在特征重定义的情况下,将一个对象转换为它的实际类型的超类并不会访问超类的特征定义;根据重定义的语义,对象的被重义的特征就不在了。然而,当转换为一个超类后,子类所额外定义的特征也被抑制。
post: (result = self) and result.oclIsKindOf( type )
oclIsTypeOf(type : Classifier) : Boolean
如果self是type类型但不是它的子类,那么返回真。
post: self.oclType() = type
oclIsKindOf(type : Classifier) : Boolean
如果self的类型符合type类型,则返回真。
post: self.oclType().conformsTo(type)
oclIsInState(statespec : OclState) : Boolean
如果self处于statespec所状态,那么返回真。
post: -- TBD
oclType() : Classifier
计算self实例的类型。
post: self.oclIsTypeOf(result)
oclLocale : String
对依赖locale的库操作,例如String::toUpperCase() 定义缺省的locale。