请问有人能解释一下序列图和通信图之间的区别吗?
序列图以一种栅栏格式展示交互,每个新对象都会添加到右侧。
在代码中,这可能代表什么?很可能是类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设计工作期间,可以简单地在一个位置擦除一个方框,在其他地方绘制一个新的方框,并将其连线。相比之下,在序列图中添加新对象必须始终添加到右侧边缘,这是限制性的,因为它会快速消耗和耗尽页面(或墙壁)的右侧空间;垂直维度中的可用空间没有得到有效利用。在墙上绘制序列图的开发人员很快就会感受到绘制疼痛,而通信图则不会。