章节目录

对象关系

本节阅读量:

生活中充满了重复出现的模式、对象关系和对象之间的层次结构。通过探索和理解这些,我们可以洞察现实生活中的对象的行为,增强对这些对象的理解。

例如,假设有一天你在街上走,你看到一个亮黄色的物体附着在一个绿色的灌木状物体上。你可能会认识到,鲜黄色的东西是花,绿色的灌木状的东西是植物。即使你以前从未见过这种特殊类型的植物,你也会知道绿色的东西是树叶,会吸收阳光。会知道花有助于植物自我繁殖。也会知道,如果你杀死了植物,花也会死。

但你怎么知道这一切,在没有遇到过这种类型的植物之前?你知道这一点是因为你理解了植物的抽象概念,并认识到这个植物是那个抽象的实例化。你知道大多数植物是由叶子组成的,有些有花。你知道树叶与阳光相互作用(即使你不知道细节),花的存在取决于植物。因为你知道所有这些关于植物的事情,你可以推断出很多关于这种植物的东西。

类似地,编程也充满了重复的模式、关系和层次结构。管理真实对象的模式适用于我们管理自己创建的编程对象。通过更详细地研究这些,我们可以更好地理解如何提高代码重用性,编写更具扩展性的类。

在前面的章节中,我们已经探索了关于循环的一些模式:通过创建循环和函数,以允许我们多次执行特定的任务。此外,我们还创建了自己的枚举、结构体和类,以允许我们实例化给定类型的对象。

我们还探索了层次结构的一些原始形式,如数组(它允许我们管理一组元素)和递归(函数调用自身)。

然而,我们还没有太多地关注对象之间的关系,特别是当它与编程相关时。


对象间的关系

两个对象在现实生活中可能具有许多不同类型的关系,我们使用特定的“关系类型”词来描述这些关系。例如:正方形 “是一个” 形状。汽车 ”有一个“ 方向盘。计算机程序员 “使用” 键盘。花 “依赖” 蜜蜂授粉。学生是班级的 “成员”。你的大脑作为你的 “一部分” 存在(至少可以合理地假设是这样的)。

所有这些关系类型在C++中都有类似的存在。

在本章中,我们将探索关系类型“一部分”、“有一个”、“使用一个”、“依赖”和“成员”的细微差别,并展示它们如何在C++类的上下文中有用。我们还将探索一些其他地方不太适合的相关主题。

然后,我们将在接下来的两章中通过C++的继承模型和虚函数来探索 “是一个” 的关系。是的,这是一个大问题。

好的,足够的背景。让我们开始吧。


22.7 第22章总结

上一节

23.1 对象组合

下一节