8

我正在尝试创建一个代表一些 Java 代码的 UML 图。

在一个类中,我有一个重载的方法。

据我所知,UML 图中没有显示方法的参数。

如何在 UML 中表示方法重载?

谢谢。

4

5 回答 5

4

在谈论重载时-例如,在您的类中,您有更多具有相同名称但签名不同的方法(参数,可能返回值取决于目标语言...),您应该提供签名。UML 没有指定你不能有方法参数。

于 2010-01-14T12:23:27.237 回答
4

在子类中,您指定与您希望覆盖的方法具有相同签名的方法,并向该方法添加注释 {redefines}。例如:

+doSomething(p:AThing):int{redefines}

这意味着 doSomething() 方法会覆盖超类中的方法。是的,方法的参数显示在图表上。如示例 p 是 AThing 类型的参数。

于 2008-12-01T01:36:24.663 回答
3

您没有说您的工具和 UML 图(我认为是类图),但您有两种方法:

  1. 你可以写一个关于这个方法的注释;
  2. 您可以在此方法中使用关键字构造型编写<<重载>>;
于 2009-01-07T15:37:40.453 回答
2

检查整个图表或单个类/接口的显示选项。大多数 UML 工具都有显示方法参数列表的选项。

于 2008-12-01T00:45:54.080 回答
0

考虑到某个问题,上面的大多数答案都是正确的。Alepuzio、Vincent 和 bmatthews68 都有在上下文中有意义的答案。

** 如果问题是关于重写具有相同签名的超类方法而不是重新定义是正确的定义。如果它重载是因为您创建了采用不同参数的相同方法,那么我认为这不可能在结构上建模,您可以使用序列图来展示这一点,例如行为图,但仍然不是真的。

所以 +doSomething(p:AThing):int{redefines} 是正确的,这就是文森特所说的。

** 如果您的问题/问题只是在图表中没有直观显示的参数,这通常是大多数 UML 工具中的设置。

** 如果您想更清楚自己在做什么,请使用关键字<>,还要注意关键字不是刻板印象,因为它不是元模型的一部分。

于 2009-05-21T18:51:25.473 回答