如何将具有多个操作的单个代码行转换为 SD?

How to convert a single code line with multiple operations into a SD?

以这行代码为例:

event = eC.getEventRegistry.getEventByTitle((ListView.getSelectionModel.getselectedItem));

eventEvent 的实例。 eCExhibitionCentre 的实例,getEventByTitleEventRegistry 的操作,也就是 getEventRegistry().

中的操作

我发现很难将这一行或任何一长行代码转换成序列图。更不用说多个操作参数了。

您的方法调用链与将这些对象作为单独的变量调用没有什么不同,因此 eC.getEventRegistry().getEventByTitle(...) 与 eC.getEventRegistry() 没有什么不同然后 [return of getEventRegistry()].getEventByTitle(...) 在两行不同的代码上。因此,您的序列图可能如下所示:

当然,您也有 ListView.getSellectionModel.getsellectedItem,但为了简洁起见,我将它们省略了 - 原理是相同的。

计算操作的顺序取决于您使用的编译器。不能做笼统的陈述。根据经验(需要通过查看编译器规范来验证)你可以这样做:

  • 点间距将从左到右计算,
  • 在操作开始之前需要评估操作参数,
  • 实例引用将导致消息发送到实例 return 无论 operation/attribute 后面是什么。

例如。以下操作 A(B()).C() 将首先发出 B() 进行评估,并将结果作为参数传递给 A()。该操作的结果是某种类型的动态实例(再次取决于编译器),可以显示为新的生命线,例如resultOfCall:TheClass 将消息发送到哪里 C()