《c++语言程序设计第1讲》由会员分享,可在线阅读,更多相关《c++语言程序设计第1讲(46页珍藏版)》请在金锄头文库上搜索。
1、第一章 绪论 清华大学 郑 莉 C+语言程序设计 1 C+语言程序设计清华大学 郑莉 本章主要内容 l计算机程序设计语言的发展 l面向对象的方法 l面向对象的软件开发 l信息的表示与存储 l程序的开发过程 2 C+语言程序设计清华大学 郑莉 计算机程序 l计算机的工作是用程序来控制的 l程序是指令的集合。 l指令是计算机可以识别的命令。 计算机语言的发展 3 C+语言程序设计清华大学 郑莉 机器语言与汇编语言 l由计算机硬件系统可以识别的二进 制指令组成的语言称为机器语言。 计算机发展的初期,软件工程师们只能用机 器语言来编写程序。这一阶段,在人类的自然语言 和计算机编程语言之间存在着巨大的鸿
2、沟。 l汇编语言将机器指令映射为一些可 以被人读懂的助记符,如ADD、SUB等。 此时编程语言与人类自然语言间的鸿沟略有 缩小,但仍与人类的思维相差甚远。因为它的抽象 层次太低,程序员需要考虑大量的机器细节。 计算机语言的发展 4 C+语言程序设计清华大学 郑莉 高级语言 高级语言屏蔽了机器的细节,提高 了语言的抽象层次,程序中可以采用具 有一定含义的数据命名和容易理解的执 行语句。这使得在书写程序时可以联系 到程序所描述的具体事物。 计算机语言的发展 5 C+语言程序设计清华大学 郑莉 面向对象的语言 l出发点: 更直接地描述客观世界中存在的 事物(对象)以及它们之间的关系。 l特点: 是高
3、级语言。 将客观事物看作具有属性和行为 的对象。 通过抽象找出同一类对象的共同 属性和行为,形成类。 通过类的继承与多态实现代码重 用 计算机语言的发展 6 C+语言程序设计清华大学 郑莉 面向对象的语言 l优点: 使程序能够比较直接地反映问题域的 本来面目,软件开发人员能够利用人类认识 事物所采用的一般思维方法来进行软件开发 。 计算机语言的发展 7 C+语言程序设计清华大学 郑莉 程序设计方法的发展历 程 面向过程的程序设计方 法 l最早的程序 目的:用于数学计算 主要工作:设计求解问题的过程 缺点:对于庞大、复杂的程序难以开 发和维护 面向对象的方法 8 C+语言程序设计清华大学 郑莉
4、程序设计方法的发展历 程 面向过程的结构化程序设计方 法 l设计思路 自顶向下、逐步求精。采用模块分 解与功能抽象,自顶向下、分而治之。 l程序结构: 按功能划分为若干个基本模块,形 成一个树状结构。 各模块间的关系尽可能简单,功能 上相对独立;每一模块内部均是由顺序、 选择和循环三种基本结构组成。 其模块化实现的具体方法是使用子 程序。 面向对象的方法 9 C+语言程序设计清华大学 郑莉 程序设计方法的发展历 程 面向过程的结构化程序设计方 法 l优点: 有效地将一个较复杂的程序系统设 计任务分解成许多易于控制和处理的子任 务,便于开发和维护。 面向对象的方法 10 C+语言程序设计清华大学
5、 郑莉 程序设计方法的发展历程 面向过程的结构化程序设计方 法 l缺点:可重用性差、数据安全性差、难 以开发大型软件和图形界面的应用软件 把数据和处理数据的过程分离为相互独立 的实体。 当数据结构改变时,所有相关的处理过程 都要进行相应的修改。 每一种相对于老问题的新方法都要带来额 外的开销。 图形用户界面的应用程序,很难用过程来 描述和实现,开发和维护也都很困难。 面向对象的方法 11 C+语言程序设计清华大学 郑莉 程序设计方法的发展历 程 面向对象的方法 l将数据及对数据的操作方法封装在 一起,作为一个相互依存、不可分离的 整体对象。 l对同类型对象抽象出其共性,形成 类。 l类通过一个
6、简单的外部接口,与外 界发生关系。 l对象与对象之间通过消息进行通信 。 面向对象的方法 12 C+语言程序设计清华大学 郑莉程序设计方法的发展历 程 面向对象的方法 l优点: 程序模块间的关系更为简单,程序 模块的独立性、数据的安全性就有了良好 的保障。 通过继承与多态性,可以大大提高 程序的可重用性,使得软件的开发和维护 都更为方便。 面向对象的方法 13 C+语言程序设计清华大学 郑莉 面向对象的基本概念 对象 l一般意义上的对象: 是现实世界中一个实际存在的事物 。 可以是有形的(比如一辆汽车), 也可以是无形的(比如一项计划)。 是构成世界的一个独立单位,具有 l静态特征:可以用某种
7、数据来 描述 l动态特征:对象所表现的行为 或具有的功能 面向对象的方法 14 C+语言程序设计清华大学 郑莉 面向对象的基本概念 对象 l面向对象方法中的对象: 是系统中用来描述客观事物的一个实 体,它是用来构成系统的一个基本单位。对 象由一组属性和一组行为构成。 属性:用来描述对象静态特征的数据 项。 行为:用来描述对象动态特征的操作 序列。 面向对象的方法 15 C+语言程序设计清华大学 郑莉 面向对象的基本概念 类 l分类人类通常的思维方法 l分类所依据的原则抽象 忽略事物的非本质特征,只注意那 些与当前目标有关的本质特征,从而找出 事物的共性,把具有共同性质的事物划分 为一类,得出一
8、个抽象的概念。 例如,石头、树木、汽车、房屋等 都是人们在长期的生产和生活实践中抽象 出的概念。 面向对象的方法 16 C+语言程序设计清华大学 郑莉 面向对象的基本概念 类 l面向对象方法中的类 具有相同属性和服务的一组对象的集 合 为属于该类的全部对象提供了抽象的 描述,包括属性和行为两个主要部分。 类与对象的关系: 犹如模具与铸件之间的关系,一个属于某类 的对象称为该类的一个实例。 面向对象的方法 17 C+语言程序设计清华大学 郑莉 面向对象的基本概念 封装 l把对象的属性和服务结合成一个独 立的系统单元。 l尽可能隐蔽对象的内部细节。对外 形成一个边界(或者说一道屏障),只 保留有限
9、的对外接口使之与外部发生联 系。 面向对象的方法 18 C+语言程序设计清华大学 郑莉 面向对象的基本概念 继承 l继承对于软件复用有着重要意义, 是面向对象技术能够提高软件开发效率 的重要原因之一。 l定义:特殊类的对象拥有其一般类 的全部属性与服务,称作特殊类对一般 类的继承。 l例如:将轮船作为一个一般类,客 轮便是一个特殊类。 面向对象的方法 19 C+语言程序设计清华大学 郑莉 面向对象的基本概念 多态性 l多态是指在一般类中定义的属性或 行为,被特殊类继承之后,可以具有不 同的数据类型或表现出不同的行为。这 使得同一个属性或行为在一般类及其各 个特殊类中具有不同的语义。 l例如:
10、数的加法-实数的加法 -复数的加法 面向对象的方法 20 C+语言程序设计清华大学 郑莉 面向对象的软件工程 l面向对象的软件工程是面向对象方 法在软件工程领域的全面应用。它包括: 面向对象的分析(OOA) 面向对象的设计(OOD) 面向对象的编程(OOP) 面向对象的测试(OOT) 面向对象的软件维护(OOSM) 面向对象的软件开发 21 C+语言程序设计清华大学 郑莉 系统分析 l系统分析阶段应该扼要精确地抽象 出系统必须做什么,但是不关心如何去 实现。 l面向对象的系统分析,直接用问题 域中客观存在的事物建立模型中的对象 ,对单个事物及事物之间的关系,都保 留他们的原貌,不做转换,也不打
11、破原 有界限而重新组合,因此能够很好地映 射客观事物。 面向对象的软件开发 22 C+语言程序设计清华大学 郑莉 设计 l针对系统的一个具体实现运用面向 对象的方法。其中包括两方面的工作: 把OOA模型直接搬到OOD,作为OOD的 一部分 针对具体实现中的人机界面、数据 存储、任务管理等因素补充一些与实现有 关的部分。 面向对象的软件开发 23 C+语言程序设计清华大学 郑莉 编程 OOP工作就是用一种面向对象的编 程语言把OOD模型中的每个成分书写出 来,是面向对象的软件开发最终落实的 重要阶段。 面向对象的软件开发 24 C+语言程序设计清华大学 郑莉 测试 l测试的任务是发现软件中的错误
12、。 l在面向对象的软件测试中继续运用 面向对象的概念与原则来组织测试,以 对象的类作为基本测试单位,可以更准 确地发现程序错误并提高测试效率。 面向对象的软件开发 25 C+语言程序设计清华大学 郑莉 维护 将软件交付使用后,工作并没有完 结,还要根据软件的运行情况和用户的 需求,不断改进系统。 使用面向对象的方法开发的软件, 其程序与问题域是一致的,因此,在维 护阶段运用面向对象的方法可以大大提 高软件维护的效率。 面向对象的软件开发 26 C+语言程序设计清华大学 郑莉 信息的表示和存储 l信息的分类 l计算机的数字系统 l程序设计中常用的数制 l不同进位计数制间的转换 l信息的存储单位
13、l二进制数的编码表示 l小数的表示方法 l非数值信息的表示 27 C+语言程序设计清华大学 郑莉 信息的分类 指令 控制信息 控制字 信息 定点数 数值信息 数据信息 浮点数 字符数据 非数值信息 逻辑 数据 信息的表示与存储 28 C+语言程序设计清华大学 郑莉 计算机的数字系统 l计算机采用的是二进制数字系统。 l基本符号:0、1 l进位原则:逢二进一 l优点: 易于物理实现 二进制数运算简单 机器可靠性高 通用性强 l缺点:对人来说可读性差 信息的表示与存储 29 C+语言程序设计清华大学 郑莉 程序设计中常用的数制 信息的表示与存储 30 C+语言程序设计清华大学 郑莉不同进位记数制间
14、的转 换 R 进制十进制 各位数字与它的权相乘,其积相加 。 例如: (11111111.11)2=127+126+125+1 24 +123+122+121+120+12-1+12-2 =(255.75)10 (3506.2)8=383+582+081+680+2 8-1 =(1862.25)10 (0.2A)16=216-1+1016- 2=(0.1640625)10 信息的表示与存储 31 C+语言程序设计清华大学 郑莉不同进位记数制间的转 换 十进制 R 进制 十进制整数转换成R进制的整数 “除R取余”法,例如: 2 68 余 数 2 34 0 低位 2 17 0 2 8 1 2 4
15、0 2 2 0 2 1 0 0 1 高位 所以 681010001002 信息的表示与存储 32 C+语言程序设计清华大学 郑莉不同进位记数制间的转 换 十进制 R 进制 十进制小数转换成R进制小数 “乘 R 取整”法,例如: 高位 0.3125 2 = 0 .625 0.625 2 = 1 .25 0.25 2 = 0 .5 0.5 2 = 1 .0 所以 0.312510 = 0.01012 信息的表示与存储 33 C+语言程序设计清华大学 郑莉 不同进位记数制间的转 换 二、八、十六进制的相互转 换 l每位八进制数相当于三位二进制数 l每位十六进制数相当于四位二进制数 (1011010.
16、10)2=(001 011 010 .100)2 =(132.4)8 (1011010.10)2=(0101 1010 .1000)2 =(5A.8)16 (F7)16(1111 0111)2(11110111)2 信息的表示与存储 34 C+语言程序设计清华大学 郑莉 信息的存储单位 l位(bit,b):度量数据的最小单位 ,表示一位二进制信息。 l字节(byte,B):由八位二进制数 字组成(1 byte = 8 bit)。 千字节 1 KB = 1024 B 兆字节 1 MB = 1024 K 吉字节 1 GB = 1024 M 信息的表示与存储 35 C+语言程序设计清华大学 郑莉 二进制数的编码表示: 原码 l符号绝对值表示的编码 例如: X=+0101011 X原= 0 0101011 X=-0101011 X原= 1 0101011 符号位 l缺点: 零的表示不惟一: +0原 =000.0 -0原 =100.0 进行四则运算时,符号位须单独处 理,且运算规则复杂。 信息的表示与存储 36 C+语言程序设计清华大学 郑莉 二进制数的编码表示: 反码 l正数的反码与原码表示相