23-1 对象关系
生命中充斥着事物间的循环模式、关联关系与层级结构。通过探索与理解这些规律,我们能洞悉现实物体的行为模式,从而深化对它们的认知。
例如,假设某天你走在街上,看见一株绿色的灌木状物体上附着着鲜黄色的物体。你很可能会认出那鲜黄色的东西是花朵,而绿色的灌木状物体是植物。即使从未见过这种特定植物,你也会知道绿色部分是叶片,负责吸收阳光;花朵则帮助植物繁衍后代。你还会明白:若摧毁植株,花朵也将凋零。
但若从未接触过此类植物,你如何知晓这些?因为你理解“植物”这一抽象概念,并能将眼前植株视为该抽象概念的具体体现。你知晓多数植物(部分)由叶片构成,部分带有花朵。你明白叶片与阳光的交互作用(即便具体机制未知),也理解花朵的存在依赖于植株本身。正因掌握了植物的普遍特性,你才能推断出这株植物的诸多特征。
编程领域同样充斥着循环模式recurring patterns、关联relationships与层级结构hierarchies。尤其在编程对象领域,支配现实物体的模式同样适用于我们自行创建的编程对象。通过深入剖析这些模式,我们能更清晰地理解如何提升代码复用性,编写更具扩展性的类。
前几章我们已探讨过循环模式recurring patterns:通过创建循环和函数实现任务的重复执行。此外,我们创建了自己的枚举enums、结构体structs和类classes,以便实例化特定类型的对象。
我们还探索了某些基础层次结构形式primitive forms of hierarchy,例如数组arrays(可将元素聚合为更大结构)和递归recursion(函数调用其衍生版本)。
然而,我们尚未深入探讨对象之间的关系relationship between objects,尤其是编程层面的关联。
对象间的关系
现实生活中两个对象可能存在多种关系,我们用特定的“关系类型”词汇来描述这些关系。例如:正方形“是”形状的一种。汽车“具有”方向盘。计算机程序员“使用”键盘。花朵“依赖”蜜蜂进行授粉。学生是班级的“成员”。而你的大脑作为你身体的“组成部分”存在(至少,若你已读至此处,我们可合理如此假设)。
这些关系类型在C++中都有对应的实用类比。
本章将深入探讨“组成部分part-of”、“拥有has-a”、‘使用uses-a’、“依赖depends-on”和“成员member-of”等关系类型的细微差别,并展示它们在C++类中的应用价值。同时也会涉及几个难以归类的关联主题。
随后两章将聚焦于通过C++的继承模型和虚函数,深入解析“是某物is-a”关系。没错,这可是个大主题。
好了,背景介绍到此为止。让我们开始吧。

浙公网安备 33010602011771号