2012-02-09 43 views
2

在UML类图中是否有一种公认的描述由boost共享指针保存的对象的方法(即应该使用哪一个,并使用空的或完整的菱形,如聚合或合成)?在UML中绘制智能指针

+1

如果你可以绘制UML图,你也知道对象所有权关系,那么为什么你首先需要一个智能指针呢? – zvrba 2012-02-09 09:54:07

回答

2

我不知道如何将智能指针建模为关系的整体共识。

黑色的钻石意味着控制生命时间,白色的钻石意味着不控制生命时间,所以你可以同意在本地使用黑色钻石for unique_ptr,所有黑色钻石用于shared_ptr,白色钻石用于weak_ptr。

如果你真的要建模smart_ptr,我建议增加一个属性类的关系:

0 
| /----------------\ 
+--+ shared pointer | 
| \----------------/ 
V 
2

你的UML类模型应该是抽象的,没有语言的成语。

实际上,您可以为每种类型的智能点创建关系的刻板印象,其中包括OCL约束。我对每种子类型的智能指针的具体语义都不太熟悉,以提供您的详细信息,但OCL Specification应该有所帮助。