如何以图形方式表示重写的方法
How to diagramatically represent overridden methods
考虑以下 java classes:
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!");
}
}
}
并继承子class:
public class SpecificActionService extends GenericActionService {
protected void runActionCode(int actionNo) {
switch (actionNo) {
case 1000:
doSomeSpecificAction();
break;
....
default:
super.runActionCode(actionNo);
break;
}
}
}
现在我不关心这个设计是不是特别好,这些class都是高度虚构的。
我想知道的是,你是如何用某种图表来表示这个设计的?这可以使用 UML 序列图表示吗?如果不是,应该使用什么类型的图表?
特别是,当某些东西在 SpecificActionService
. 的实例上调用 runAction()
方法时,我想绘制 flow/sequence 图表
例如,考虑在SpecificActionService
上调用runAction(1000)
时的执行流程。我希望图表显示以下内容:
- 来电
SpecificActionService.runAction(1000)
- 运行
GenericActionService.runAction()
中的一些代码
- 在调用之前
SpecificActionService.runActionCode(1000)
- 调用
GenericActionService.runActionCode(1000)
- 哪个执行操作
- 回到
SpecificActionService.runActionCode(1000)
之前
- 哪个returns到
GenericActionService.runAction(1000)
- 在 returns 之前有更多代码 运行 给原始调用者
问题是有些人认为这是 "modern spaghetti code",尤其是管理人员,当谈到这种继承结构时,他们似乎并不 'get it',所以我想记录下来这个流程让他们明白了。
给我画得漂亮的加分。 :-)
In particular, I'd like to diagram the flow/sequence
所以我会使用时序图。这可以显示对象如何协同工作。它没有向您展示继承结构以及如何编写 类 但是为此您也可以稍后添加 Class 图。
这里是一张精美的简单图片:
还有 plantuml 源代码,如果这还不够好并且您想试验一下 :)。
otherObject->SpecificActionService:runActionCode(1000)
SpecificActionService->SpecificActionService:doSomeSpecificAction()
otherObject->SpecificActionService:runActionCode(100)
SpecificActionService->GenericActionService :runActionCode(100)
GenericActionService->GenericActionService:doSomeGenericAction()
考虑以下 java classes:
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!");
}
}
}
并继承子class:
public class SpecificActionService extends GenericActionService {
protected void runActionCode(int actionNo) {
switch (actionNo) {
case 1000:
doSomeSpecificAction();
break;
....
default:
super.runActionCode(actionNo);
break;
}
}
}
现在我不关心这个设计是不是特别好,这些class都是高度虚构的。
我想知道的是,你是如何用某种图表来表示这个设计的?这可以使用 UML 序列图表示吗?如果不是,应该使用什么类型的图表?
特别是,当某些东西在 SpecificActionService
. 的实例上调用 runAction()
方法时,我想绘制 flow/sequence 图表
例如,考虑在SpecificActionService
上调用runAction(1000)
时的执行流程。我希望图表显示以下内容:
- 来电
SpecificActionService.runAction(1000)
- 运行
GenericActionService.runAction()
中的一些代码
- 在调用之前
SpecificActionService.runActionCode(1000)
- 调用
GenericActionService.runActionCode(1000)
- 哪个执行操作
- 回到
SpecificActionService.runActionCode(1000)
之前 - 哪个returns到
GenericActionService.runAction(1000)
- 在 returns 之前有更多代码 运行 给原始调用者
问题是有些人认为这是 "modern spaghetti code",尤其是管理人员,当谈到这种继承结构时,他们似乎并不 'get it',所以我想记录下来这个流程让他们明白了。
给我画得漂亮的加分。 :-)
In particular, I'd like to diagram the flow/sequence
所以我会使用时序图。这可以显示对象如何协同工作。它没有向您展示继承结构以及如何编写 类 但是为此您也可以稍后添加 Class 图。
这里是一张精美的简单图片:
还有 plantuml 源代码,如果这还不够好并且您想试验一下 :)。
otherObject->SpecificActionService:runActionCode(1000)
SpecificActionService->SpecificActionService:doSomeSpecificAction()
otherObject->SpecificActionService:runActionCode(100)
SpecificActionService->GenericActionService :runActionCode(100)
GenericActionService->GenericActionService:doSomeGenericAction()