【发布时间】: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]
- 聚合 - 空心菱形。[1]
- 成分 - 填充钻石。
[1] 不清楚。如果有一个实心菱形,则所有空心菱形都表示所有权较弱。但是如果没有专门的所有者,弱引用和共享引用是无法区分的。还是弱所有权在概念上与无所有权相同?
【问题讨论】:
-
只有 Java 适合 UML。你运气不好。
-
呵呵。哈哈。我想你不应该过于关注精确的连接器。除非您有一些需要该信息的智能代码生成,否则关联在大多数情况下都会起作用。
-
在高度多态性和dynamic 构建中,确实需要注意内存管理。记住它的 c++ 而不是 Java。不知道 RAII 和异常安全有什么好玩的。
-
LOL 指的是“仅 Java”,而不是您的问题。