泛化
泛化,也称作继承关系。指面向对象中派生类与基类之间的关系,一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514144645393.jpg#pic_center)
指ClassA为ClassB、ClassC的父类。一般来说,ClassA中包含了ClassB,ClassC的共性属性或方法。
实现
在C++中,对于拥有共同行为的类可以将它们抽象出一个接口(实际上可以理解为父类,该类里面只保留了公有接口,不包含成员属性),当一个类实现了该接口中的方法,称为实现。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514145142715.jpg#pic_center)
指Interface1提供了可实现的接口(在C++类里面一般表现为纯虚函数)。ClassA和ClassB分别都实现了Interface1提供的接口,两者实现可以存在不同。
依赖
两个相对独立的类对象,当类A中需要依赖类B的实例化对象时,称其为依赖关系。在C++中具体体现为,类A当中使用了类B,其中类B是作为类A的方法参数、方法中的局部变量、或者静态方法调用。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514145613227.jpg#pic_center)
关联
指一个类的实例A使用另外一个类的实例B,这两个对象之间为关联关系,关联关系分为单项关联和双向关联。在C++中,单向关联表现为:类A当中使用了类B,其中B作为类A的成员变量。双向关联表现为:类A当中使用了类B作为成员变量;同时类B中也使用了类A作为成员变量。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514145645769.jpg#pic_center)
聚合
聚合关系在代码上与关联关系区别不大,强调的是语义上的区别,关联关系中两个类A/B是相对独立的关系,而聚合强调的是整体/个体的关系,个体可以独立存在,同时又可以作为整体的一部分。如电脑相对与键盘,班级相对于单个学生。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514145826879.jpg#pic_center)
Class为班级类,Student为学生类。体现聚合关系,一个班级整体可以由多名学生构成,同时学生对象也可以独立存在表示其含义。
组合
相比与聚合关系中强调的整体/个体,组合关系语义上的耦合性更强,强调的是整体/部分的关系,如身体相对于胳膊,老鹰相对于翅膀等。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514150313358.jpg#pic_center)
关系强弱
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)