面向对象程序设计.ppt_第1页
面向对象程序设计.ppt_第2页
面向对象程序设计.ppt_第3页
面向对象程序设计.ppt_第4页
面向对象程序设计.ppt_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计,Object Oriented Programming,教师:姜 玥,1/56,资源,用户: 密码:20021-5,2/56,第1章 绪论,要点,程序设计 程序设计语言 C+,3/56,计算机发展史,1.1 程序设计与程序设计语言,4/56,主机,计算机系统,系统软件,硬件系统,外部设备,软件系统,应用软件,CPU,内存,输入设备,输出设备,外存储器,编程语言,汇编语言、高级语言,操作系统、编译程序,数据处理、信息管理,5/56,计算机-20世纪人类带给21世纪的最有价值 的礼物,人类文明历史上最伟大的发明之一;,1.计算机与程序设计,计算机与其他发明的主要差别,发明器官的延

2、长/替代; 计算机人脑功能的延长/替代电脑; 发明应用在各不同的局部领域; 计算机应用在几乎所有的人类活动的领域。,6/56,程序(软件)是计算机的必要组成部分,硬件计算机 软件程序设计,软件开发,计算机产业(硬软件的研究、设计和生产) 是进行程序设计与开发,程序:要计算机完成某任务所规定的一系列 动作步骤。,程序设计的工作量无止境,极困难复杂又 富有魅力和创造乐趣,7/56,-计算机唯一可以读懂的语言 指令=指令码+地址码的固定长度的2进制位串,2.程序设计语言,程序设计的任务,-用计算机懂得的语言(程序设计语言)编写 程序,交给它去执行。,计算机指令系统,机器语言,机器语言程序设计,把计算

3、机完成的任务分解为指令表/指令 系统包括的动作,以指令序列的形式写出。,8/56,低级编程语言,汇编程序的出现背景,机器易懂,但对人不方便。汇编程序: “汇编语言”翻译为“机器语言”。,汇编语言,-用人比较习惯的符号代替指令编码,低级语言,-汇编语言和机器语言,9/56,依赖于机器,可移植性差 代码冗长,不易于编写大规模程序 可读性差,可维护性差,低级语言的共同点,语言结构以面向机器的指令序列形式 为主,与人的习惯语言方式距离较远。,低级语言的共同缺点,10/56,高级程序设计语言,编译系统/编译器,设计人们习惯的高级语言规范; 当时计算机主要是工程计算, 描述计算 任务的高级语言的主要是数学

4、表达式。 设计编译程序:把高级语言写的对计算任务 的描述翻译为机器语言的指令序列。,例:5*x+3;,11/56,FORTRAN语言 -标志着计算机技术的新的里程碑,高级程序设计语言及其编译系统的帮助, 人们可编制出规模越来越大,结构越来越复杂 的程序。计算机的应用领域不断扩展,计算机 技术发展到今天的局面,没有高级语言及编译 技术的突破是不可能实现的。,12/56,高级程序设计语言的特点,严格的结构化形式 丰富完备的数据类型 运行效率高 查错能力强,13/56,3.程序设计方法理论的发展,程序设计技术的发展过程,计算机诞生,von Neumann模式形成,低级 语言编程是主要开发形式;,14

5、/56,3.程序设计方法理论的发展,程序设计技术的发展过程,计算机在工程计算领域的成功应用; 低级语言程序设计-推广计算机应用的主 要障碍; 第1代高级语言诞生,Fortran和Algol_60 为代表,表达式处理为重点,重视目标代码 的效率;,15/56,计算机应用在5/60年代的发展,包括宇航和机 器人等大型应用程序的开发、使用进入新阶段; 大规模程序频频出错为特征的“软件危机”发生, 引起关于“Goto语句的辩论; 例:1962年,软件出错美国金星探测器水手 II号卫星发射失败 SP和软件工程被提倡,以Pascal和C语言为代表, 强调数据类型、程序结构,主张牺牲效率保证程 序无/少错;

