首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sysml的多态性

sysml的多态性
EN

Stack Overflow用户
提问于 2022-04-01 05:44:33
回答 1查看 58关注 0票数 0

目前,我正在尝试设计一个可执行活动,其中逻辑组件向其他几个逻辑组件发送请求以启动初始化。活动图中通常的方法是为每个块创建一条游泳线。但是,由于LCs的数量很高,在这种情况下,图将是非常大的,而且它以后的修改也将是一个障碍。

在编程中,这个问题的解决方案是多态,将对象作为母类抛出并推入向量,然后在循环中调用母类的抽象函数。

我想知道sysml中是否有类似的解决方案?

我试着给所有的LCs分配一条泳线,而LCs重新请求,但似乎每条泳线只能分配给一个块。

EN

回答 1

Stack Overflow用户

发布于 2022-04-06 17:44:30

是的,也有类似的解决办法。实际上,这更容易。只要让ActivtyPartition表示一个多重性大于1的属性,那么这个分区中的任何InvocationAction都意味着对该属性中的所有实例进行并发调用。

UML规范说明了这一点:

第15.6.3.1节活动分区

如果该属性包含多个值,则调用将被视为是对每个值并发进行的,并且在其所有并发实例完成之前,调用不会完成。

典型的InvocationActions是CallActions和SendSignalActions。因此,可以在表示属性initialize()的分区中调用myLogicalComponents:LC[1..*]操作。

如果您还没有定义这样的属性,您可以通过使它成为一个派生的联合来派生它,然后用要初始化为它的子集的组件来定义所有现有属性:

代码语言:javascript
运行
复制
/myLogicalComponents:LC[1..*]{union}
LC1:LC {subsets myLogicalComponents}
LC2:LC {subsets myLogicalComponents}

当然,这假定您的所有逻辑组件都是专门化的LC,因此它们都继承和重新定义了initialize()操作。

在SysML中也有AllocateActivityPartitions。它没有描述清楚的语义,所以我认为更好的服务于UML,它也包含在SysML中。

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

https://stackoverflow.com/questions/71702310

复制
相关文章

相似问题

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