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

发布于 2024-12-27 15:04:15 字数 966 浏览 0 评论 0原文

为了说明目的,我有一个可以表示的复杂对象层次结构, 像这样:

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()
 }
}

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

有很多交错的代码:方法正在调用超类方法,而这些方法也是超类方法,并且某些调用是在每个级别上完成的。

现在我想画一些序列图来帮助我理解发生了什么。

我应该如何在层次结构中表示这些调用?
- 展开层次结构会在图表中添加大量噪音,但会很准确。
- 屏蔽层次结构将导致一个更简单的图表,但它很混乱(那个该死的方法又在哪里,当我发送此消息时我在层次结构中的哪里?)

有没有任何常用的方法来处理这种复杂的类层次结构在序列图中?

I have a complex hierarchy of objects that we can represent, for illustration purpose,
like that:

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()
 }
}

Note: this is not my Design, I'm doing maintenance on a huge project. There are a lots of 'Special' implementation. Refactoring is not an option.

There is a lot of interleaved code: method are calling super class methods that are also super class method, and some call are to other methods are done at each level.

Now I want to draw some sequence diagram to help me understand what is going on.

How should I represent these calls across the hierarchy ?
- Unrolling the hierarchy would add lots of noise in the diagram, but will be accurate.
- Masking the hierarchy will result in a simpler diagram, but it is confusing (where is that damn method again, where in the hierarchy am I when I send this message ?)

Is there any usual way to deal with this kind of complex class hierarchy in sequence digram ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

呆萌少年 2025-01-03 15:04:15

如果您展开层次结构并具有超级->常规->基础泳道,则可以执行此操作。然而,最小化噪音的一种方法是制作一个 super 构造型,而不是使用 self 调用。

You could do this if you unroll the hierarchy and have swim lanes for the Super->Regular->Base. However one way to minimise the noise would be to make a super stereotype instead of using self calls.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文