如何以图形方式表示被覆盖的方法

时间:2015-08-19 04:36:11

标签: java inheritance uml diagram method-overriding

考虑以下java类:

public class GenericActionService {

    public void runAction(int actionNo) {

        .... (some stuff)

        runActionCode(actionNo);

        .... (some more stuff)
    }

    protected void runActionCode(int actionNo) {
        switch (actionNo) {
            case 100:
                doSomeGenericAction();
                break;
            ....

            default:
                throw new IllegalArgumentException("Invalid Action!");
        }
    }
}

继承子类:

public class SpecificActionService extends GenericActionService {

    protected void runActionCode(int actionNo) {
        switch (actionNo) {
            case 1000:
               doSomeSpecificAction();
               break;
            ....

            default:
                super.runActionCode(actionNo);
                break;
        }
    }
}

现在我并不关心这是否是特别好的设计,而且这些课程都是虚构的。

我想知道的是,您如何用某种图表来表示这种设计?可以使用UML序列图表示吗?如果没有,应该使用什么类型的图表?

特别是,我想在runAction()的实例上调用SpecificActionService方法时绘制流/序列图。

例如,考虑在runAction(1000)上调用SpecificActionService时的执行流程。我希望该图表显示以下内容:

  • 致电SpecificActionService.runAction(1000)
  • GenericActionService.runAction()
  • 中运行一些代码
  • 在致电SpecificActionService.runActionCode(1000)
  • 之前
  • 调用GenericActionService.runActionCode(1000)
  • 执行操作
  • 返回SpecificActionService.runActionCode(1000)
  • 之前
  • 返回GenericActionService.runAction(1000)
  • 在返回原始调用者之前运行更多代码

问题是有些人认为这是现代意大利面条代码"特别是那些似乎并没有得到它的经理人。当谈到这种继承结构时,我想要记录这个流程,以便他们理解。

为那些为我画出漂亮照片的人的额外积分。 : - )

1 个答案:

答案 0 :(得分:3)

  

特别是,我想绘制流/ 序列

所以我会使用序列图。这可以显示对象如何协同工作。它没有向您展示继承结构以及如何编写类,但为此您还可以在以后添加类图。

这里有一个简洁的图片,看起来如何: Sequence Diagram

plantuml源代码,如果这还不够好,你想试验一下:)。

otherObject->SpecificActionService:runActionCode(1000)
SpecificActionService->SpecificActionService:doSomeSpecificAction()

otherObject->SpecificActionService:runActionCode(100)
SpecificActionService->GenericActionService :runActionCode(100)
GenericActionService->GenericActionService:doSomeGenericAction()