如何在 UML 中表示共享对象?
How to represent shared objects in UML?
为了设计我的代码,我正在绘制一些 UML Class 图。
我有一些共享对象,我想知道应该如何绘制,因为这些对象的所有权是真正共享的。
更具体地说,这里有一个正在发生的事情的 C++ 示例:
class A
{
public:
A(){
std::shared_ptr<CSharedObj> sharedObj = std::make_shared<CSharedObj>;
mB = B(sharedObj);
}
private:
B mB;
};
class B
{
public:
B(std::shared_ptr<CSharedObj>);
private:
std::shared_ptr<CSharedObj> mSharedObj;
};
class CSharedObj
{
public:
CSharedObj();
};
如何在 class 图表中表示这 3 个 class 之间的关系?
UML 没有准确定义这段 C++ 代码应该如何反映在图表中。有几种选择,这是我的建议:
我对 mB 使用了组合(实心菱形),因为当 A 的封闭实例被销毁时,B 的实例也被销毁。
因为 CSharedObject 的实例可能被多个拥有的对象共享,所以我为 mSharedObj 使用了共享聚合(空心菱形)。在整个项目中,您可以设置 shared_ptr 指向的对象使用共享聚合关系在 class 图中表示的约定。
请注意,此 class 图并未指定 A 创建的 CSharedObject 实例与 mSharedObj 指向的实例相同。如果需要,您可以添加注释来描述这一事实。
如果你真的想在图表中显示 shared_ptr,你可以这样做:
参见 UML 2.5 规范第 9.3 节,了解有关模板化 class 生成器的更多信息。
为了设计我的代码,我正在绘制一些 UML Class 图。 我有一些共享对象,我想知道应该如何绘制,因为这些对象的所有权是真正共享的。 更具体地说,这里有一个正在发生的事情的 C++ 示例:
class A
{
public:
A(){
std::shared_ptr<CSharedObj> sharedObj = std::make_shared<CSharedObj>;
mB = B(sharedObj);
}
private:
B mB;
};
class B
{
public:
B(std::shared_ptr<CSharedObj>);
private:
std::shared_ptr<CSharedObj> mSharedObj;
};
class CSharedObj
{
public:
CSharedObj();
};
如何在 class 图表中表示这 3 个 class 之间的关系?
UML 没有准确定义这段 C++ 代码应该如何反映在图表中。有几种选择,这是我的建议:
我对 mB 使用了组合(实心菱形),因为当 A 的封闭实例被销毁时,B 的实例也被销毁。
因为 CSharedObject 的实例可能被多个拥有的对象共享,所以我为 mSharedObj 使用了共享聚合(空心菱形)。在整个项目中,您可以设置 shared_ptr 指向的对象使用共享聚合关系在 class 图中表示的约定。
请注意,此 class 图并未指定 A 创建的 CSharedObject 实例与 mSharedObj 指向的实例相同。如果需要,您可以添加注释来描述这一事实。
如果你真的想在图表中显示 shared_ptr,你可以这样做:
参见 UML 2.5 规范第 9.3 节,了解有关模板化 class 生成器的更多信息。