我应该在 UML class 图中包含私有方法吗?

Should I include private methods into UML class diagram?

所以问题很简单。我只是在互联网上找不到答案。我认为私有方法在图中没有用,说明不了多少。但也许我想错了。

是的,您应该包括它们。它更详细地介绍了 class 的工作原理。 IBM 实际上对私有方法有一个特殊的表示法 - https://www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell/

意见:

UML 不是* 4GL 编程语言。你用它来传达一个想法、设计、架构。您只添加服务于该目的的信息。它没有"complete"的概念。就像书中的文字一样,您只使用传达信息所需的文字。

如果作为系统文档的一部分,需要显示所有成员,那么我们之后生成即可。

UML 不是目的,它只是一种建模语言 来与人交流。

所以,如果它符合你的目的,你就添加它,否则你就把它留下。

*) 已经在这方面做了一些尝试,但不是很成功(togetherJ springs to mind)

私有方法是 class 的实现细节,而不是其 public API。

:

如果您使用图表显示 class 的外部接口,或者 class 所属的某些子系统,则没有理由包含它们。他们只会增加视觉噪音并混淆 reader.

Yes/Maybe:

另一方面,如果您试图传达 class 本身的内部设计,或者它与另一个 class 的紧密耦合协作(想想 C++ 中的 friend ), 那么它可能是合适的。

这取决于您建模的内容。

一般来说,UML 提供了一种机制来显示操作(和类似的属性)可见性。由于可以在图表上描述私有功能,因此您显然可以 将其显示在图表上。但是,是否显示它取决于您正在建模的内容。 如果您正在为 class 的内部行为建模,那么可以。 如果您只是对其外观进行建模,则不必(但您仍然可以)。