C++系列:对象和类(一)
背景 面向对象编程 首先, 面向对象编程(Object-Oriented Programming, OOP) 是一种 编程风格/程序设计思想/编程范式 。它 强调以对象(数据+方法)为中心 ,而不是以过程为中心(即面向过程编程)。 由此可见,从某种意义上讲,编程语言可以在不同程度上支持这种风格。即使 C 语言也可以实现这种风格,只不过实现起来难度更大、更为曲折。 C++ 就是对 OOP 特性支持的比较好的编程语言。 抽象 抽象(abstraction) 是一种 OOP 特性。处理复杂问题的方法之一就是提供 简单的 抽象 。那么,抽象究竟表示什么意思? 这里的抽象 表示去除 无关信息 或隐藏细节信息,以减少问题复杂度的过程 。 一个典型的例子是:对于老司机开车这件事,我们只需要关心速度、油量等指标(数据表示);以及启动、换挡、踩油门、刹车、转方向盘、开闪光灯等操作过程(数据操作)。我们不需要知道发动机究竟怎么启动的,电路和管路是怎么布局的等问题。 因此,这里使用抽象的一个关键就是:尝试从用户的角度去考虑对象的构建,先去定义用户和对象的交互(即接口),再去想对象的内部数据和接口实现。 封装 封装(encapsulation) 是一种 OOP 特性。封装有多种含义,OOP 中的封装的语义是:将数据表示和数据操作,绑定到一个对象中,不能直接访问对象的数据,只能通过方法来访问或修改对象的数据