类图是否总是需要属性?

时间:2017-07-26 14:25:57

标签: uml software-design class-diagram

所以,我确实理解一个类可以有属性和方法。

  

1)如果一个类有一个方法但没有属性会有可能吗? (这似乎是不可能的,在我看来,它打败了创建课程的目的)

     

2)如果一个具有属性但没有方法的类是否可能? (这似乎有可能)

非常感谢!

3 个答案:

答案 0 :(得分:4)

没有属性(带方法)和没有操作的类(带属性)的类都是可能且合法的,但是很少见。 类密码化意味着您不应直接访问类属性。但是,您可能有一个用于存储数据的类(仅限属性),另一个用于管理该数据(仅限操作)。 另请注意,您的模型可能不会显示属性或操作(甚至两者),即使它们存在于类中。

答案 1 :(得分:4)

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

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

完全是另一个问题是多么有用,但建模时没有问题。

另一种情况是接口(有时表示为抽象类),其中没有允许的属性(或更一般地说是状态),只有方法或方法原型/头。

2)是的,这在贫血模型中很常见,其中一些类仅作为数据持有者;因为在图中显示访问器方法不是一个好习惯,所以你可能只看到属性,而不是方法;或者如果属性是公共的,并且不需要访问器,例如C ++结构。

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

答案 2 :(得分:0)

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

带有字段和没有方法的类 - 它们被称为结构。仍然是 - 在C中。例如,你有一个Point类,它只有两个字段:x和y。如今这类课程被认为是不好的风格,但仍然被广泛使用。他们说如果将x和y声明为私有,并且将为它们制作getter和setters方法会更好。有趣的是,有些人认为吸气者/制定者是邪恶的。 http://www.javaworld.com/article/2073723/core-java/why-getter-and-setter-methods-are-evil.html

在某些语言中,字段,属性和属性之间存在差异,而某些语言必须具有getter / setter。在这些情况下,如果没有方法,则类不能具有属性,因为属性(不是字段!)必须具有getter和/或setter。

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

所以,请使用它,因为它对您来说很方便。您还不能感觉到,SW的组织方式更好。