UML类图中表示getter和setter的快捷方式或隐含方式

35
在UML类图中,如果一个类有5个需要可变和可读的私有属性,即使没有任何类的有趣功能,UML也会变得很丑陋,因为需要10个 get/set 方法:

Bloated

丑陋度除外,我觉得 UML 应该关注类的更有趣的功能。 我正确吗?
是否有一些标准快捷方式来表示或暗示私有属性的 getters 和 setters?

1
如果您不想建模非有趣的功能,那么可以完全摆脱getter/setter并将属性建模为简单属性。只填充上部属性区域,留下操作区域为空。在某些语言中 (例如C#,Delphi),getter/setter 对程序员来说几乎是看不见的。我认为您不应将任何责任转移到 UML ("Object Management Group (OMG)是一个非营利技术标准联盟..."),而应专注于键盘一侧的责任。我正确吗? - xmojmr
2个回答

45
您是正确的:在类模型中不需要包含标准getter和setter的“样板”签名(噪音)。不幸的是,UML没有定义一种用于暗示私有属性的getter和setter的标准符号。所以,您需要使用自己的约定。例如,您可以将一个普遍的解释(所有私有属性都有getter和setter,而私有只读属性只有getter)作为UML注释包括在图表中,注释呈矩形,右上角弯曲(也称为“笔记符号”)。
如果您希望为所涉及的属性使getter/setter约定更加明确,则可以创建自己的构造型(例如,“<>”和“<>”),用于对这些私有属性进行分类,如下图所示:
请参见以下链接:Class with get/set attribute stereotypes 我在描述/记录ECMAScript 6类的隐式getter和setter时也使用了这个方法。

好主意,这应该成为 UML 3.0 的一部分(?) :) - Martin Pfeffer
很好的想法,但我认为可以通过达成一个更简单的符号或符号约定来改进“可读”和“可变”的表达方式。这种表达方式非常明确易懂,但对我来说有点啰嗦。 - LeedMx

5
UML并不定义getter和setter操作。在编程语言中,使用get和set方法实现属性定义。例如,只读属性只有getter方法可以在实现代码中使用。如果将属性定义为计算属性,则通常在代码中使用getter方法来实现计算,并且可以省略setter方法,因为计算属性通常是只读的。在代码中,属性的可见性通常也会移动到getter和setter方法的可见性上。
对于定义为可读写而非计算的属性,在代码中定义getter和setter方法是没有意义的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接