




已阅读5页,还剩60页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于C 的面向对象编程教程 于芹芬2003年春 关于课程 1 目标进一步学会面向过程编程理解面向对象思想以对象的方式思考熟悉C P 利用C 编程 在本课程中 C 是一个学习面向对象概念的工具运用面向对象模式进行程序设计 采用面向对象方法的效果 OOA OOD 可维护性可扩展性可靠性 如何实现课程目标 阅读和记忆阅读书籍 记住语言特点思考以对象和类的方式思考实践多编程 参考课本 C 程序设计教程 钱能 清华大学出版社C 程序设计教程 H M Deitel P J Deitel著 机械工业出版社C 大学教程 第二版 HarveayM Deitel著 电子工业出版社C Primer 第三版 StanleyB lippmanJoseeLajoie著 中国电力出版社C 编程思想 ThinkinginC BruceEckel著 机械工业出版社 1从C语言到C 语言 C语言以其如下独有的特点风靡了全世界 1 语言简洁 紧凑 使用方便 灵活 C语言只有32个关键字 程序书写形式自由 2 丰富的运算符和数据类型 3 可以直接访问内存地址 能进行位操作 使其能够胜任开发操作系统的工作 4 生成的目标代码质量高 程序运行效率高 5 可移植性好 局限性 1 数据类型检查机制相对较弱 这使得程序中的一些错误不能在编译阶段被发现 2 C本身几乎没有支持代码重用的语言结构 因此一个程序员精心设计的程序 很难为其它程序所用 3 当程序的规模达到一定程度时 程序员很难控制程序的复杂性 发展 1980年 贝尔实验室的BjarneStroustrup开始对C进行改进和扩充 1983年正式命名为C 在经历了3次C 修订后 1994年制定了ANSIC 标准的草案 以后又经过不断完善 成为目前的C C 仍在不断发展中 美国微软公司现已推出C CSharp 语言 来代替C 语言 编译器 VC 6 0或其它 TurborC3 0 BorlandC 有关面向对象编程的网站 www soft C 的网站 Object Oriented编程简介 内容 方法学编程技术面向对象语言 1 方法学 思考问题的方法 归纳从特殊到一般从不同的dogs到词汇 dog Dog 思考问题的方法 演绎从一般到特殊从词汇 dog 你可以区别出一个动物是还是不是一条狗 DOG 面向对象 它是一种思考方法世界上的任何东西都是一个对象 任何系统都是由对象构成的 当然系统也是一个对象 系统的演化和开发就是通过系统内外的对象进行交互完成的 世界上的任何东西都是一个对象 花 树 动物学生 教授桌子 椅子 教室 建筑大学 城市 国家世界 宇宙学科 如计算机 信息系统 数学 历史 任何系统都是由对象构成的 法律系统文化系统教育系统经济系统信息系统计算机系统 系统开发就是定义对象间的交互 浙江林学院是由下列对象的交互构成的 学生教授职员浙江省政府中国政府 林院内部 林院外部 设计方法学 面向对象首先是一种设计方法学 OOA OOD 对象是程序的构成模块 接口对象 editor menu file etc 数据管理对象 db etc 对象代表了在应用中对现实世界的抽象 设计方法学 面向对象支持归纳 对象 类需要OOA OOD工具 演绎 类 对象编程者需要学习有关类库的知识 设计方法学 面向对象支持Top down 从超类到子类Bottom up 从子类到超类 面向对象编程的基础 对象 封装 继承一般说来 对象是根据类来定义的 我们也可以用一个类来定义另一个类 例如 山地车 赛车和双座自行车都是自行车的一种 用面向对象的术语来说 它都是自行车类的子类或派生类 而自行车类是它们的超类或父类或基类 它们的关系如下图所示 自行车每一个子类继承了超类的数据和操作 但是 子类并不是局限于超类的数据和操作 例如 双座自行车有两个坐垫 山地车有一个额外的低速齿轮 继承的主要益处是可以复用超类的程序代码 多态 赛车 三地车 双座自行车 面向对象 世界是面向对象的 AlanKaysaid 如果你对世界了解 那么你就了解了面向对象 所以 面向对象是容易的 2 编程 编程就像写作 如果你能够描绘一样东西 你就可以写一个程序 所以 编程也是容易的 所以 面向对象的编程等于容易 容易 得到 too 2 easy 编程 编程 但是 实际上 编程并不那么容易 因为编一个真正的好的程序是不容易的 它需要编程者的智慧 知识和经验 就象写作一样 要成为一个好的作家 就需要很多的经验和对这个世界的大量知识 学习和练习就必不可少 编程技术 非结构化编程过程编程模块化 结构化编程抽象数据类型面向对象编程 非结构化编程 我们经常将一个简单的程序写成一个主程序 此处 主程序代表了命令和声明的一个序列 这个系列在整个程序中对全局数据进行修改 MainProgram Data 缺点 这种技术只能用于很小的程序中 例如 如果相同的声明序列在不同的地方要多次出现时 我们就不得不拷贝这些序列 如果其中发生了一个错误 我们就需要对每一个拷贝进行修改 这就导致了我们将这些序列抽取出来 单独命名 并通过调用和返回值的方法来实现多处复用的方法 过程编程 在过程编程中 你可以将序列归在一个地方过程调用可以被用于调用过程 在调用完成后 控制流继续往下 MainProgram Procedure 过程 通过参数和子过程 过程的过程 程序就可以写得更有结构并且可以减少错误 例如 如果过程是正确的 那么每一次使用它必然可以获得正确的结果因而 为了查找错误 你就可以缩小查找的范围 模块化编程 在模块化编程中 具有公共功能的过程被集中在不同的模块中一个程序就不再是一个单一整体构成的了 它被分解成多个小的部分 这些小的部分之间通过调用相互交互 构成了整个程序 MainProgram Alsoamodule Data Data Data1 Module2 Data Data2 Module1 Data Data1 Procedure1 Procedure2 主程序协调多个模块之间的调用 并进行数据的传送 Procedure3 模块化编程 每一个模块都可以有自己的数据 这将允许每一个模块来管理内部状态 这些状态可以在调用这些模块中的过程时得到修改 因此 每一个模块都有一个状态 每一个模块在整个程序中通常也最多存在一次 结构化编程 结构化程序中的三种结构 顺序 s1 s2 sn 分支 if then else 循环Loop for do andwhileloops 程序中有多少结构 抽象数据类型 ADTs 抽象模型抽象数据类型属性 抽象 问题处理手段 为了理解问题 需要将不必要的细节分离出去 你将构造你自己针对问题的抽象视图 抽象模型这个建模过程称为抽象abstraction 问题 模型 抽象 模型 模型定义了一个抽象的视图 该视图只关注于与问题和求解者相关的部分 你需要定义下列属性 影响的数据 识别出来的操作 ADT就是一种模型 Interface Operations AbstractDataStructure AbstractDataType ADT 定义 ADT ADT有下列一些特性 1 它提供了一种类型 2 它提供了操作的集合 该集合被称为接口 3 接口的操作是类型数据结构的唯一访问途径 4 原理和前提定义了类型的应用领域 例子 ADTList 类型List 类型list实例的接口由接口定义文件定义操作 insert get append delete search 面向对象的编程 对象是由抽象数据类型来的面向对象编程是对象交互的一个网络 每一个对象保存自己的状态程序中的对象通过发送消息进行交互 Object1 Data1 Procedures1 Data Data1 Object3 Data3 Procedures3 Object2 Data2 Procedures2 Object4 Data4 Procedures4 面向对象编程 在面向对象编程中 我们直接发送一个消息 而不是去调用一个程序来实现一个功能 粗略地说 每一个对象实现了自己的模块 面向对象编程 每一个对象负责正确地初始化和销毁自身 相应地 对对象而言 我们就不需要显式地创建和生成过程 模块信息隐藏数据封装抽象数据类型对象 面向对象的演化 记住 封装 Data Operations 信息隐藏的技术 对象的用户不能看到对象的数据和操作的细节 数据抽象 从对象中发现类的过程抽象数据类型 类 3 编码语言 面向对象语言 面向对象编程语言就是能够很方便地支持面向对象概念的语言Smalltalk 1972 1980 C 1986 Java 1992 Smalltalk C 其它 Effile Objective C Ada Smalltalk Smalltalk是一个纯的面向对象语言 多数人认为Smalltalk程序比C 程序开发起来更快 Smalltalk 丰富的类库 通过继承实现重用Smalltalk拥有动态开发环境 它不是编译的 但是C 是编译的 这使得开发过程更可变 你可以方便地对类和各种情形进行修改 Smalltalk 编程者并不能象在C 中那样立即掌握o o概念 正因为如此 掌握Smalltalk需要更多地时间 但是多数时间是花在学习面向对象方法学和技术上 而不是编程语言上的 实际上 Smalltalk比C和C 更为简单 C C 是C的面向对象版本 它与C是一致的 它实际上是C的超集 所以现存的C代码能够包含在C 程序中 C 程序速度快 效率高 这些特性已经使C成为很流行的语言 C 它牺牲了一些灵活性以提高效率 C 采用编译时绑定的方法 这使得程序运行时的效率很高 代码也较小 但是它影响了重用类的某些能力 C C 已经非常流行 绝大多数新的C编译器实际上是C C 编译器 但是 如果想进行面向对象编程 你必须用C 编程 思考 而不是C 这些都将对有经验的C编程者带来挑战 他们认为他们是在运用C 编程 但实际上只用了很少的面向对象特点 C C 是一个优秀的语言 利用它 你可以编出世界上最好的程序 C 是一个差的语言 使用它 你也可能编出世界上最差的程序所以 在学习和使用它时 注意它的OO特性和非OO特性 Java 它是一个可移植语言 它可以运行在浏览器上 因此 它在Intern
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家电维修技术学习手册
- 职业教育学生就业基地建设规划方案
- 机械设备安装调试专项安全检查表
- 门窗采购安装详细合同模板参考
- 组织线下活动增加品牌曝光度
- 天然气供应保障预案
- 低压电器事故排查报告
- 化学原理及实验指南
- EHS风险管理安全生产隐患排查细则
- 书籍是精神的居所阅读是心灵的净土
- 人教版(新教材)高中生物选择性必修1课件3:4 3 免疫失调
- 《SLT 582-2025水工金属结构制造安装质量检验检测规程》知识培训
- “燕园元培杯”2023-2024学年全国中学生地球科学奥林匹克竞赛决赛试题详解
- 中国血脂管理指南(基层版+2024年)解读
- 分子诊断技术在感染性疾病中的应用-深度研究
- 《智能AI分析深度解读报告》课件
- 气道异物护理教学
- 2024年版机电产品国际招标标准招标文件
- 企业合规经营规范手册
- 企业员工心理健康与欺凌防范政策
- 四川省兴文县建设煤矿2021年矿山储量年报
评论
0/150
提交评论