【问题标题】:Howto UML: sub methods / calls / operations / proceduresHowto UML:子方法/调用/操作/过程
【发布时间】:2011-01-28 11:42:27
【问题描述】:

我不确定如何在 UML 序列图中建模子方法。在执行一个方法时,会调用另一个方法(来自同一个类)。我试着在下面举一个例子:

你们会如何在 UML 中建模(在序列图中)?

..
car1.drive();
..

... 在汽车类中:

..
drive(){
    this.startEngine();
}
startEngine(){
    this.getKey();
    this.insertKey();
}
..

一个小小的开始:

objx     car1
----     ----
|         |
| drive() |
|-------->| startEngine()
|         |------------.
|         |            |
|         |<-----------.
|         |

但是 getKey() 方法从何而来? 这必须通过另一个序列图来传达吗?或者有没有办法包含子程序?

【问题讨论】:

    标签: model methods uml


    【解决方案1】:

    您使用自我消息,如下所示:

    注意到“堆叠”的生命线了吗?这些是激活级别。它显示驱动方法调用startEngine,然后调用getKey 和insertKey。我已经隐含了回报。

    【讨论】:

    • 如何在 EA 中使 getKey 和 insertKey 处于同一级别?
    • 你的演示不是让“startEngine()”递归吗?
    【解决方案2】:

    您的图表上可以有多个类对象生命线。 您甚至可以让您的演员对象提供您的 get 密钥。 序列图可以帮助您确定事情发生的顺序。 如果您试图展示真实的生活情况,那么钥匙由您的司机演员提供。 因此 GetKey() 将是驱动程序的内部进程。 然后,驱动程序将 InsertKey() 插入汽车生命线。 Car 会将 VerifyKey() 作为内部进程并返回密钥是否被验证。 如果经过验证,驱动程序将在汽车上使用 TurnKey()。汽车将在内部 StartEngine() 并向驾驶员返回一条状态消息。

    【讨论】:

    • 感谢您的回复,但我的问题更多是关于建模子方法。我应该如何绘制子方法?我只是举了一个关于汽车的任意例子。
    猜你喜欢
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多