我需要为我的 JSF 应用程序绘制一个项目文档的类图。所以我有很多类作为托管 bean,有很多属性,因此有很多 getter 和 setter。
当我绘制类图时,我还应该在图中包含 getter 和 setter,还是可以简单地留下它们?
我需要为我的 JSF 应用程序绘制一个项目文档的类图。所以我有很多类作为托管 bean,有很多属性,因此有很多 getter 和 setter。
当我绘制类图时,我还应该在图中包含 getter 和 setter,还是可以简单地留下它们?
将它们包括在内是不合适的。您可以只添加一行说明访问器方法
包括 getter 和 setter 是个坏主意。他们正在浪费“房地产”来复制已经显示在类的属性/属性部分中的信息。
其他答案表明,UML 图需要记录 Java getter 和 setter 的“不寻常”可见性,或 getter 和 setter 中的“特殊”行为。
我想在某些情况下这可能是合理的。但是,我会反驳:
UML 图不需要显示所有内容。只有重要的事情。事实上,一个好的 UML 图的标志之一是它不会被不重要的东西混杂在一起。所以这些细节只有在它们真的很重要时才应该包括在内。
抽象边界的细节通常不是设计的关注点。Java 程序员应该只知道在需要时如何实现抽象/封装的基础知识。此外,程序员很可能对需要“多孔”抽象边界的情况有更好的洞察力。例如出于性能原因。(UML 不是为了表达那种东西而设计的。)
字段和方法的精确行为通常不是 UML 设计文档所关心的。(除非设计者还打算在 OCL 中指定方法的前置条件、后置条件和不变量的长度!)但是,如果 UML 图需要说明一个字段永远不会是null
,或者获取一个字段会增加一个计数器,您应该能够将其描述为该字段的注释(或 OCL 约束)。
最后,UML 图不应该是软件的唯一技术文档。javadocs 自动记录方法和字段的访问修饰符/可见性。同样,如果程序员已经实现了具有需要记录的“特殊”行为的 getter 和 setter,则应在 javadoc 注释中对此进行描述。
你不应该在你的图表中包含 getter 和 setter,除非他们做了一些特殊的事情:空检查等等。但这是糟糕设计的标志,所以一般的回答是“不,你不应该”。
UML 是一种相当非正式的表示法,最好先设置您将在项目或组织中使用的规则。例如,通常隐藏 getter 和 setter,但有时显示所有细节很重要。规则可以是:
如果你的属性是用一个私有变量和一对具有相同可见性的 getter 和 setter 实现的,你只需创建一个具有这种可见性的属性。
如果您的属性是使用私有变量实现的,但 getter 和 setter 具有不同的可见性,例如公共 getter 和受保护的 setter,则建议在模型中显示 getter 和 setter。
所以儿子...
通过创建您自己的 «get/set» 和 «get» 构造型来对这些私有属性进行分类,从而使 getter/setter 约定明确地用于相关属性可能很有用。请参阅我对 Shortcut 的回答,以在 UML 类图中表示或暗示 getter 和 setter。