loops - 使用区域在UML Activity 图中循环

标签 loops android-activity uml

我在UML Activity 图中建模一个循环。它适用于简单的条件节点(图1),但是我正在寻找一种更具表现力的方式来强调循环语义
所以我来到显示为herethere的“区域”或“可中断区域”,但是我找不到很多真正令人满意的示例。

我的示例是处理给定列表消息的函数。一旦找到第一个有效消息,循环就会中止,然后对该消息进行处理,并且函数返回true。否则,它返回false(请仅对示例进行说明,请不要对有理或废话发表评论)。

图1:使用良好的旧 Activity 图条件节点。顺便说一句,顺着箭头遵循控制流比较容易,但是没有“LOOP”,只有一个“if”。

图2:

  • 是(正)退出条件正确,使用中断边沿吗?是的,它可能与迭代器一起成为循环的[test]部分的一部分。
  • BTW:如何用UML最好地表达for循环的迭代特性?
  • 循环体内的 Activity 最终节点是否正确(即,当条件“消息有效”时产生“否”)?在这里使用最终节点有点不对劲,但是我还能如何表达一个循环的控制流程呢?

  • 这两个图的功能应等效:



    编辑:另一个图,它实现了Steph的建议:
  • 循环体内
  • 内的初始和最终节点
  • “进一步处理”现在位于循环体内。好吧...可以,但是在其他循环中,我可能希望将其放在外面。那我还是可以改变设计...
  • “下一条消息”也可以看作是迭代器对象本身,而不是原始图中的 Action “(提供下一条消息)”。
  • 两个对象流箭头可能有点过大,但我认为它们是正确的。
  • 最佳答案

    在UML中, Activity 最终节点表示完成,因此在您使用它的循环区域中它是正确的,它是循环内容的正常完成(这又导致下一次迭代)。作为附带说明,我建议您也将初始节点用于循环的开始。

    还有一个流最终节点,它表示退出而不是完成。因此,您可以使用它来表示“break”语句,而不是使用中断边缘。在这种情况下,您必须在此流程最终节点之前的"is"分支中集成“其他消息处理节点”。

    中断边缘实际上是来自当前处理外部的中断。该区域是可中断的,并且无论区域内容的进度如何,某些事件(通常会在接收节点中指出)可能会完全中断该区域。事实并非如此。

    关于迭代字符,不幸的是,没有什么视觉效果。我倾向于在该区域的顶部,初始节点旁边使用对象节点。

    关于loops - 使用区域在UML Activity 图中循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15792687/

    相关文章:

    c - for 循环中的空语句 VS 无限 while

    Java-在游戏中保存分数

    javascript - 如何在 forEach 循环中每秒运行一次 setTimeout?

    Android线程完成回调

    java - Eclipse 崩溃并显示引用计数错误消息 cairo_surface_destroy

    c - 将指针元素赋值给数组中的另一个指针元素是什么意思?

    Android VPNService - 如何从我的 Activity 中调出 'system-managed dialog'?

    android - 如何将非基本数据传递给创建 Activity ?

    class - UML 类图枚举

    uml - 我可以在类图中包含一个独立的类吗?