Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用UML序列图表示同一类中的调用_Uml_Sequence Diagram - Fatal编程技术网

如何使用UML序列图表示同一类中的调用

如何使用UML序列图表示同一类中的调用,uml,sequence-diagram,Uml,Sequence Diagram,我正在尝试为我们的应用程序中的特定流程创建UML序列图 问题是,大多数业务逻辑都在一个类中,当我尝试在序列图中映射它时,我得到了对序列图中相同对象的多个调用 我需要的是一个类似于UML序列图中stacktrace的表示。是否可以使用序列图或其他一些图更好地表示同一类中的调用? 请提供建议。一些建议: 您可以使用自调用在序列图上显示连续的方法。参见图1中的示例(self调用是同一生命线上的循环调用) 作为另一种选择,你可以考虑。可能更适合说明方法的顺序 重构代码。单个类中的大量逻辑通常是一种不好的

我正在尝试为我们的应用程序中的特定流程创建UML序列图

问题是,大多数业务逻辑都在一个类中,当我尝试在序列图中映射它时,我得到了对序列图中相同对象的多个调用

我需要的是一个类似于UML序列图中stacktrace的表示。是否可以使用序列图或其他一些图更好地表示同一类中的调用? 请提供建议。

一些建议:

  • 您可以使用自调用在序列图上显示连续的方法。参见图1中的示例(self调用是同一生命线上的循环调用)
  • 作为另一种选择,你可以考虑。可能更适合说明方法的顺序
  • 重构代码。单个类中的大量逻辑通常是一种不好的味道。假设你有这个范围,重构可能是个好主意

  • hth.

    表示UML序列图上的自调用(参见步骤7)

    如果被调用的方法是(或应该是)私有的,那么它可以作为实现细节安全地从序列图中排除


    然而,我闻到了反模式的味道;你的班级有多重责任,应该被解构。分解类,使其只有一个使用委托。这些方法调用将是一个很好的起点。

    实际上可以引用self实例

    事实上,UMLSpec2.5b1第607页提到了生命线:如果名称是关键字self,那么生命线表示分类器的对象,该分类器包含拥有生命线的交互。即使包含self,也可以单独显示封闭器的端口


    有关完整示例,请参见。对,对于同一对象中的方法,“活动图”更好。链接已断开。这是从2013年开始该链接的archive.org镜像。我将我的类限制为每个类一个方法,这样设计时就不会出现此问题。每个类都有执行一个方法的单一职责,这使得单元测试方法更简单,因为每个类都是可以模拟的接口的实现。