gpt4 book ai didi

oop - OCaml 直接对象的 UML

转载 作者:行者123 更新时间:2023-12-01 10:16:09 24 4
gpt4 key购买 nike

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

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

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

谢谢。

最佳答案

这是我发现的。我会按照下面的图片(如果可以的话),但首先进行一些讨论。在 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 规范本身:

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

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

关于oop - OCaml 直接对象的 UML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/651599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com