当前位置: 首页 > 知识库问答 >
问题:

UML:如何在序列图中表示间接操作调用?

周健
2023-03-14

请考虑以下类:

我想在序列图中表示这样一个事实:a的实例首先导航到B关联端以到达B实例,然后导航到其关联C以到达C实例,然后调用操作foo()

我如何在序列图中表示这个?Afaik,从一个物体导航到另一个物体不是一个消息,因此不能用箭头来表示,对吗?那么我如何显示C实例是如何被A实例找到的呢?

换句话说,afaik,用提出的类图,我不能有表示a和C的序列图,我只能表示a和B,或者B和C中的任何一个。

共有1个答案

章侯林
2023-03-14

在您的关系图中,您使用了属性的关联表示法:+b表示ba的公共属性,该属性属于b类,类似地,cb的公共属性。因此a.b.c:c表示法可能是有效的。

然而,我不是100%确定这是否是真正有效的UML。标准预见的是一个元素名称,而不是一个决定元素的表达式。它允许限定名,但在命名空间中,而不是在分类器中。名称上的可选选择器也不是为遍历多个关系而设计的。

因此,更好的方法当然是给第二条生命线取一个简单的名字(例如x,或者保持匿名),并添加一个约束来解释它是如何确定的(例如{x=a.b.c})。在约束中,不管是OCL、java还是自然语言,都允许您对公共属性进行这种访问。

现在,从OO设计的角度来看,这可能是不可取的:使用这样的公共成员会创建一个强耦合,并且不能提供适当的封装。因此我会使用一些吸气剂。

结果如下所示:

请注意,如果您不喜欢b的假设已知,您可以用一个真实的约束替换说明性注释,正如我上面所解释的那样。

 类似资料:
  • 我对使用UML序列图建模我的系统有一个疑问(是的,我知道状态机图做这件事更简单,但我需要序列图)。 考虑一个简单的列车车门系统,其中有(a)一个自动控制器,它向(B)一个机械开启器(一个致动器)发出命令来开启或关闭车门。该系统有一些(C)传感器--发送反馈,通知列车是否停车;列车是否在站台对线;有无紧急情况;如果门被打开、关闭或部分打开/关闭;如果有一个人或物体在门口-和(D)门本身。

  • 序列图中的多线程表示不能解决我的问题,因为这些操作不应该是并行的。

  • 问题内容: 只是想知道用UML中的一些片段或更具体地说是类图来表示活动的最佳方式是什么。 问题答案: 这取决于观点。 可以通过对象图或复合结构图来对片段进行最彻底的分析。 如果要建模其外部行为,则可以使用组件图或任何行为图。

  • 问题内容: 使用以下HTML,将列表显示为两列的最简单方法是什么? 所需显示: 该解决方案必须能够在Internet Explorer上运行。 问题答案: 现代浏览器 利用css3列模块来支持您要寻找的内容。 CSS: 旧版浏览器 不幸的是,要获得IE支持,您将需要一个涉及JavaScript和dom操作的代码解决方案。这意味着,只要列表内容发生更改,您就需要执行将列表重新排序为列并重新打印的操作

  • 问题内容: 我需要帮助。有什么办法可以在css / scss中显示逆序列表?类似于以下内容: 问题答案: 您可以旋转父元素,然后旋转子元素。 或者,您可以将flex框与 属性一起使用 。 尽管从技术上讲这并不是颠倒顺序,但您也可以将其 与伪元素一起使用。

  • 然后,这需要转到数据库,该数据库向工作人员发送返回消息,告诉他们该成员已被添加。 只有工作人员在和系统通话,没有人。