类型为“std::vector”的变量成员的类图

2023-12-29

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(使用前将#替换为@)

类型为“std::vector”的变量成员的类图 的相关文章

随机推荐