第一章 面向对象编程简介.ppt_第1页
第一章 面向对象编程简介.ppt_第2页
第一章 面向对象编程简介.ppt_第3页
第一章 面向对象编程简介.ppt_第4页
第一章 面向对象编程简介.ppt_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

1 面向对象程序设计 C 语言描述 2 教学安排 课堂讲授40学时上机实践24学时 3 15周 不包括第6周 期末总评成绩计算方法 平时表现和上机30分 期末成绩70分 3 上机环境 VC 6 0 4 本章要求 1 了解程序设计方法的发展 2 理解面向对象程序设计概念 3 理解对象 属性和方法等基本概念 5 本章主要内容 程序设计的基本方法结构化程序设计面向对象程序设计基本术语 6 第1章 面向对象编程 7 程序设计语言的发展 机器语言 汇编语言 高级语言 8 低级语言 机器语言与汇编语言 计算机刚问世时 它的 能耐 还比较小 只能 看懂 或 理解 程序员用原始的机器指令书写的所谓机器语言程序 汇编语言将机器指令映射为一些易于看懂 易于记忆的助记符 如ADD SUB MOV等 但若要运行 执行 用汇编语言写成的源程序时 必须先运行一个叫做汇编程序系统 Assembler 的软件 由它首先把汇编语言源程序转换为具有相同功能的机器指令程序 然后再运行机器指令程序 得到所需的结果 9 高级语言 之所以称其为高级语言 是相对于机器语言与汇编语言来说 编程人员对它们的理解 记忆以及使用都要容易的多 高级语言屏蔽了诸多的机器细节问题 提高了语言的抽象层次 更加接近于人们的思维方式以及自然语言 应用较广泛的几种高级语言是 FORTRAN ALGOL COBOL BASIC PASCAL C LISP PROLOG C C Java等 10 编译程序系统 Compiler 的作用 与对待汇编语言源程序相同 用高级语言写成的源程序也不能被计算机去直接执行 也必须先运行一个叫做编译程序系统 Compiler 的软件 由它首先把高级语言源程序编译转换为目标程序 然后再经过连接而成为具有相同功能的可执行程序 机器指令程序 最后再运行该可执行程序 机器指令程序 方可得到所需的结果 11 程序设计方法学的发展 1程序设计技术的初级阶段2结构程序设计阶段3面向对象程序设计阶段 12 1程序设计技术的初级阶段 计算机诞生 vonNeumann模式形成 低级语言编程是主要开发形式 第一代高级语言 以FORTRAN和ALGOL60为代表 诞生 从低级语言编程转向高级语言编程 可以说是计算机 生产力 的一次解放 这个时期的程序设计技术重视程序设计技巧 注意节省内存和目标代码的效率 高级语言的出现使得程序设计的难度降低 导致了计算机应用在五六十年代的发展进入新的阶段 60年代 以大规模程序频频出错 例如1962年 因软件出错导致美国金星探测器水手 号卫星发射失败 为特征的 软件危机 发生 引起关于 Goto语句 的辩论 13 2结构程序设计阶段 以Pascal语言和C语言为代表 强调数据类型 程序结构 程序设计的目标把可靠性 可维护性的要求放在了比高效率更重要的位置上结构程序设计思想的要点是 注意程序的可读性采用自顶向下 逐步求精的设计方法尽可能地使程序运行的动态结构与程序书写的静态结构相对一致严格区分数据类型面向过程的SP结构化程序设计方法存在着一个主要缺点 数据和处理数据的操作过程 处理函数 是相互独立的实体 当数据结构改变时 所有相关的处理过程 函数 都要进行相应的修改 从而使程序的可重用性明显变差 14 3面向对象程序设计阶段 80年代 面向对象程序设计逐渐从理论转向实践 以Smalltalk C 等语言为代表 程序设计理论步入成熟期 A Kay研制了Smalltalk语言 B Stroustrup则开发了C 语言 OOP方法在90年代的盛行主要有两个基本的原因 其一是OOP方法从思想上与SP方法相比是抓住了软件开发的本质和规律 其二就是计算机所要解决的问题越来越重要 越来越复杂 OOP技术之所以能适应今天软件产业的需要 是因为它比较好地解决了软件模块化 信息隐蔽和抽象的目标 15 目前常用的面向对象语言 目前 应用最广的面向对象语言是在C语言基础上扩充出来的C 语言 而科研前沿目前用的最多的要属Microsoft公司的VisualC 6 0 简称VC6 0 它是基于Windows窗口规范的一个C 的具体实现版本 其它面向对象的编程语言还有Smalltalk语言 Simula67语言 以及LISP家族的面向对象语言 JAVA C 等 16 编程风格对比 面向过程的程序设计面向对象的程序设计 17 1 1 1面向过程的程序设计 所谓面向过程是指从功能的角度分析问题 将待解决的问题空间分解成若干个功能模块 每个功能模块描述一个操作的具体过程 结构化程序设计方法就是面向过程的一个典型代表 18 按照功能划分软件系统结构 19 结构化程序设计方法的核心 自顶向下 逐步求精的开发方法模块化的组织方式结构化的语句结构 20 自顶向下 逐步求精 将编写程序看成是一个逐步演化的过程 所谓自顶向下是指将分析问题的过程划分成若干个层次 每一个新的层次都是对上一个层次的细化 即步步深入 逐层细分 21 模块化 将整个系统分解成若干个模块 每个模块实现特定的功能 最终的系统将由这些模块组装而成 模块之间通过接口传递信息 模块划分应尽可能达到高内聚 低偶合 22 23 语句结构化 顺序结构 分支结构 Y N 24 A T Y N while循环结构 do循环结构 25 结构化程序设计的特点 程序设计 数据结构 算法程序内容 过程 过程调用 26 举例 检查单词拼写程序 检查单词拼写程序将对用户提供的单词进行拼写检查 如果在字典中找到 输出 拼写正确 的字样 否则输出 拼写不正确 的字样 27 结构化程序设计方法 检查拼写 输入单词 检查拼写 输出结果 28 1 1 2面向对象程序设计 什么是面向对象从程序设计方法的角度看面向对象是一种新的程序设计范型 paradigm 其基本思想是使用对象 类 继承 封装 消息 多态性等基本概念来进行程序设计 面向对象程序设计同结构化程序设计相比最大的区别就在于 前者首先关心的是所要处理的数据 而后者首先关心的是功能 面向对象程序设计是一种围绕真实世界的概念来组织模型的程序设计方法 它采用对象来描述问题空间的实体 29 面向对象程序设计 对象 类和实体 30 类 Class 类是一组有相同特性 属性 和相同行为 方法 的对象的抽象定义 类是属性和方法的统一 31 对象 Object 对象是对具体的客观事物的表示 对象 一个人 一个物体 桌子 椅子表单 命令按钮 文本框对象是类的实例 对象是属性和方法的统一体 32 属性 property 属性是对象的描述特征 张三 男 25 汉族属性值 可以在设计阶段设置 属性窗口可以在运行阶段更改 用代码来修改 33 方法 Method 方法是指对象的行为 程序设计 为实现一定功能而编写的代码 如 张三的行为 方法 学习 劳动 思考 34 类与对象的实现 现实世界中的实体 人抽象数据描述 数据描述 姓名 性别 年龄 行为描述 吃饭 说话 C 中的类classHUMAN private charname 20 charsex intage public voideat voidspeak 人类的实例 HUMANzhang 35 举例 检查单词拼写程序 检查单词拼写程序将对用户提供的单词进行拼写检查 如果在字典中找到 输出 拼写正确 的字样 否则输出 拼写不正确 的字样 36 面向对象的程序设计方法 Dictionary Dictionary Set Word 面向对象程序 对象 消息 字典 单词 集合 37 面向过程编程与面向对象编程比较 实例 编写求解矩形面积和周长的程序1 面向过程的编程方法将任务分解为求解矩形面积和周长的方法编写计算矩形面积和矩形周长的函数在主程序中 调用求解计算矩形面向和周长的函数 完成程序功能2 面向对象的编程方法编写描述矩形对象的类 类中包含矩形的长 宽等属性 求解矩形面积和周长的方法在主程序中 创建一个指定长 宽的矩形对象 发送求解面积和周长的消息给矩形对象 对象作出反应 计算并返回面积和周长值 完成程序功能 38 面向过程方法与面向对象方法比较 面向过程方法 采用功能划分的方法求解问题方法强调过程的抽象和模块化函数是组成程序的基本单元当你看到这个面积函数的时候 你知道这是求矩形的面积的函数吗 面向对象方法 侧重于采用系统结构的划分方法来求解问题方法强调对现实世界的实体和概念的抽象类是组成程序的基本单元 39 面向对象程序设计的优点 1 实现对现实世界客体的自然描述2 可控制程序的复杂性3 可增强程序的模块性4 可提高程序的重用性5 可改善程序的可维护性 40 类与类之间 对象及其所属类之间的关系 组合 hasa 类 计算机hasa 类 cpu概括 isa 类 狗isa 类 动物隶属 belongsto 对象 王五belongsto 类 人 1 1 3关系 41 1 2类与抽象数据类型 抽象 指从事物中 舍弃个别的 非本质的属性 抽取出共同的 本质的属性的过程 它是形成概念的必要手段 42 1 2 1信息隐藏 面向对语言中的类支持信息隐藏的模块 中用关键字public和private对类的属性和操作进行存取访问控制 public实现类的接口 private隐藏类的实现 43 1 2 2封装 encapsulation 指将现实世界中某个客体的属性与行为聚集在一个逻辑单元内部的机制 利用这种机制可以将属性信息隐藏起来 外界只能够通过提供的特定行为接口改变或获取其属性状态 44 在面向对象的程序设计中 封装是指将对象的属性和行为分别用数据结构和方法描述 并将它们绑定在一起形成一个可供访问的基本逻辑单元 45 1 2 3抽象数据类型 ADT 类是对象的抽象 是一种对象模型 它描述了属于该对象类型的所有对象的性质 构造抽象数据类型的关键 对低层实现细节的隐藏 例如 Integer是一个整数类 它描述了所有整数的性质 46 1 3 1客户 服务器模式它是面向对象编程的基础 体现了信息隐藏的概念 服务器 接口 客户机 消息 1 3客户 服务器模式与消息传递 47 消息 消息是一个对象要求另一个对象实施某项操作的请求 在一条消息中 需要包含消息的接收者和要求接收者执行哪项操作的请求 而并没有说明应该怎样做 具体的操作过程由接收者自行决定 48 消息 通常一个消息由三部分组成 接收消息的对象消息标识符 即消息名 零个或多个变元例如 MyCircle Show Green MyCircle是接收消息的对象的名字 Show是消息名 Green是消息的变元 49 include includeusingnamespacestd intmain constintdInd 17 ifstreamin ofstreamout stringbuffer in open bets dat out open y2kcompliantbets dat 对赌注文件进行转换的c 程序 while getline in buffer buffer insert dInd 19 out buffer n in close out close return0 50 对象交互的两种形式 直接交互 一对象直接调用另一对象的公共 操作 这种方式在没有消息管理机制的单任务操作系统环境下用得最多 间接交互 一对象发送消息到消息队列中 由操作系统识别消息应该由哪个对象接受 然后调用相应对象的相关 操作 在多任务操作系统环境下用得最多 1 3 2消息传递与方法调用 51 1 4 1继承 继承是类之间的一种常见关系 这种关系为共享数据和操作提供了一种良好的机制 通过继承 一个类的定义可以基于另外一个已经存在的类 继承是面向对象程序设计方法的一个重要标志 利用继承机制可以大大提高程序的可重用性和可扩充性 父类 子类 52 继承 inheritance 继承是软件重用的一个基本机制 当通过继承定义一个新类时 新类获得了已存在类的属性和方法 子类只有一个父类 叫做 单重继承 如果一个子类有两个以上的父类 则称为 多重继承 53 1 4 2多态性 polymorphism 不同的类对象收到同一个消息可以产生完全不同的响应效果 这种现象叫做多态 利用多态机制 用户可以发送一个通用的消息 而实现的细节由接收对象自行决定 这样 同一个消息可能会导致调用不同的方法 54 1 4 2多态性 polymorphism 多态的实现受到继承性的支持利用类层次的继承关系 把具有通用功能的消息存放在高层次 而实现这一功能的不同的行为放在较低层次 55 56 面向对象的4个特性 抽象性封装性继承性多态性 57 1 5 1接口 Interface 对象的接口是以一组操作方法的形式出现的 每一个操作都对应于在响应某个消息时对象所完成的预定义行为 客户通过对象的接口来理解对象支持的各种行为 并根据接口来发送消息 58 1 5 1接口 Interface classStdFile 抽象基类5 4public virtualvoidOpen constchar name intmode 0 virtualpublicClose 0 virtualvoidRewind 0 59 classInputFile publicStdFile 对抽象基类的方法的重新定义和其他方法和成员变量 classOutputFile publicStdFile 对抽象基类的方法的重新定义和其他方法和成员变量 classRandomFile publicStdFile 对抽象基类的方法的重新定义和其他方法和成员变量 多个类实现StdFile类接口 60 1 5 2微软公司的COM DCOM组件技术 1 组件对象模

温馨提示

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

评论

0/150

提交评论