【问题标题】:Shortcut for denoting or implying getters and setters in UML class diagrams在 UML 类图中表示或暗示 getter 和 setter 的快捷方式
【发布时间】:2015-03-24 05:54:35
【问题描述】:

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

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

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

【问题讨论】:

  • 如果您不想对不感兴趣的功能进行建模,那么您可以完全摆脱 getter/setter 并将属性建模为简单的属性。仅填充上部属性隔间并将操作隔间留空。在某些语言中(例如C#Delphi),无论如何,getter/setter 对程序员来说几乎是不可见的。我觉得你不应该将任何责任转移给 UML(“Object Management Group (OMG) 是一个非盈利的技术标准联盟......”)并专注于在你身边的键盘的责任。我说的对吗?

标签: uml getter-setter class-diagram specifications


【解决方案1】:

你是对的:没有必要在类模型中包含标准 setter 和 getter 的(噪音)“样板”签名。不幸的是,UML 没有定义标准表示法来暗示私有属性的 getter 和 setter。因此,您必须使用自己的约定。例如,您可以包含一个通用说明(所有私有属性都有 getter 和 setter,而私有只读属性只有 getter)作为 UML Comment,显示为右上角的矩形附在图表上的弯曲(也称为“注释符号”)。

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

我还使用它来描述/记录 ECMAScript 6 类的隐式 getter 和 setter。

【讨论】:

  • 好主意,应该是 uml 3.0(?) 的一部分 :)
  • 好主意,仍然认为可以通过同意readablemutable 的更简单的符号或符号来改进它,这是非常明确和易读的,但对我的口味来说有点冗长
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多