Database design 如何将包含多个操作的单个代码行转换为SD?
以该代码行为例:Database design 如何将包含多个操作的单个代码行转换为SD?,database-design,uml,sequence-diagram,Database Design,Uml,Sequence Diagram,以该代码行为例: event=eC.getEventRegistry.getEventByTitle((ListView.getSelectionModel.getselectedItem)) 事件是事件的一个实例eC是ExpressionCenter的一个距离,getEventByTitle是来自EventRegistry的一个操作,该操作在getEventRegistry()中被调用 我发现很难将此代码或任何长代码行翻译成序列图。更不用说多个操作参数了。如果将这些对象作为单独的变量调用,那么
event=eC.getEventRegistry.getEventByTitle((ListView.getSelectionModel.getselectedItem))代码>
事件
是事件
的一个实例eC
是ExpressionCenter
的一个距离,getEventByTitle
是来自EventRegistry
的一个操作,该操作在getEventRegistry()
中被调用
我发现很难将此代码或任何长代码行翻译成序列图。更不用说多个操作参数了。如果将这些对象作为单独的变量调用,那么您的方法调用链与之没有什么不同,因此eC.getEventRegistry().getEventByTitle(…)与eC.getEventRegistry()和[return of getEventRegistry()]没有什么不同。getEventByTitle(…)在两行单独的代码上。因此,序列图可能如下所示:
当然,这里也有ListView.getSellectionModel.getsellectedItem,但为了简洁起见,我省略了它们——原理是一样的。计算操作的顺序取决于您使用的编译器。不能作一般性发言。根据经验法则(需要通过查看编译器规范进行验证),您可以采取以下措施:
- 点间距将从左到右进行计算
- 在开始操作之前,需要评估操作参数
- 实例引用将导致发送到实例的消息返回后面的任何操作/属性
例如,以下操作A(B()).C()
将首先发出B()
进行评估,并将结果作为参数传递给A()
。该操作的结果是一个特定类型的动态实例(同样取决于编译器),它可以显示为一条新的生命线,例如作为resulttofall:class
至于您将消息发送到哪里C()
非常感谢!但是参数呢?类似于getEventByTitle((ListView.getSelectModel.getsellectedItem))
这就是我在getEventByTitle()操作中假设的字符串类型。显然,您需要调用ListView.GetSelectionModel,然后[return of the that].GetSelectEdItem才能获得此结果。