【发布时间】:2012-02-09 09:31:44
【问题描述】:
是否有一种公认的方式来描述 UML 类图中由 boost 共享指针持有的对象(即,应该使用空的或完整的菱形,如聚合或组合)?
【问题讨论】:
-
如果你会画UML图,你也知道对象的所有权关系,那你为什么需要一个智能指针呢?
标签: c++ boost uml shared-ptr
是否有一种公认的方式来描述 UML 类图中由 boost 共享指针持有的对象(即,应该使用空的或完整的菱形,如聚合或组合)?
【问题讨论】:
标签: c++ boost uml shared-ptr
我不知道关于如何将智能指针建模为关系的总体共识。
黑色菱形表示控制寿命,白色菱形表示不控制寿命,因此您可以在本地同意将黑色菱形用于unique_ptr,将所有黑色菱形用于shared_ptr,将白色菱形用于weak_ptr。
如果你真的想为 smart_ptr 建模,我建议在关系中添加一个属性类:
0
| /----------------\
+--+ shared pointer |
| \----------------/
V
【讨论】:
您的 UML 类模型应该是抽象的并且没有语言习语。
实际上,您可以为包括OCL 约束的每种类型的智能点创建关系的原型。我对每种智能指针子类型的具体语义不够熟悉,无法提供您的详细信息,但OCL Specification 应该会有所帮助。
【讨论】: