10

谁能解释一下序列图和通信图有什么区别?

4

5 回答 5

16

两个图都提供了相同的信息,但序列图在其布局中强调时间,而通信图则在其布局中强调正在通信的对象。

时间在序列图中是隐含的(通过垂直位置推断),而在通信图中明确给出(通过数字)。

引用斯科特·安布勒的话

通信图和序列图之间的主要区别在于,序列图擅长显示时序逻辑,但不擅长为您提供“全局视图”,而通信图恰恰相反。

于 2012-04-10T07:30:38.457 回答
3

强调消息的时间顺序(使用序列图)

强调交互对象之间的结构关系(使用通信图)。

参考:UML 用户手册

于 2013-08-24T21:08:54.540 回答
2

序列图以一种栅栏格式说明交互,其中每个新对象都添加到右侧。

这在代码中可能代表什么?可能,该类 A 有一个名为 doOne 的方法和一个 B 类型的属性。此外,该类 B 具有名为 doTwo 和 doThree 的方法。或许 A 类的部分定义是:

public class A
   {
   private B myB = new B();

   public void doOne()
   {
   myB.doTwo();
   myB.doThree();
   }
   // . . 
   }

通信图以图形或网络格式说明对象交互,其中对象可以放置在图上的任何位置(它们的墙草图优势的本质)。

序列图与通信图的优缺点是什么?

每种图表类型都有优势,建模者有特殊的偏好——没有绝对“正确”的选择。然而,UML 工具通常强调序列图,因为它们具有更大的符号能力。

序列图比通信图有一些优势。也许首先,UML 规范更加以序列图为中心——在符号和语义上投入了更多的思考和努力。因此,工具支持更好,并且有更多的符号选项可用。此外,使用序列图更容易查看调用流序列——只需从上到下阅读。对于通信图,我们必须阅读序列号,例如“1:”和“2:”。因此,序列图非常适合用于记录文档或轻松阅读逆向工程调用流序列,该序列是使用 UML 工具从源代码生成的。

但另一方面,通信图在应用“UML 作为草图”在墙上绘制(敏捷建模实践)时具有优势,因为它们更节省空间。这是因为盒子可以很容易地放置或擦除任何地方——水平或垂直。因此,使用通信图修改墙壁草图也更容易——很简单(在创造性的高变化 OO 设计工作期间)在一个位置擦除一个框,在其他位置绘制一个新框,然后在其上画一条线。相反,序列图中的新对象必须始终添加到右边缘,这是有限的,因为它会快速消耗并耗尽页面(或墙壁)上的右边缘空间;垂直维度的自由空间没有得到有效利用。

于 2012-04-10T09:42:30.903 回答
-3

面向对象设计的一个基本规则是根据不同的目的使用不同的图表。在这方面,序列图用于对顺序逻辑进行建模,同时可以使用通信图(以前称为 UML 1.x 中的协作图)来显示多个对象协作在一起以实现共同目的的行为。- 阅读更多>>这里<<>>这里<<

于 2014-06-06T23:00:47.013 回答
-5

以下链接是序列图和通信之间差异的简短答案。请参考。

序列图和通信的区别

于 2012-04-10T07:40:31.110 回答