谁能解释一下序列图和通信图有什么区别?
5 回答
两个图都提供了相同的信息,但序列图在其布局中强调时间,而通信图则在其布局中强调正在通信的对象。
时间在序列图中是隐含的(通过垂直位置推断),而在通信图中明确给出(通过数字)。
通信图和序列图之间的主要区别在于,序列图擅长显示时序逻辑,但不擅长为您提供“全局视图”,而通信图恰恰相反。
强调消息的时间顺序(使用序列图)
强调交互对象之间的结构关系(使用通信图)。
参考:UML 用户手册
序列图以一种栅栏格式说明交互,其中每个新对象都添加到右侧。
这在代码中可能代表什么?可能,该类 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 设计工作期间)在一个位置擦除一个框,在其他位置绘制一个新框,然后在其上画一条线。相反,序列图中的新对象必须始终添加到右边缘,这是有限的,因为它会快速消耗并耗尽页面(或墙壁)上的右边缘空间;垂直维度的自由空间没有得到有效利用。
以下链接是序列图和通信之间差异的简短答案。请参考。