【问题标题】:C++ specific UML modelling of pointers/references指针/引用的 C++ 特定 UML 建模
【发布时间】:2015-12-23 06:13:46
【问题描述】:

在 C++ 中,值类型隐含地具有最强的关联,但我可以想象使用指针/引用时类之间的以下五种关系(按聚合强度排序):

 information level     +------+------+------+------+
 v           ownership>| none | weak |shared|unique|
+----------------------+------+------+------+------+
|knows/includes/uses   |  2   |  3   |  4   |  5   |
+----------------------+------+------+------+------+
|passes/forward declare|  1   |  --  |  --  |  --  |
+----------------------+------+------+------+------+

其中一些可能不符合 UML 的意图(例如 1)。但是恕我直言,希望看到我的设计的耦合措施。这五种类型的关联如何适合类图。表示这种关联的常见做法是什么?

这是我目前的想法:

  1. ??
  2. 定向关联 - 箭头。
  3. 聚合 - 空心菱形。[1]
  4. 聚合 - 空心菱形。[1]
  5. 成分 - 填充钻石。

[1] 不清楚。如果有一个实心菱形,则所有空心菱形都表示所有权较弱。但是如果没有专门的所有者,弱引用和共享引用是无法区分的。还是弱所有权在概念上与无所有权相同?

【问题讨论】:

  • 只有 Java 适合 UML。你运气不好。
  • 呵呵。哈哈。我想你不应该过于关注精确的连接器。除非您有一些需要该信息的智能代码生成,否则关联在大多数情况下都会起作用。
  • 在高度多态性和dynamic 构建中,确实需要注意内存管理。记住它的 c++ 而不是 Java。不知道 RAII 和异常安全有什么好玩的。
  • LOL 指的是“仅 Java”,而不是您的问题。

标签: c++ uml


【解决方案1】:

UML 故意不提供特定于语言的概念。使用 UML,您应该为给定的问题域建模您的系统。语言细节留给实施模型的人。

【讨论】:

    【解决方案2】:

    UML 中没有关于如何解释各种类型关系之间的语义差异的严格规则,尤其是没有关于如何将某种编程语言中的结构转换为 UML 的严格规则。

    但业内有一些最佳做法。我已经在我的网站上记录了其中的一些最佳做法。

    在您的情况下,我也会考虑使用依赖项。这可能是 UML 中最薄弱的环节。当我想在一个参数或属性中直观地强调类型的使用时,我经常使用它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-13
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多