第一章 绪论
清华大学计算机与信息管理中心
郑 莉
C++语言程序设计
前一页 休息 2
本章主要内容
? 计算机程序设计语言的发展
? 面向对象的方法
? 面向对象的软件开发
? 信息的表示与存储
? 程序的开发过程
前一页 休息 3
计算机程序
? 计算机的工作是用程序来控制的
? 程序是指令的集合。
? 指令是计算机可以识别的命令。








前一页 休息 4
机器语言与汇编语言
? 由计算机硬件系统可以识别的二进制指
令组成的语言称为机器语言。
计算机发展的初期,软件工程师们只能用机器
语言来编写程序。这一阶段,在人类的自然语言和
计算机编程语言之间存在着巨大的鸿沟。
? 汇编语言将机器指令映射为一些可以被
人读懂的助记符,如 ADD,SUB等。
此时编程语言与人类自然语言间的鸿沟略有缩
小,但仍与人类的思维相差甚远。因为它的抽象层
次太低,程序员需要考虑大量的机器细节。








前一页 休息 5
高级语言
高级语言屏蔽了机器的细节,提高了
语言的抽象层次,程序中可以采用具有
一定涵义的数据命名和容易理解的执行
语句。这使得在书写程序时可以联系到
程序所描述的具体事物。








前一页 休息 6
面向对象的语言
?出发点:
–更直接地描述客观世界中存在的事物
(对象 )以及它们之间的关系。
?特点:
–是高级语言。
–将客观事物看作具有属性和行为的对象。
–通过抽象找出同一类对象的共同属性和
行为,形成类。
–通过类的继承与多态实现代码重用








前一页 休息 7
面向对象的语言
? 优点:
使程序能够比较直接地反问题域的本
来面目,软件开发人员能够利用人类认识
事物所采用的一般思维方法来进行软件开
发。








前一页 休息 8
程序设计方法的发展历程
—— 面向 过程 的程序设计方法
? 程序的目的:用于数学计算
? 主要工作:设计求解问题的过程
? 缺点:对于庞大、复杂的程序难以开发
和维护







前一页 休息 9
程序设计方法的发展历程
—— 面向 过程 的 结构化 程序设计方法
? 设计思路
– 自顶向下、逐步求精。采用模块分解与
功能抽象,自顶向下、分而治之。
? 程序结构:
– 按功能划分为若干个基本模块,形成一
个树状结构。
– 各模块间的关系尽可能简单,功能上相
对独立;每一模块内部均是由顺序、选
择和循环三种基本结构组成。
– 其模块化实现的具体方法是使用子程序。







前一页 休息 10
程序设计方法的发展历程
—— 面向 过程 的 结构化 程序设计方法
? 优点:
有效地将一个较复杂的程序系统设计
任务分解成许多易于控制和处理的子任务,
便于开发和维护。







前一页 休息 11
程序设计方法的发展历程
—— 面向 过程 的 结构化 程序设计方法
? 缺点:可重用性差、数据安全性差、
难以开发图形界面的应用
– 把数据和处理数据的过程分离为相互独
立的实体。
– 当数据结构改变时,所有相关的处理过
程都要进行相应的修改。
– 每一种相对于老问题的新方法都要带来
额外的开销。
– 图形用户界面的应用,很难用过程来描
述和实现,开发和维护都很困难。







前一页 休息 12
程序设计方法的发展历程
—— 面向 对象 的方法
? 将数据及对数据的操作方法封装在一
起,作为一个相互依存、不可分离的
整体 —— 对象。
? 对同类型对象抽象出其共性,形成类。
? 类通过一个简单的外部接口,与外界
发生关系。
? 对象与对象之间通过消息进行通讯。







前一页 休息 13
程序设计方法的发展历程
—— 面向 对象 的方法
? 优点:
– 程序模块间的关系更为简单,程序模块
的独立性、数据的安全性就有了良好的
保障。
– 通过继承与多态性,可以大大提高程序
的可重用性,使得软件的开发和维护都
更为方便。







前一页 休息 14
面向对象的基本概念
—— 对象
? 一般意义上的对象:
– 是现实世界中一个实际存在的事物。
– 可以是有形的(比如一辆汽车),也可
以是无形的(比如一项计划)。
– 是构成世界的一个独立单位,具有:
?静态特征:可以用某种数据来描述
?动态特征:对象所表现的行为或具有的功能







