【问题标题】:Can this diagram represent an Iteration/for each in a Collection? Sequence Diagram or Activity Diagram?这个图可以代表一个迭代/集合中的每一个吗?序列图还是活动图?
【发布时间】:2021-05-21 13:04:15
【问题描述】:

我有这个方法 findNegozio(insertID) 用于在集合中查找具有 insertID 的元素。 所以,findNegozio(insertID) 是我的序列图中经常提到的一个操作,所以我想我会用序列图来说明它。 这个想法是表示对集合的迭代,并且只取与输入的 ID 匹配的元素。

这是代表我的想法的好方法吗? 表示一些序列图的频繁步骤有用吗?

编辑:也许只有一步是更好的选择而不是 ALT。

【问题讨论】:

  • 看不懂中间线
  • @OlegDmitrochenko 你的意思是活动吗?范围是UML
  • @MrBuffalo 是的。序列图用于另一种情况。它显示了实体(对象、类、模块、函数、参与者等)之间的一系列动作。
  • @OlegDmitrochenko 警告序列图 not 显示动作。序列图显示交互(或其子部分)。活动图显示了一个活动(或其中的一部分),而动作是其范围的一部分。交互和活动是两个不同的东西,活动是一种行为,因此可以表示操作的主体(作为状态机)

标签: uml sequence-diagram visual-paradigm


【解决方案1】:

前三句话:

  • 对我来说,您的代码无效,因为循环后缺少 return => 我想添加了一个变量 result 并将其初始化为 null,如果存在则设置为找到的项目,最后用于最终的返回

  • 你确定 findNegocio 不是 static 吗?

  • 为什么 findNegocio 是在 Negocio 而不是在 GestoreNegocio 上定义的?

序列图显示交互(部分或不)并关注生命线之间的消息交换。

根据您的操作定义,需要确定哪些消息足够有趣以显示在您的序列图中。我认为列表和迭代器的细节不必展示,它们非常经典,目的不是解释如何使用 Java 内置类。

为了打破循环,你有片段break,所以你的序列图可以是(我添加了一个调用者,因为我的工具不管理丢失/找到的消息):

但也许显示的主要信息是 GestoreNegocio 的使用,而循环本身并不是很有趣?

【讨论】:

  • @MrBuffalo 但我没有回答你的问题?你的问题还没有解决吗?
  • for each item in the list 是一个布尔标志的奇怪名称。也不清楚谁会更新它。为什么不改用loop(list.count)result:=item 不是消息上的有效符号。变量result 的赋值将显示为简单的=。而item 是一个返回迭代器当前项的操作的奇怪名称。我建议使用getCurrentItem()。或者,正如@bruno 建议的那样,完全省略循环。但是如果你显示它,导航到下一个项目也应该显示next()-message。
  • @AxelScheithauer 即使我主要同意你的观点,我也是从培训中获得这些符号的。目标是有一些可读的东西。关于“item”,我只是重用“for each ...”中的“item”,使用迭代器的事实在图中完全隐藏(忘记)
猜你喜欢
  • 2020-10-13
  • 1970-01-01
  • 2011-07-15
  • 1970-01-01
  • 1970-01-01
  • 2019-06-11
  • 1970-01-01
  • 2021-10-11
相关资源
最近更新 更多