首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OCL 2.0约束

OCL 2.0约束
EN

Stack Overflow用户
提问于 2012-07-17 21:22:53
回答 2查看 885关注 0票数 2

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

例如,如果一个对象"man“具有到另一个对象"address”的链接。ATM机。我们正在尝试这个。

代码语言:javascript
复制
self.address->isEmpty() 

其中,address是adressobject在连接两个对象的关联中的角色,约束放在man上。不起作用。

EN

回答 2

Stack Overflow用户

发布于 2014-09-02 00:47:33

这不是对你问题的直接回答,但希望能为你提出的问题提供更多的洞察力:

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

似乎oclIsUndefined()操作可以用于此目的(正如gefei提到的),所以self.address -> oclIsUndefined()可能会为您工作!

OCL规范的第16页写道:

...有一个显式操作用于测试表达式的值是否未定义。oclIsUndefined()是OclAny上的一个操作,如果其参数为空或无效,则返回True,否则返回False。

但还有另一种观点:

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

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

isEmpty():布尔值

self是空集合吗?

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

注意: null->isEmpty()通过从null到Bag{}的隐式强制转换返回'true‘

但是正如你提到的,isEmpty并不适合你!

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

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2012-08-01 22:56:49

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11523453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档