OCL 2.0 Constraints



大家好,我们目前正在使用MagicDraw 17.0。我们遇到了以下问题。我们想验证对象图中的对象是否有任何连接的对象。

例如,如果一个对象"man"有一个到另一对象"address"的链接。Atm。我们正在试用这个

self.address->isEmpty() 

其中address是地址对象在连接两个对象的关联中的角色,并且对man施加约束。不起作用。

这不是对您问题的直接回答,但希望能提供更多关于您所问问题的见解:

如果一个对象(比如Man的实例)没有到另一个对象的链接(比如address的实例),那么在自身是Man的情况下遍历self.address,对于自身来说将是完全未定义的!(请注意,address是一个引用,address是一个类型)。

似乎oclIsUndefined()操作可以用于此目的(正如格非所提到的),所以self.address -> oclIsUndefined()可能对您有效!

OCL规范第16页写道:

如果表达式未定义。oclIsUndefined()是对OclAny的操作如果其参数为null或无效,则结果为True,并且为False否则

但还有另一个视角:

self.address表示集合。因此,如果isEmpty函数为空,它应该返回true!(这可能是你认为使用self.address->isEmpty的方式)

关于isEmpty函数的OCL规范第175页说:

isEmpty():布尔

self是空的集合吗?

  post: result = (self->size() = 0 ) 

注意:null->isEmpty()根据从null到Bag{}的隐式强制转换

但正如你所提到的,空对你不起作用!

我把这个留给OCL专家来评论区别?但第一种方法可能会有所帮助!

希望这能有所帮助!

尝试oclIsUndefined()(参见OCL规范2.3.1第16页)

相关内容

  • 没有找到相关文章

最新更新