6、,程序设计技术的发展过程,16/56,计算机在更广泛的领域中应用,包括系统程序 (OS和编译系统),管理系统程序和智能程序; SP面对图形界面窗口系统等大规模的程序的软 件商品化、部件化的要求,编程成为新瓶颈; OOP从理论实践,以Smalltalk,C+等语言为 代表程序设计理论成熟; 计算机应用以并行化、网络化、多媒体化、智 能化为主要特征,形成巨大的产业。,程序设计技术的发展过程,17/56,计算机应用领域的扩展、软件规模和 复杂度的提高程序设计技术的升级,高级语言编程的初级阶段,高级程序设计语言的主要特点,计算机应用的主要领域:数值计算 语言中变量、表达式、向量和矩阵(数组) 的处理是

7、主要部分 主要目标:生成效率较高的目标程序,18/56,高级语言的出现打破低级语言的“指令 序列”的死板的程序格式 过程型的程序设计语言是程序设计语言 的主流 FORTRAN,ALGOL_60Pascal,CC+,高级语言编程的初级阶段,高级程序设计语言主要的特点,例:Algol_60:用于算法描述的自由格式 的分程序结构语言; COBOL:用于商业和事务处理领域的语言,例:LISP:用于符号处理的函数式程序设计 语言; PROLOG:用于AI领域的逻辑型程序设计 语言。,19/56,SP阶段,SP思想,程序的标准首先是可读性和可维护性,其次 是高效率; 可读性:改善程序书写的静态结构,好的语

8、 言风格,结构清晰,符合人的阅读习惯,注 意编程格式,给程序有意义的命名,注释; SP:设计程序的技术,采用自顶向下、逐步 求精的设计方法和单入口单出口的控制结构;,20/56,SP阶段,SP思想,自顶向下、逐步求精的设计方法符合解决问 题的规则,软件开发的成功率;开发出的 程序具有清晰的层次结构,易阅读理解及修 改调试扩充; 程序出问题的更主要原因:程序执行中动态 结构的混乱。SP的最主要目标:尽可能使程 序运行的动态结构与程序书写的静态结构相 对一致。,21/56,这依赖于: 语言只包括顺序、选择、循环3种控制结构, 目标:使程序的各局部符合控制的单入口单 出口原则。 模块化的程序设计,努

9、力规范和简化模块间 的联系,充分利用过程/函数的参数机制,规 范程序模块间的接口。,22/56,SP阶段,SP思想,严格区分数据类型,程序中出现的数据必 须进行类型说明和任何数据操作进行类型 检查。,体现SP思想的语言:Pascal和C,程序 = 过程 + 过程调用,公式化描述,23/56,OOP阶段,OOP方法在90年代盛行的原因,OOP方法从思想上抓住了软件开发的本质 和规律;OOP方法开发的软件产品,易重 用,易修改,易测试,易维护,易扩充; 计算机要解决的问题的重要性,复杂性, 原程序设计技术不再满足要求; 较好地解决软件模块化、信息隐蔽和抽象。,24/56,OOP阶段,OOP语言的要

10、素,对象 -状态和操作/方法的封装体; 类 -创建对象的模板,包含着所创建对象的 状态描述和方法的定义; 继承,例:人(类)-父母(对象)-子女(继承,多重 继承),25/56,类和对象的关系,26/56,对象和消息,27/56,class Car int color_number; int door_number; int speed; void brake() void speedUp() ; void slowDown() ,28/56,variables,methods,29/56,30/56,程序 = 对象 + 消息 面向对象=对象 + 类 + 继承 + 通信,公式化描述,31/56

11、,OOP阶段,OOP的3大特征,封装性 类的属性和行为封装在同一模块中,对外不 透明,只有用接口才能访问内部信息。(安 全可靠) 继承性 实现行为共享和代码重用。高层次抽象的是 父类,低层次抽象的是子类。(如学生例) 多态性 不同对象对相同消息有不同意义的解释,使 它们表现的行为和动作也不同。(如不同的 人干同一事),32/56,33/56,例:输入圆的半径,求圆的周长和面积,方法1:SP 数据描述:半径、周长、面积用float型 数据处理:输入半径r; 计算周长2*pi*r; 计算面积=pi*r2; 输出半径、周长、面积。,34/56,#include void main() float r

