【问题标题】:UML Class Diagram: How do I omit attribute compartment AND omit parameters in operation compartment?UML 类图:如何省略属性隔间和操作隔间中的参数?
【发布时间】:2013-10-27 12:44:23
【问题描述】:

我想绘制一个 UML 类,其中我唯一指定的是操作的名称。换句话说,没有属性隔间,方法隔间包含方法的名称,但没有参数。我已经阅读了 UML 参考指南,显然我可以做这样的事情

--------------
|    Car      |
--------------
|changeChassis|
--------------

Car 是类名,changeChassis 是一个方法,它接受我不想指定类型的参数。换句话说,上述类的 Java 实现可能是

public class Car {
     private String chassis;
     public void changeChassis(String chassis) {
          this.chassis=chassis;
}

问题是我的图表不明确。我省略了属性隔间,但没有参数列表,我的方法 changeChassis 可能是一个属性。

我读过的一些文本建议您可以使用空参数列表来指示操作,即使该操作确实需要参数。例如,您可以编写 changeChassis() ,即使您所指的操作实际上是要采用参数。但是 UML 引用不允许这样做,而且显然是模棱两可的。

另一种解决方案是只放入一个空的属性隔间。例如:

--------------
|    Car      |
--------------
|             |
--------------
|changeChassis|
--------------

但是 UML 参考说你不能这样做,除非类真的没有属性。

有什么方法可以做我想做的事,遵守标准,避免歧义吗?

【问题讨论】:

    标签: uml


    【解决方案1】:

    NO这是一个非常糟糕的做法,一开始你的demo没有任何方法,实际上开发人员发现changeChassis作为一个属性,这可能是省略了void方法的返回类型,或者省略输入参数的名称,但不建议这样做。
    您需要指定整个类结构。

    【讨论】:

      【解决方案2】:

      根据UML specification,您当然必须用它的名称、参数和刹车来表示操作。 如果您省略参数,但保留空括号,它将与具有相同名称但不同参数的其他可能操作产生歧义.. 如果省略参数和括号,它将与具有相同名称但不相同参数但也具有属性的其他可能操作产生歧义......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-24
        • 1970-01-01
        • 2011-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多