UML中的联系、聚合与组合的区别
UML中的联系(association)、聚合(aggregation)和组合(composition)三个概念很相似,也很难理解。 联系联系(association)表明某个对象可以向另一个对象通过某种方式发送消息。发送消息的方法可以通过指针成员变量, 也可以是方法参数、局部变量等等。例如:
class A
{ private: B* itsB; };
聚合聚合(aggregation)是一种特殊的联系,它表明了“部分”到“整体”的关系,显著的特点就是不能包含循环的联系 (就是说,部分中不能包含整体)。如: class Node { private: vector<Node*> itsNodes; }; 上述代码只有当子节点不会成为父节点的父节点时(即,必须是树结构,不能是图结构),才能称之为聚合。 组合组合(composition)跟聚合几乎相同,唯一的区别就是“部分”不能脱离“整体”单独存在,就是说, “部分”的生命期不能比“整体”还要长。例如: class Car { public: virtual ~Car() {delete itsCarb;} private: Carburetor* itsCarb }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |