对象关系
本节阅读量:生活中充满了反复出现的模式、对象关系以及对象之间的层次结构。通过探索和理解这些内容,我们可以更好地洞察现实生活中对象的行为,加深对这些对象的理解。
例如,假设有一天你走在街上,看到一个亮黄色的物体附着在一个绿色的灌木状物体上。你可能会意识到,鲜黄色的东西是花,绿色的灌木状物体是植物。即使你以前从未见过这种具体类型的植物,也会知道绿色的部分是树叶,会吸收阳光;会知道花有助于植物繁殖;也会知道,如果植物死亡,花也会随之死亡。
但在没有见过这种植物之前,你为什么会知道这些?这是因为你理解了“植物”这个抽象概念,并认识到眼前的植物是这个抽象概念的一个实例。你知道大多数植物都有叶子,有些植物会开花。你知道树叶会与阳光相互作用(即使你不知道具体细节),也知道花的存在依赖于植物。正因为你了解这些关于植物的一般规律,才能推断出许多关于这种植物的信息。
类似地,编程中也充满了重复出现的模式、关系和层次结构。用于理解现实对象的模式,同样适用于我们管理自己创建的程序对象。通过更详细地研究这些内容,我们可以更好地理解如何提高代码复用性,并编写更具扩展性的类。
在前面的章节中,我们已经探索了一些与循环相关的模式:通过创建循环和函数,让程序可以多次执行特定任务。此外,我们还创建了自己的枚举、结构体和类,以便实例化给定类型的对象。
我们还探索了层次结构的一些基本形式,例如数组(它允许我们管理一组元素)和递归(函数调用自身)。
不过,我们还没有深入关注对象之间的关系,尤其是这些关系在编程中的体现。
对象间的关系
现实生活中的两个对象可能具有许多不同类型的关系,我们会使用特定的“关系类型”词语来描述这些关系。例如:正方形 “是一个” 形状。汽车 ”有一个“ 方向盘。计算机程序员 “使用” 键盘。花 “依赖” 蜜蜂授粉。学生是班级的 “成员”。你的大脑作为你的 “一部分” 存在(至少可以合理地这样假设)。
所有这些关系类型在C++中都有类似的存在。
在本章中,我们将探索“一部分”、“有一个”、“使用一个”、“依赖”和“成员”等关系类型之间的细微差别,并展示它们在C++类中的用途。我们还会探讨一些不太适合放在其他章节中的相关主题。
然后,我们将在接下来的两章中,通过C++的继承模型和虚函数来探索 “是一个” 关系。是的,这是一个重要主题。
好的,足够的背景。让我们开始吧。