首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UML2.5.1中交互的"not_contained“约束的含义是什么?

UML2.5.1中交互的"not_contained“约束的含义是什么?
EN

Stack Overflow用户
提问于 2021-03-04 05:46:47
回答 2查看 94关注 0票数 1

UML规范2.5.1,第17.12.11.5节提供了有关交互分类器的控制信息。约束not_contained的解释如下:

交互实例不能包含在另一个交互实例中。

代码语言:javascript
复制
inv: enclosingInteraction->isEmpty()

现在,当我看图17.1,它显示了交互的抽象语法,我看到交互分类器是片段分类器的泛化。因此,交互是一个片段,反之亦然。

此外,交互分类器具有“片段”关联,"enclosingInteraction“分类器是片段分类器的关联。那么,如何将上述约束定义为交互分类器的约束呢?交互分类器应该没有属性"enclosingInteraction“。

我对抽象语法的解释是错误的吗?据我理解,上述OCL定义只适用于片段分类器,而不适用于交互分类器。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-04 06:50:36

inv: enclosingInteraction>isEmpty()

引用抽象语法,这意味着当InteractionFragment是交互时,enclosingInteraction是空的(其大小为0)。

如果没有这个约束,交互就会有一个封闭的交互,那么下面的内容可能是假的:

交互实例不能包含在另一个交互实例中。

这种关系的目标是允许交互知道其InteractionFragment,允许InteractionFragment知道其包含的交互,而且由于双向关联,不可能有:

没有意义的,但在下列情况下允许的:

没有必要的约束的一种方法是引入一个额外的类:

但这不是UML元模型中的选择。

实际上,在InteractionFragment的所有其他专门化情况下,enclosingInteraction并不是空的(其大小为1),因为它们都不能通过交互而存在:

覆盖:生命线1..1{重新定义InteractionFragment::A_covered_events::events}(相对于OccurrenceSpecification )引用OccurrenceSpecification出现的生命线。

覆盖:生命线1..1{重新定义InteractionFragment::A_covered_stateInvariant::stateInvariant}(相对于StateInvariant )引用StateInvariant出现的生命线。

ExecutionSpecification是在生命线中执行行为或行为单位的规范。

交互分类器应该没有属性"enclosingInteraction“

注enclosingInteraction是在InteractionFragment上定义的,交互继承它。

票数 2
EN

Stack Overflow用户

发布于 2021-03-06 00:10:35

tl;博士

在行为描述中避免循环。

长版

Interaction

交互是一个行为单元,集中在可连接元素之间可观察的信息交换上。

因此,这描述了您的代码中的某一部分。Interaction本身就是InteractionFragment

InteractionFragment是最通用的交互单元的抽象概念。InteractionFragment是交互的一部分。每个InteractionFragment在概念上就像一个单独的交互。

这反过来(抽象的)被OccurrenceSpecification具体化了

OccurrenceSpecification是交互的基本语义单元。它们所指定的事件序列是相互作用的意义。

ExecutionSpecification (也是抽象的)

ExecutionSpecification是在生命线中执行行为或行为单位的规范。ExecutionSpecification的持续时间由两个OccurrenceSpecifications表示,即start OccurrenceSpecification和finish OccurrenceSpecification。

StateInvariant

StateInvariant是对交互参与者的运行时约束。它可用于指定各种不同类型的约束,例如属性值或变量、内部或外部状态等。StateInvariant是一个InteractionFragment,它放置在生命线上。

他们中的每一个都从不同的方面描述了行为。

Interaction具有从引用任何Interaction实例的InteractionFragment继承的+enclodingIteraction

现在,约束只是说,一旦您有了这样一个实例,它可能只发生一次,而不是在某些递归描述中。所以你可以把行为分割成任何一个小片段,但是你不能重复其中的一个。

引用来自UML2.5元模型中的描述。

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

https://stackoverflow.com/questions/66469290

复制
相关文章

相似问题

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