如何将具有多个操作的单个代码行转换为 SD?
How to convert a single code line with multiple operations into a SD?
以这行代码为例:
event = eC.getEventRegistry.getEventByTitle((ListView.getSelectionModel.getselectedItem));
event
是 Event
的实例。 eC
是 ExhibitionCentre
的实例,getEventByTitle
是 EventRegistry
的操作,也就是 getEventRegistry()
.
中的操作
我发现很难将这一行或任何一长行代码转换成序列图。更不用说多个操作参数了。
您的方法调用链与将这些对象作为单独的变量调用没有什么不同,因此 eC.getEventRegistry().getEventByTitle(...) 与 eC.getEventRegistry() 没有什么不同然后 [return of getEventRegistry()].getEventByTitle(...) 在两行不同的代码上。因此,您的序列图可能如下所示:
当然,您也有 ListView.getSellectionModel.getsellectedItem,但为了简洁起见,我将它们省略了 - 原理是相同的。
计算操作的顺序取决于您使用的编译器。不能做笼统的陈述。根据经验(需要通过查看编译器规范来验证)你可以这样做:
- 点间距将从左到右计算,
- 在操作开始之前需要评估操作参数,
- 实例引用将导致消息发送到实例 return 无论 operation/attribute 后面是什么。
例如。以下操作 A(B()).C()
将首先发出 B()
进行评估,并将结果作为参数传递给 A()
。该操作的结果是某种类型的动态实例(再次取决于编译器),可以显示为新的生命线,例如resultOfCall:TheClass
将消息发送到哪里 C()
。
以这行代码为例:
event = eC.getEventRegistry.getEventByTitle((ListView.getSelectionModel.getselectedItem));
event
是 Event
的实例。 eC
是 ExhibitionCentre
的实例,getEventByTitle
是 EventRegistry
的操作,也就是 getEventRegistry()
.
我发现很难将这一行或任何一长行代码转换成序列图。更不用说多个操作参数了。
您的方法调用链与将这些对象作为单独的变量调用没有什么不同,因此 eC.getEventRegistry().getEventByTitle(...) 与 eC.getEventRegistry() 没有什么不同然后 [return of getEventRegistry()].getEventByTitle(...) 在两行不同的代码上。因此,您的序列图可能如下所示:
当然,您也有 ListView.getSellectionModel.getsellectedItem,但为了简洁起见,我将它们省略了 - 原理是相同的。
计算操作的顺序取决于您使用的编译器。不能做笼统的陈述。根据经验(需要通过查看编译器规范来验证)你可以这样做:
- 点间距将从左到右计算,
- 在操作开始之前需要评估操作参数,
- 实例引用将导致消息发送到实例 return 无论 operation/attribute 后面是什么。
例如。以下操作 A(B()).C()
将首先发出 B()
进行评估,并将结果作为参数传递给 A()
。该操作的结果是某种类型的动态实例(再次取决于编译器),可以显示为新的生命线,例如resultOfCall:TheClass
将消息发送到哪里 C()
。