如何在序列图中表示对超类的调用?

时间:2012-01-17 16:24:45

标签: inheritance uml sequence-diagram

为了便于说明,我有一个复杂的对象层次结构,我们可以代表它们 那样:

class Base {
 public handle() {
  //base handling code
  onHandlingDone()
 }

 public onHandlingDone() {
  //base onHandlingDone code 
 }
}
//--------------------------------------
class Regular extends Base {
 public handle() {
   super.handle();
   //regular handling code
 }

 public onHandlingDone() {
  //regular onHandlingDone code 
  super.onHandlingDone()
 }
//--------------------------------------
}
class Special extends Regular {
 public handle() {
   super.handle();
   //special handling code
 }
 public onHandlingDone() {
  //special onHandlingDone code 
  super.onHandlingDone()
 }
}

注意:这不是我的设计,我正在对一个庞大的项目进行维护。有很多“特殊”实施。重构不是一种选择。

有很多交错代码:方法是调用超类方法,也是超类方法,有些调用是在每个级别完成其他方法。

现在我想绘制一些序列图,以帮助我了解正在发生的事情。

我应该如何在层次结构中表示这些调用? - 展开层次结构会在图表中添加大量噪音,但会很准确 - 屏蔽层次结构将导致更简单的图表,但它令人困惑(这个该死的方法再次出现在哪里,在我发送此消息的层次结构中?)

有没有通常的方法来处理序列digram中的这种复杂的类层次结构?

1 个答案:

答案 0 :(得分:1)

严格来说,您需要展开并为Super-> Regular-> Base提供泳道。然而,最小化噪声的一种方法是制作 super 构造型并使用自我调用。