Skip to content

第七章 使用面向对象编程

7.1 面向对象编程

面向对象编程是一种编写程序的方法,旨在提升开发大型程序的效率,使程序易于维护。

7.2 对 OOP 的多种理解方法

面向对象编程是一种基于以下思路的程序设计方法:将关注点置于对象本身,对象的构成要素包含对象的行为及操作,以此为基础进行编程。

7.3 观点 1:面向对象编程通过把组件拼装到一起构建程序

在面向对象编程中,使用了一种称为“类”的要素,通过若干个类组装到一起构建一个完整的程序。

在大型程序中需要用到大量的函数和变量。假设要用非面向对象的编程方法编写一个由 10000 个函数和 20000 个变量构成的程序,那么结果就很容易是代码凌乱不堪,开发效率低到令人吃惊,维护起来也十分困难。

于是一种新的编程方法出现了,即把程序中有关联的函数和变量汇聚到一起编成组。这里的组就是类。

因为程序的构成要素中只有函数和变量,所以把它们分门别类组织起来的类也理所当然地成了程序的组件。通常把汇集到类中的函数和变量统称为类的“成员”( Member)

为了使 C 语言支持面向对象编程,人们扩充了它的语法,开发出了 C++语言。而通过改良 C++又开发出了 Java 和 C#。

7.4 观点 2:面向对象编程能够提升程序的开发效率和可维护性

在使用面向对象编程语言开发时,并不是所有的类都必须由程序员亲自编写。大部分的类都已经内置于面向对象编程语言中了,这些类可以为来自各个编程领域的程序员所使用。

7.5 观点 3:面向对象编程是适用于大型程序的开发方法

为了拉近计算机和人的距离,使计算机成为更容易使用的机器,围绕着计算机的各种技术都在不断发展。在人的直觉中,大件物品都是由组件组装起来的。因此可以说面向对象编程方法把同样的直觉带给了计算机,创造了一种顺应人类思维习惯的先进的开发方法。

7.6 观点 4: 面向对象编程就是为现实世界建模

计算机本身没有特定的用途,而是程序赋予了计算机各种各样的用途。在面向对象编程中,可以通过“这个是由什么样的对象构成的呢?”这样的观点来分析即将转换成程序的现实世界。这种分析过程叫做“建模”。

可以说“建模”对于开发者而言,反映的是他们的世界观,也就是在他们眼中现实世界看起来是什么样子的。

7.7 观点 5:面向对象编程可以借助 UML 设计程序

为了把对现实世界建模的结果以图形的形式表达回来,还经常使用被称为 UML 统一建模语言的标记方法。

名称主要用途
用例图表示用户使用程序的方式
类图表示类以及多个类之间的关系
对象图表示对象
时序图从时间上关注

并表示多个对象间的交互 | | 协作图 | 从合作关系上关注并表示多个对象间的交互 | | 状态图 | 表示对象状态的变化 | | 活动图 | 表示处理的流程 | | 组件图 | 表示文件以及多个文件之间的关系 | | 配置图 | 表示计算机或程序的部署配置方法 |

7.8 观点 6:面向对象编程通过在对象间传递消息驱动程序

程序可以通过由一个对象去调用另一个对象所拥有的函数这种方式运行起来。这种调用方式被称为对象间的“消息传递”。在面向对象语言所说的消息传递指的就是调用某个对象所拥有的函数。

7.9 观点 7:在面向对象编程中使用继承、封装和多态

继承指的是通过继承已存在的类所拥有的成员而生成新的类。 封装指的是在类所拥有的成员中, 隐藏掉那些没有必要展现给该类调用者的成员。 多态指的是针对同一种消息, 不同的对象可以进行不同的操作。

7.10 类和对象的区别

在面向对象编程中, 类和对象被看作是不同的概念而予以区别对待。 类是对象的定义, 而对象是类的实例( Instance)。

7.10 类的三种使用方法

而使用类的程序员可以通过三种方法使用类, 关于这一点诸位要有所了解。 这三种方法分别是:

  1. 仅调用类所持有的个别成员( 函数和变量) ;
  2. 在类的定义中包含其他的类( 这种方法被称作组合) ;
  3. 通过继承已存在的类定义出新的类。