类的组合与聚合
发布时间:2020-12-13 22:37:03 所属栏目:百科 来源:网络整理
导读:还有一个类似的概念“组成(Composition,又译“组合”、“合成”)”,与聚合的区别就是部分类不能脱离整体类而存在。 对c++,形如: classB1; classB2; classB3; classA { B1b1; B2b2; B3*b3; }; B1,B2,B3都是部分类。 B1与A的关系是组成关系。 B2、B3与A
还有一个类似的概念“组成(Composition,又译“组合”、“合成”)”,与聚合的区别就是部分类不能脱离整体类而存在。
对c++,形如: classB1; classB2; classB3; classA { B1b1; B2&b2; B3*b3; }; B1,B2,B3都是部分类。 B1与A的关系是组成关系。 B2、B3与A的关系是聚合还是组成要根据这一条:部分类是否能脱离整体类而存在。 在这里可以理解他们的生命周期是否同步。 如果b2,b3是通过外部传入的,形如: public: A(B3*b3) m_b3=b3); } private: B3*m_b3; main() B2bbb; Aa(&bbb); bbb并不会因为a的消亡而消亡。那么就是聚合关系。 反之,如果 m_b3是在A的构造函数new,在A的析构函数delete,两者生命周期一样,那么就是组成关系。 引用的情况类似。 个人感觉uml为了满足所谓通用性,使得对模型的描述很粗糙,并没有吹嘘的那么好。 仅供参考。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |