我应该在 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 的内部行为建模,那么可以。
如果您只是对其外观进行建模,则不必(但您仍然可以)。
所以问题很简单。我只是在互联网上找不到答案。我认为私有方法在图中没有用,说明不了多少。但也许我想错了。
是的,您应该包括它们。它更详细地介绍了 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 的内部行为建模,那么可以。 如果您只是对其外观进行建模,则不必(但您仍然可以)。