使用序列图绘制调用流程会导致模糊

问题描述 投票:4回答:3

我想画一个序列图在哪里

A -> B.run()
B.run() -> B.m1()
B.m1() -> B.m2()

到目前为止,我已经想出了这些。

http://i51.tinypic.com/eja5bl.jpg http://i52.tinypic.com/1449s3.jpg

但在这里我不能清楚地提到B.m2()由B.m1()调用而是看起来像B.run()串行调用B.m1()和B.m2()。

-------------编辑----------------

这就是我目前绘制的http://i55.tinypic.com/21276kk.jpg

http://i55.tinypic.com/21276kk.jpg嗯,我的当前图表好吗?我想要的是这个。 (呼叫流程)

SpiritAdapter -> SpiritEngine::run(spirit:string, method:string, args[])
SpiritEngine::run(spirit:string, method:string, args[]) -> SpiritEngine::executeLogic(spirit:string, method:string, args[])
SpiritEngine::executeLogic(spirit:string, method:string, args[]) -> SpiritEngine::spirit(spirit:string, method:string, args[])
SpiritEngine::spirit(spirit:string, method:string, args[]) -> new SpiritAbstractor
SpiritEngine::executeLogic(spirit:string, method:string, args[]) -> SpiritAbstractor::method(args)
SpiritEngine::run(spirit:string, method:string, args[]) -> SpiritEngine::storeXDO()
uml sequence-diagram
3个回答
6
投票

您可以在B.m2()上添加一个小条,然后放置一个自指向箭头for example

Self message vs recursive call


1
投票

uml规范允许以可视方式显示嵌套调用:被调用的生命线应覆盖在调用生命线上。参见例如在this example中调用DetermAvailableReport()。

当然,你的工具是否支持它是另一回事......


0
投票

让我们说ObjectA有3个方法叫做MessageOne(),MessageTwo()和MessageThree()。

它们之间的关系如下所示

void ObjectA::MessageOne()
{
    MessageTwo();
}

void ObjectA::MessageTwo()
{
   MessageThree();
}

void ObjectA::MessageThree()
{
   // TODO
}

如果选择MessageThree()调用,使用Enterprise Architect如下图所示,您将获得一个提高激活级别的选项。

enter image description here

一旦选择了该选项(通过单击 - >箭头),您将获得满足调用堆栈序列图的确切图表(如下所示)。

enter image description here

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.