java - 如何以图形方式表示重写的方法

标签 java inheritance uml diagram 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 序列图表示吗?如果不是,应该使用什么类型的图表?

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

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

  • 调用 SpecificActionService.runAction(1000)
  • 它在 GenericActionService.runAction()
  • 中运行一些代码
  • 在调用 SpecificActionService.runActionCode(1000) 之前
  • 调用 GenericActionService.runActionCode(1000)
  • 哪个执行 Action
  • 在返回 SpecificActionService.runActionCode(1000) 之前
  • 返回 GenericActionService.runAction(1000)
  • 在返回原始调用者之前运行更多代码的位置

问题是有些人认为这是“现代意大利面条式代码”,尤其是那些在谈到这种继承结构时似乎并不“明白”的经理,所以我想记录这个流程他们明白。

给我画得漂亮的加分。 :-)

最佳答案

In particular, I'd like to diagram the flow/sequence

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

这是一个奇特的简单图像: Sequence Diagram

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

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

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

关于java - 如何以图形方式表示重写的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32086650/

相关文章:

java - JPA BigInteger 正在映射到 MySQL 的十进制?

java - 无法在堆大小较大的 64 位 Windows 7 中运行 64 位 JVM

c++ - 模板化类的非模板化接口(interface) C++

messaging - 读取时序图

java - 制作可以动态 CRUD 表单和 Controller 的 WebApp (Java)

java - 嵌套的 for 循环没有完成我要打印的序列

java - 从父类(super class)型的扩展列表中返回子类型对象的列表

c++ - 抽象基类中的静态常量变量

oop - UML:一个类可以通过组合聚合到其他两个类吗?

c++ - 在 UML 工具中从 StateCharts 生成代码的要求