class Foo{};
class Demo
{
public:
std::vector<Foo> foo_vec;
};
如何画出它们之间的关系呢?
如何告诉别人foo_vec
is vector
在类图中(我发现this https://forums.visual-paradigm.com/t/using-stl-containers-like-std-vector-myclass-in-class-diagram-and-to-generate-c-code/16320)?有些帖子告诉我添加符号<:vector>
在代表构图的线上。
如果您想披露实现的细节,您可以选择如下开发的内容:
这个设计的关键是揭示了向量是一个模板类,并且它是通过以下方式实例化的binding模板参数T
到班级Foo
。放在Foo
在图中,您可以只在实例化级别显示它,但我更喜欢显示与T
。我在这里使用了一个实现,因为T
在 C++ 语义中隐式定义模板参数的接口,并且Foo
预计会实现这个(隐式)接口。我还使用了组合,因为 C++ 向量是按值计算的,并且向量拥有其元素的生命周期。
不幸的是,这使得设计看起来比实际情况更复杂。此外,它并没有显示出一个完整的现实std::vector https://en.cppreference.com/w/cpp/container/vector有第二个模板参数Allocator
。最后但并非最不重要的一点是,为了完全透明,您应该使用合格的组合物,并带有std::vector::size_type
限定符(记录可以进行索引访问)。您最终会得到一个非常复杂的图表。
因此,我建议考虑一种简化的方法。既然大家都知道什么是std::vector
是的,您可以使用更紧凑(并且仍然合法)的直接绑定形式,假设模板详细信息在其他地方定义:
这与您的实现非常接近并且非常具有可读性。但是,您可以进一步简化一步:vector
基本的设计选择?或者它只是实现一对多组合的一种实用方法?如果真正的意图只是这样的话Demo
可能由几个组成Foo
你可以这么简单:
在这里,您将让实现者选择实现组合的最佳方法,而不是在模型的大理石中抓住实现选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)