-
类的关系
1.1 继承和实现:继承表示有父子关系
1.2 依赖:(use–a),表示一个类要使用(use)另一个类
1.3 关联:是一种平等的、朋友关系
(1)双向关联:双方都知道对方的存在,都可以调用对方的公有成员变量和函数
①在代码的表现为双方都拥有对方的一个指针或引用
②如果是值(对象)那么就不是关联了,而是组合。因为是值的话,C31对象消失C32对象也会消失。这和组合的定义就一样了 :整体与部分的关系,而且整体消失部分也会消失,部分不能独立于整体存在。
(2) 单向关联
①表示相识关系,C33有C34的指针,而C34不知C33,C33可以调用其公共成员变量和函数
(3)自身关联:自己的内部有着一个指向自身的指针或引用
1.4 聚合与组合
(1)聚合:(has–a ),表示整体-部分的关系,但部分可以脱离整体而单独存在 ,代码上整体不会马上创建部分,而是等待外界传给它
- 关联和聚合的区别
相同点:
都是一个类包含了另外一个类的指针
不同点:
语义上的差别。聚合是整体和部分的关系,关联是平等的朋友关系,比如。张三和李四,是关联。而张三和张三的杯子是聚合。张三和张三的鼻子是组合。
(2)组合:Contains-a。表示整体-部分的关系,但部分不能脱离整体而单独存在
①一般组合用的是值对象(其生命期与整体一致)
②聚合是指针。但有时组合也可以用指针,在构造函数中创建对象,析构函数中销毁对象。但不同的是,聚合,一般其对象指针是由类外传入的,而组合是在类内部的构造函数中new出来的。
③从语义上看,组合与聚合也是不一样的。当表示聚合时,部分可以脱离整体。而组合不行。