【问题标题】:How do I denote a pure virtual function in a UML class diagram?如何在 UML 类图中表示纯虚函数?
【发布时间】:2019-04-15 16:03:23
【问题描述】:

我是一名学习 C++ 的学生。我正在为我的程序创建一个涉及继承和抽象/具体类的 UML 类图,但我不太确定如何表示纯虚函数。感谢您的帮助,谢谢!

【问题讨论】:

    标签: c++ uml class-diagram virtual-functions pure-virtual


    【解决方案1】:

    UML 标准确实表明行为特征(例如方法/操作)可以将其属性 isAbstract 设置为表示它是抽象的并且没有实现。然而,没有关于这应该如何在图中显示。

    根据uml-diagrams.org 和其他来源,在较旧的UML 版本(1.4.x)中,抽象操作以斜体 显示名称或在其名称后带有文本{abstract} 标记.斜体约定被广泛使用(另见here)。

    当前的 UML 不再使用斜体,也没有说明如何表示 isAbstract 属性。尽管如此,{abstract} 标记应该仍然有效。

    【讨论】:

    • P. UML 2.5 的第 99 条:在使用字体允许的情况下,抽象分类器的名称以斜体显示
    • @ThomasKilian 是的,但这仅适用于分类器而不适用于操作。它与 1.4 标准非常不同,其中明确表示“如果此类不实现操作;即不提供方法,则操作可能标记为“{abstract}”或操作签名可以斜体表示它是抽象的。”(第 3-46 页)。
    • @ThomasKilian 行为特征和操作的符号不再提及斜体符号(但仍为静态下划线)。但两者都使用 {property...} 表示法(即使 abstract 没有明确提及 p108-109 + 116)。不过我同意你的观点,我不会对斜体感到震惊,因为它在过去被大量使用(包括 UML 之前的符号,例如在 GoF 中)。
    • 我猜上面的cmets已经足够好了。没有什么是完美的,即使是规格。
    • @Ben_LCDB 感谢您告诉我!我们很幸运:Wayback 机器保存了 2019 年页面的快照。我已经相应地更新了链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多