代码之家  ›  专栏  ›  技术社区  ›  Mat Kelly

用uml表示重载方法

  •  6
  • Mat Kelly  · 技术社区  · 17 年前

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

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

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

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

    谢谢。

    5 回复  |  直到 17 年前
        1
  •  3
  •   Vincent Ramdhanie    17 年前

    在子类中,指定与要重写的方法具有相同签名的方法,并向该方法添加注释{redefines}。例如:

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

    这意味着doSomething()方法重写了超级类中的方法。是的,方法的参数如图所示。在示例中,p是athing类型的paremeter。

        2
  •  3
  •   Gabriel Ščerbák    16 年前

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

        3
  •  2
  •   Brian Matthews    17 年前

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

        4
  •  2
  •   alepuzio    17 年前

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

    1. 你可以写一篇关于这种方法的笔记;
    2. 您可以使用关键字原型编写<< 超载 >gt;在此方法中;
        5
  •  0
  •   Ted Johnson    17 年前

    以上大多数答案在回答某个问题时都是正确的。亚历普齐奥、文森特和伯马修斯68都有在上下文中有意义的答案。

    **如果问题是重写具有相同签名的超类方法,则重新定义是正确的定义。如果您创建的同一个方法具有不同的参数,这是重载的,那么我不认为这是可以从结构上建模的,您可以用一个序列图来显示它,例如,它是行为的,但仍然不是真正的。

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

    **如果您的问题/问题只是在参数附近,而不是在通常是大多数UML工具设置的图表中显示出来。

    **如果要更清楚地说明您在做什么,请使用关键字<>,还请注意,关键字不是原型,因为它不是元模型的一部分。

    推荐文章