12、,girth,area; const float pi=3.1415; coutr; girth=2*pi*r; area=pi*r*r; cout半径:rendl; cout周长:girthendl; cout面积:areaendl; ,35/56,方法2:OOP 类型/类:圆 属性/数据成员:半径、周长、面积 方法/成员函数:计算周长2*pi*r; 计算面积=pi*r2。,36/56,#include class Circle float radius; public: void Set_Radius(float r)radius=r; float Get_Radius()return r

13、adius; float Get_Girth()return 2*3.1415*radius; float Get_Area()return 3.1415*radius*radius; ; void main() Circle A,B; A.Set_Radius(6.23); cout半径:A.Get_Radius()endl; cout周长:A.Get_Girth()endl; cout面积:A.Get_Area()endl;,37/56,B.Set_Radius(10.23); cout半径:B.Get_Radius()endl; cout周长:B.Get_Girth()endl; cou

14、t面积:B.Get_Area()endl; ,38/56,4.程序设计技术的层次,算法 方法学 语言 环境与工具,39/56,1.2 C+语言概述,1.为什么选择C+语言,OOP逐渐成为主流设计技术 OOP技术不取代SP和一般的程序设计的 技能技巧 C+在各种不同机型上都有优秀的编译系 统和相关的环境与工具 C+最可能取代C而成为主流的软件开发 语言 C+-计算机专业主要的教学语言,40/56,带类的C C+的诞生 C+的发展,2. C+语言简史,41/56,3. C+语言的特点,-新的类的定义就是一种新的抽象数据类型, 用在不同的程序系统中,C+是支持OOP的最主要的代表语言之一,封装和信息

15、隐藏,-数据和对数据的操作封装到类和对象之中,抽象数据类型,继承和派生,-实现程序的重用,42/56,传统的处理方法,43/56,对象封装的处理方法,44/56,私有数据,方法,方法,数据,对象A,对象B,公有数据,45/56,bicycle,(super class),Mountain bikes,Racing bikes,Tandem bikes,sub class,46/56,-实现类型和函数定义的参数化,进一步抽象,C+是支持OOP的最主要的代表语言之一,函数与运算符的重载,虚函数的多重定义,-实现多种情形下的多态特征; 提高程序的水平,模板,3. C+语言的特点,47/56,C+是实

16、践中的创造,语言的各特征、研 制过程,体现了面向实用,面向软件开发 者的思想,3. C+语言的特点,C+是C的超集,C+与C比较,从C中继承简明高效的表达式形式 易于解决目标代码高质量高效率的问题 吸纳80年代的C程序员,自然地转向C+ 与80年代以来的大批C程序软件兼容,48/56,C与C+及其编译系统同时发售,促进 C程序员向C+转化; 对C的语法成分,做了许多取代工作。,3. C+语言的特点,C+是C的超集,C+与C的相关问题,例:引人const常量和内联函数概念,取代 宏定义; 引入refrence引用概念,部分取代C中 过于灵活而影响安全性的指针; 引入动态内存分配运算符,取代较低

17、级的有关库函数;,49/56,3. C+语言的特点,C+是C的超集,C+与C的相关问题,例:引入动态内存分配运算符,取代较低 级的有关库函数; 引入用于数据I/O的流类,取代可读性 差的C的I/O库函数。,C+与C的完全兼容的问题,例:语言成分中的冗余/重复; 同时支持SP框架和OOP框架; 误解:C+是C的扩集,是C的改善, 实际上在设计方法、思想和风格上, 二者有着本质差别。,50/56,#include文件,.CPP 源程序,.obj 目标程序,.exe 可执行程序,#include文件,产生C+可执行文件的过程,51/56,在VC中产生的文件,.CLW:支持ClassWizard .DSP:项目文件 .DSW:工作空间文件 .NCB:支持ClassView .OPT:保存工作空间的配置 .PLG:日志文件,52/56,4. C与C+的基本比较,53/56,例:输入1个圆的半径,计算圆的面积。,方法1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论