我有以下代码:
class D;
class E;
#include "B.h"
#include "C.h"
#include "F.h"
#include "G.h"
#include <vector>
class A: public G {
B b;
std::vector<C> cs;
D* d;
std::vector<E*> es;
std::vector<F*> fs;
public:
A() { fs.push_back(new F); fs.push_back(new F); }
};
int main() {}
在Bouml中,我从这段代码中生成了类图:
图表
我认为 A 和 F 之间的 (https://softwareengineering.stackexchange.com/questions/255973/c-association-aggregation-and-composition) 关系必须产生聚合关系,但它产生了关联关系。如何建立聚合关系?
反向很难区分关联和聚合。在 Bouml 中,C 反向总是在指针引用类型时产生关联,即使通过模板(d、es 和 sf 的情况),或者组合(b 和 cs) 的情况)
Bouml从2012年4月26日发布的5.1版本开始管理C 11
这是您链接的页面如何描述关联和聚合:
关联:Foo有一个指向Bar对象的指针作为数据成员,而不管理Bar对象-
聚合:Foo有一个指向Bar对象的指针并管理该对象的生命周期-
因此,它们的区别在于,在聚合的情况下,A
(在您的情况下)管理指向对象的生命周期。目前,A
不管理F
对象的生命周期。因此,这种关系确实是关联的。这种关系显然与E
类型相同。
如果 A 的析构函数会销毁所有指向的对象,那么
A
将管理对象的生存期,并且根据给定的定义,映射将被视为聚合。
我没有Bouml的经验,但我非常怀疑它能否弄清楚析构函数的作用。我的猜测是,它是根据成员的类型以及它对现有标准类的了解来推断图表的。指针类型并不表示任何关于所有权的信息,因此仅根据类型,不可能区分关联和聚合。
然而,std::unique_ptr
明确表示所有权。如果向量包含它们,那么可以从类型中简单地推断出聚集关系。由于我没有使用Bouml的经验,我不知道它是否有这样的推论。
我开始研究 OOAD,我很难找到一个 代码示例来说明如何以编程方式实现、和。(到处都有几篇文章,但它们与 C# 或 Java 有关)。我确实找到了一两个例子,但它们都与我的导师的指示相冲突,我很困惑。 我的理解是,在: < li >关联:Foo有一个指向Bar对象的指针作为数据成员 < li >聚合:Foo有一个指向Bar对象的指针,Bar的数据被深度复制到该指针中。 < li >组成:Foo有一
我在UML中遇到了和关系的一些问题,我确实理解整体/部分关系,所以如果一个类不能没有它的整体而存在,那么它就成为一个强的组合关系,如果它仍然可以没有它的整体而存在,那么它就成为一个弱的聚合关系。 然而,当处理真正的软件需求时,有时会变得更加棘手。我有一个下面的类图,包括所有必要的属性、操作和特性,它们都正确地显示在UML标准中,但是我不确定我的关系: 1 接口和 6 类 有人可以确认我的关系是否正
我试图确认我对关联、聚合的代码外观的理解 聚合:哈斯-a。它具有另一种类型的现有对象 组成:由另一个对象组成 协会:我对此有两种看法。 > 当一个类与另一个类相关联时。因此,上述两个都是关联的示例。 关联是一种较弱的聚合形式,其中类不保留对其接收的对象的引用。 我的理解正确吗?我在这里和这里阅读了相互矛盾的文章,所以我真的不确定该遵循哪一个。我的理解似乎符合第一个环节。我觉得第二个环节是错误的,或
有人能帮我把这个mongoDB聚合转换成Spring数据mongo吗? 我试图在每个邀请函文件中获得未提醒与会者的电子邮件列表。 让它在mongo shell中运行,但需要在Spring data mongo中运行。 我的shell查询 ) 正如你们所看到的,这是我提出的,它在管道的项目和团队运作中并没有像预期的那样发挥作用。下面给出了生成的查询。 聚合对象创建 它创建以下查询 聚合对象生成的查询
本文向大家介绍C++聚合关系类的构造函数的调用顺序详解,包括了C++聚合关系类的构造函数的调用顺序详解的使用技巧和注意事项,需要的朋友参考一下 如图,表示一个聚合关系 下面就用简单的代码来实现 由此可以看出,对象的构造函数调用的顺序就好像我们造车子一样,先打造好引擎和其他部件才能拼装好汽车,析构函数的调用就和拆开汽车一样,先扒开最外面的,然后再扒里面的。 以上这篇C++聚合关系类的构造函数的调用顺
目前,我有个问题。我可以在mongodb中使用聚合函数查询相应的数据,但是在使用springdatamongodb后,我发现lookup不能使用变量将string转换为objectid,那么该如何编写这个聚合函数呢 如何在spring data mogodb中将其写成mongodb表达式