用于OCaml直接对象的UML

时间:2009-03-16 18:24:58

标签: oop uml ocaml anonymous

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

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

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

感谢。

2 个答案:

答案 0 :(得分:4)

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

UML 2.0的最新版本 Anonymous class example
(来源:informit.com

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

Source Page - http://www.informit.com/articles/article.aspx?p=336264&seqNum=3

来自UML规范本身:

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

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

答案 1 :(得分:3)

你可以给它一个nonce-name或其他一些公式值。在这种情况下,“正确地”只是意味着一些明确的东西。国际UML标准组织或任何事情都没有“正确答案”。

如果你想要一个更具体的答案,为什么不称它为Anonymous_foo_mungler,其中“foo_mungler”被你给它的描述性名称所取代,如果不是< / em>匿名。