class - 我们如何在uml类图中绘制抽象方法

标签 class uml diagram

public abstract class Shape {   
    abstract int area();
}

我们如何为抽象方法绘制 UML 类图?使用+ , -# ?
public class Room { 
    int nWindows;   
}

如果类实例变量没有公有、私有(private)或 protected 怎么办?

最佳答案

抽象的

根据UML规范:

The name of an abstract Classifier is shown in italics, where permitted by the font in use. Alternatively or in addition, an abstract Classifier may be shown using the textual annotation {abstract} after or below its name.



但是请注意,操作是 不是 一个分类器。它仍然有一个 isAbstract 属性作为 BehavioralFeature,但 2.5 规范没有定义如何对抽象的事实进行建模。较早的规范(1.4.x)使用​​与分类器相同的方法,这是一种广泛认可的显示操作抽象的方法。请注意,大括号中的要素元素显示在行尾,而不是紧跟在名称之后(分类器在名称之后没有其他说明)。

可能作者错误地在 2.5 规范中遗漏了特征抽象符号。

抽象操作当然可以具有任何可见性类型。

当然,只有当它包含的分类器(在你的情况下是类)也是抽象的时,操作才可能是抽象的。

没有能见度的种类

一般来说,UML 中的可见性类型是可选的,即您可以简单地省略它。只需考虑到 UML 是一个模型,因此它实际上可以忽略一些不相关的元素,或者可以在建模的后期指定它们。在 UML 中不使用任何可见性类型不允许您对它的最终可见性类型做出任何假设。

另一方面,如果在实际代码中您不使用可见性类型规范(如果完全允许),则存在一些默认行为。例如
  • 在 Java 中它是包 (#) - 在 UML 的理解中,Java 称之为“包私有(private)”,
  • 在 C++ 中,你最终会得到私有(private)特性 (-),
  • 在 PHP 中,此类功能被视为公共(public) (+)

  • 等等。

    关于class - 我们如何在uml类图中绘制抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40253253/

    相关文章:

    uml - 组件图是否有人类可读和基于文本的表示?

    java - 为圣诞节烘焙 cookies 的程序,类(class)无法正常运行

    uml - 如何在 PlantUML UML 事件图中引用早期的事件

    java - 书店的类图

    uml - 如何在 UML2 组件图中正确使用端口和接口(interface)

    oop - UML 只能用于面向对象吗?

    android - Achartengine 自动跟随 - y 轴上的额外空间

    php - 在 PHP 中从父级上下文访问父级的重写方法

    php - 如何在另一个类中使用$PDO变量?

    java - 如何使一个类方法与数组中的另一个类方法一起使用?