前一页 休息 15
面向对象的基本概念
—— 对象
? 面向对象方法中的对象:
– 是系统中用来描述客观事物的一个实体,
它是用来构成系统的一个基本单位。对象
由一组属性和一组行为构成。
– 属性:用来描述对象静态特征的数据项。
– 行为:用来描述对象动态特征的操作序列。







前一页 休息 16
面向对象的基本概念
—— 类
? 分类 —— 人类通常的思维方法
? 分类所依据的原则 —— 抽象
– 忽略事物的非本质特征,只注意那些与
当前目标有关的本质特征,从而找出事
物的共性,把具有共同性质的事物划分
为一类,得出一个抽象的概念。
– 例如,石头、树木、汽车、房屋等都是
人们在长期的生产和生活实践中抽象出
的概念。







前一页 休息 17
面向对象的基本概念
—— 类
? 面向对象方法中的 "类 "
– 具有相同属性和服务的一组对象的集合
– 为属于该类的全部对象提供了抽象的描述,
包括属性和行为两个主要部分。
– 类与对象的关系:
犹如模具与铸件之间的关系,一个属于某
类的对象称为该类的一个实例。







前一页 休息 18
面向对象的基本概念
—— 封装
? 把对象的属性和服务结合成一个独立
的系统单位。
? 尽可能隐蔽对象的内部细节。对外形
成一个边界(或者说一道屏障),只
保留有限的对外接口使之与外部发生
联系。







前一页 休息 19
面向对象的基本概念
—— 继承
? 继承对于软件复用有着重要意义,是
面向对象技术能够提高软件开发效率
的重要原因之一。
? 定义:特殊类的对象拥有其一般类的
全部属性与服务,称作特殊类对一般
类的继承。
? 例如:将轮船作为一个一般类,客轮
便是一个特殊类。







前一页 休息 20
面向对象的基本概念
—— 多态性
? 多态是指在一般类中定义的属性或行
为,被特殊类继承之后,可以具有不
同的数据类型或表现出不同的行为。
这使得同一个属性或行为在一般类及
其各个特殊类中具有不同的语义。
? 例如:
数的加法 ->实数的加法
->复数的加法







前一页 休息 21
面向对象的软件工程
? 面向对象的软件工程是面向对象方法
在软件工程领域的全面应用。它包括,
– 面向对象的分析( OOA)
– 面向对象的设计( OOD)
– 面向对象的编程( OOP)
– 面向对象的测试( OOT)
– 面向对象的软件维护( OOSM)









前一页 休息 22
系统分析
? 系统分析阶段应该扼要精确地抽象出
系统必须做什么,但是不关心如何去
实现。
? 面向对象的系统分析,直接用问题域
中客观存在的事物建立模型中的对象,
对单个事物及事物之间的关系,都保
留他们的原貌,不做转换,也不打破
原有界限而重新组合,因此能够很好
地映射客观事物。









前一页 休息 23
设计
? 针对系统的一个具体实现运用面向对
象的方法。其中包括两方面的工作:
– 把 OOA模型直接搬到 OOD,作为 OOD
的一部分
– 针对具体实现中的人机界面、数据存储、
任务管理等因素补充一些与实现有关的
部分。









前一页 休息 24
编程
OOP工作就是用一种面向对象的编
程语言把 OOD模型中的每个成分书写出
来,是面向对象的软件开发最终落实的
重要阶段。









前一页 休息 25
测试
? 测试的任务是发现软件中的错误。
? 在面向对象的软件测试中继续运用面
向对象的概念与原则来组织测试,以
对象的类作为基本测试单位,可以更
准确的发现程序错误并提高测试效率。









前一页 休息 26
维护
将软件交付使用后,工作并没有完
结,还要根据软件的运行情况和用户的
需求,不断改进系统。
使用面向对象的方法开发的软件,
其程序与问题域是一致的,因此,在维
护阶段运用面向对象的方法可以大大提
高软件维护的效率。









前一页 休息 27
信息的表示和存储 (自学 )
? 信息的分类
? 计算机的数字系统
? 程序设计中常用的数制
? 不同进位计数制间的转换
? 信息的存储单位
? 二进制数的编码表示
? 小数的表示方法
? 非数值信息的表示
前一页 休息 42
程序的开发过程
? 源程序、目标程序、翻译程序
? 三种不同类型的翻译程序:
汇编程序、编译程序、解释程序
? 程序的开发过程
编辑、编译、连接、运行调试
前一页 休息 47
作业
? 复习第一章,预习第二章
? 思考题,1-1~1-6
? 实验一