【发布时间】:2016-10-26 03:32:25
【问题描述】:
public abstract class Shape {
abstract int area();
}
我们如何为抽象方法绘制 UML 类图?使用+、- 或#?
public class Room {
int nWindows;
}
如果类实例变量没有公有、私有或受保护怎么办?
【问题讨论】:
public abstract class Shape {
abstract int area();
}
我们如何为抽象方法绘制 UML 类图?使用+、- 或#?
public class Room {
int nWindows;
}
如果类实例变量没有公有、私有或受保护怎么办?
【问题讨论】:
根据UML规范:
在使用字体允许的情况下,抽象分类器的名称以斜体显示。或者或此外,抽象分类器可以在其名称之后或下方使用文本注释 {abstract} 来显示。
请注意,Operation 不是分类器。它仍然有一个 isAbstract 属性作为 BehavioralFeature 但 2.5 规范没有定义如何对抽象的事实进行建模。较早的规范(1.4.x)使用与分类器相同的方法,这是一种广泛认可的显示操作抽象的方法。请注意,大括号中的要素元素显示在行尾,而不是紧跟在名称之后(分类器在名称之后没有其他说明)。
可能作者在 2.5 规范中错误地遗漏了特征抽象符号。
抽象操作当然可以有任何可见性。
当然,只有当它包含的分类器(在你的例子中是类)也是抽象的时候,操作才可能是抽象的。
一般来说,UML 中的可见性类型是可选的,即您可以简单地省略它。只需考虑到 UML 是一个模型,因此它实际上可以忽略一些不相关的元素,或者可以在建模的后期指定它们。在 UML 中不使用任何可见性类型不允许您对它的最终可见性类型做出任何假设。
另一方面,如果在实际代码中您没有使用可见性类型规范(如果允许的话),则存在一些默认行为。例如
等等。
【讨论】: