当前位置: 首页 > 知识库问答 >
问题:

在UML类图中表示或暗示getter和setter的快捷方式

轩辕成天
2023-03-14

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

撇开丑陋不谈,我觉得UML应该专注于类更有趣的功能。我说的对吗?

是否有一些标准的快捷方式来表示或暗示私有属性的 getter 和 setter?

共有2个答案

陆文康
2023-03-14

UML 不定义 getter setter 操作。Get和Set方法在编程语言中用于实现属性定义。例如,readonly 属性仅在实现代码中具有 getter 方法。如果属性定义为计算,则通常在代码中使用 getter 方法来实现计算,并且可以省略 setter,因为计算属性通常是只读的。属性的可见性通常也会移动到代码中 getter 和 setter 方法的可见性。在代码中为定义的读写和未计算的属性定义 geter 和 setter 方法没有意义。

庾兴发
2023-03-14

你是正确的:没有必要在类模型中包含标准制定者和获取者的“样板”签名。不幸的是,UML没有定义一个标准符号来暗示私有属性的getter和setter。所以,你必须使用自己的惯例。例如,您可以包含一个通用的解释(所有私有属性都有getter和setter,而私有只读属性只有getter)作为UML注释,显示为一个矩形,右上角弯曲(也称为“注释符号”)附加到图上。

如果您希望使getter/setter约定对相关属性更加明确,则创建自己的原型(例如,«get/set»和«get»),用于对这些私有属性进行分类,如下图所示:

我还用它来描述/记录ECMAScript 6类的隐式getters和setters。

 类似资料:
  • 假设我有一个类Things,它包含许多不同的实例变量。我为它们分别创建了单独的setter和getter方法。如果我想创建另一个存储things'class'的class2,那么为things类中的实例变量创建额外的setter和getter方法是很好的编码方法。另外,假设我有另一个使用class2的class3,那么重复setter和getter方法会产生高耦合吗?

  • 问题内容: 始终建议使用getter / setter访问私有变量。为什么最好将它们声明为public并对其进行访问。无论如何,我们正在使用getter和setter访问它? 问题答案: @mre的回答非常好,您的问题很重要。总结一下:您将对象的字段设置为私有,以控制其他对象使用它的方式。您的对象使用setter来: 限制和验证传递给设置器的数据 隐藏其内部数据结构(服务对其他对象感兴趣,而不是服

  • 快捷菜单是一个浮动命令栏,它在用户单击鼠标右键时显示。快捷菜单可包含与命令栏同样的控件类型,控件在其中的行为与在命令栏中一样。然而,在大多数应用程序中,不能由应用程序接口创建或修改快捷菜单,因此,必须在运行时间创建和修改快捷菜单。 在运行时间添加快捷菜单 快捷菜单和其他工具栏的唯一区别是:用Add 方法创建快捷菜单时,必须将msoBarPopUp 指定为 position 参数的值。以下示例新建一

  • 有两种类型的对象属性。 第一种是 数据属性。我们已经知道如何使用它们了。到目前为止,我们使用过的所有属性都是数据属性。 第二种类型的属性是新东西。它是 访问器属性(accessor properties)。它们本质上是用于获取和设置值的函数,但从外部代码来看就像常规属性。 Getter 和 setter 访问器属性由 “getter” 和 “setter” 方法表示。在对象字面量中,它们用 get

  • 菜单栏: Code —> Generate —> Getter and Setter Mac: command + N Windows\/Linux: Alt + Insert —> Getter and Setter

  • 问题内容: 案例A 不遵循Getter&Setter约定 human / human.go main / main.go 案例B 遵循getter和setter约定 main / main.go 以下约定的问题是,在提供其字段名称时无法实例化该结构。我想使用约定,但是我只能使用私有访问。 问题答案: 实例化结构(或对象,采用面向对象的语言)时,无论如何都不应指定私有字段的值。但是,提供可能以私有字