3

我在 OCaml 中创建了一个直接对象。

let x = 
object (self)
val dataMember = 3
method aMethod = print_endline "Called a method"
end;;

由于对象没有名称(它被认为是匿名的吗?),它如何在 UML 中正确表示?

谢谢。

4

2 回答 2

4

这是我发现的。我会按照下面的图片(如果可以的话),但首先进行一些讨论。在 UML 中命名某些东西并不意味着它在实现中不能是匿名的。我更难以将它显示在另一个类的“内部”,因此下面使用的包/组件包含行。您还可以使用实例化连接来显示您要查找的内容。您也可以使用组件,因为它们允许包含。最后,虽然我很伤心,为什么要为匿名类建模,因为它不是结构的一部分,因为您永远不会在类之外引用它(IN GENERAL),而是更多的行为。因此,为什么实例和属性允许匿名元素。如果你开始为 LISP 等建模,这个问题会变得非常有趣。

UML 2.0 的最新版本:( 来源:informit.com匿名类示例

请注意,它是图 3.22,并且作者说“Stereotype”这是不正确的,因为它不是语言的一部分,所以它是一个关键字,这意味着不是正式模型的一部分,任何旧字符串。并非所有工具都支持这种表示法,但 RSA/RSM 确实让我感到惊讶,并且使用了接近这种表示法的东西。

源页面 - http://www.informit.com/articles/article.aspx?p=336264&seqNum=3

从 UML 规范本身:

对于属性 - 属性符号可能显示为在其名称字符串中仅包含一个名称(不带冒号)。这意味着嵌套在包含类的名称空间中的匿名命名类的定义。该部件有这个匿名类作为它的类型。匿名类的每次出现都不同于其他任何出现。匿名定义的类具有用部件符号指定的属性。允许显示定义匿名类的属性和操作的隔间。

For Instances - (名称对于实例是可选的)未命名分类器的匿名实例规范的标准符号是带下划线的冒号 (':')。如果实例规范具有值规范作为其规范,则值规范显示在名称后面的等号(“=”)之后,或者在名称下方不带等号。如果使用包含名称的封闭形状(例如矩形)显示实例规范,则值规范显示在封闭形状内。

于 2009-03-24T03:38:56.627 回答
3

您可以给它一个随机名称,或其他一些公式值。在这种情况下,“正确”实际上只是意味着清楚的东西。国际 UML 标准机构或任何东西都没有“正确答案”。

如果您想要一个更具体的答案,为什么不将其称为Anonymous_foo_mungler“ ”,如果它不是匿名的foo_mungler,则将其替换为您会给它的描述性名称。

于 2009-03-16T18:41:52.840 回答