class 图总是需要属性吗?

Does a class diagram always need attributes?

所以,我明白 class 可以有属性和方法。

1) Would it be possible if a class has a method but no attribute? (this seems impossible, it seems to me that it defeats the purpose of creating the class)

2) Would it be possible if a class with attribute(s) but no method? (this seems possible)

非常感谢!

没有属性(有方法)的class和没有操作(有属性)的class都是可能和合法的,但是很少见。 Class 封闭意味着你不应该直接访问 class 属性。然而,您可能有一个 class 用于存储数据(仅属性)和另一个用于管理该数据(仅操作)。 另请注意,您的模型可能不会显示属性或操作(甚至两者),即使它们存在于 class.

1) 是的,您有时可以在实用程序中看到它 类

class MyUtils {
  public int add(int a, int b) {
    return a + b;
  }
}

它有多大用处完全是另一个问题,但是建模它没有问题。

另一种情况是接口(有时表示为抽象 类),其中不允许使用属性(或更一般地说是状态),只有方法或方法 prototypes/headers。

2) 是的,这在贫血模型中很常见,其中一些 类 仅充当数据持有者;由于在图中显示访问器方法不是一个好习惯,因此您可能只会看到属性,而看不到方法;或者如果属性是 public,并且不需要像 C++ 结构这样的访问器。

同样,在设计模型中,您很少看到任何方法,因为您关注的是 类 之间的关系,而不是它们的实现行为。

类 带有方法,但没有字段,通常用作实用程序 classes。例如,您有几个函数可以对文本文件进行一些编辑。创建一个 class EditationsUtilities,它将只有编辑方法。有些人认为这种做法是邪恶的,但它被广泛使用。 Utility classes are evil? Utility classes are evil?

类 有字段但没有方法——它们被称为结构。并且仍然是 - 在 C 中。例如,您有一个 class 点,它只有两个字段:x 和 y。现在这样的 classes 被认为是不好的风格,但仍然被广泛使用。他们说最好将 x 和 y 声明为私有的,并为它们创建 getters 和 setters 方法。有趣的是,有些人认为 getters/setters 邪恶。 http://www.javaworld.com/article/2073723/core-java/why-getter-and-setter-methods-are-evil.html

在某些语言中,字段、属性和特性之间存在差异,有些语言必须具有 getters/setters。在这些情况下,class 不能有没有方法的属性,因为属性(不是字段!)必须有 getter and/or setter.

在 UML(class 图)中,当您开始考虑 classes 时,您可以绘制一个只有空 classes 矩形的图。所以,显然他们不会有领域或方法。但这只是暂时的。在代码中,如果没有字段和方法,就不会有 classes。

所以,你方便就用吧。你还感受不到,哪种组织方式更适合你的SW