下载
第1章 对象的演化
计算机革命起源于一台机器,程序设计语言也源于一台机器。
然而计算机并不仅仅是一台机器,它是心智放大器和另一种有表述能力的媒体。这一点
使它不很像机器,而更像我们大脑的一部分,更像其他有表述能力的手段,例如写作、绘画、
雕刻、动画制作或电影制作。面向对象的程序设计是计算机向有表述能力的媒体发展中的一
部分。
本章将介绍面向对象程序设计(O O P)的基本概念,然后讨论O O P开发方法,最后介绍使
程序员、项目和公司使用面向对象程序设计方法而采用的策略。
本章是一些背景材料,如果读者急于学习这门语言的具体内容,可以跳到第 2章,然后再
回过头来学习本章。
1.1 基本概念
C + +包含了比面向对象程序设计基本概念更多的内容,读者应当在学习设计和开发程序之
前先理解该语言所包含的基本概念。
1.1.1 对象:特性+行为
[1]
第一个面向对象的程序设计语言是 6 0 年代开发的S i m u l a - 6 7。其目的是为了解决模拟问题。
典型的模拟问题是银行出纳业务,包括出纳部门、顾客、业务、货币的单位等大量的“对象”。
把那些在程序执行期间除了状态之外其他方面都一样的对象归在一起,构成对象的“类”,这
就是“类”一词的来源。
类描述了一组有相同特性(数据元素)和相同行为(函数)的对象。类实际上就是数据类
型,例如,浮点数也有一组特性和行为。区别在于程序员定义类是为了与具体问题相适应,而
不是被迫使用已存在的数据类型。这些已存在的数据类型的设计动机仅仅是为了描述机器的存
储单元。程序员可以通过增添他所需要的新数据类型来扩展这个程序设计语言。该程序设计系
统欢迎创建、关注新的类,对它们进行与内部类型一样的类型检查。
这种方法并不限于去模拟具体问题。尽管不是所有的人都同意,但大部分人相信,任何程
序都模拟所设计系统。O O P技术能很容易地将大量问题归纳成为一个简单的解,这一发现产生
了大量的O O P语言,其中最著名的是S m a l l t a l k
—
C++ 之前最成功的O O P语言。
抽象数据类型的创建是面向对象程序设计中的一个基本概念。抽象数据类型几乎能像内部类
型一样准确工作。程序员可以创建类型的变量(在面向对象程序设计中称为“对象”或“实例”)
并操纵这些变量(称为发送“消息”或“请求”,对象根据发来的消息知道需要做什么事情)。
1.1.2 继承:类型关系
类型不仅仅说明一组对象上的约束,还说明与其他类型之间的关系。两个类型可以有共同
的特性和行为,但是,一个类型可能包括比另一个类型更多的特性,也可以处理更多的消息
[1] 这一描述部分引自我对《The Tao of Objects》(Gary Entsminger著)一书的介绍。