我的老师在UML类图中的方法名称之前使用感叹号和问号来区分命令(!
)和查询({{1} }):
我以前从未见过这个,我想知道它是否真的在实践中使用过,实际意义是什么。
基本上,命令是没有返回类型的方法,而查询是具有的方法,所以我认为这些符号是多余的。此外,我在互联网上找不到关于这种符号的任何内容。
我真的很感激澄清。
答案 0 :(得分:3)
这不是官方标记。除了通过签名加入明显的事物前缀这一事实之外,它只会让那些不熟悉这种符号的读者感到困惑。
答案 1 :(得分:2)
正如Anna Vopureta和Thomas Kilian所说,老师使用的符号不是标准的UML。但正如Anna Vopureta推荐的Martin Fowler的文章中所指出的那样,并且在Thomas Kilian的asnwer中遗漏了这一点,将那些表示纯粹查询(不改变状态)的返回值的操作/方法区分开来是有意义的。不(由于状态的变化)。
所以,我们必须处理三个案例:
纯查询方法可以通过将大括号中的操作属性query
附加到操作声明中来表示在UML类图中。
在您的示例中,正确的操作声明将是
+foo()
+bar1(): int
+bar2(): int {query}