已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计语言C 电子科技大学示范性软件学院 1 第一章引论 1 1面向对象的目标传统的程序设计方法是模块化 或结构化 的 具体步骤为 整个软件系统功能逐步细化为多个小的功能 功能划分 多个小的功能对应由一个模块 如函数 过程 分程序 子程序等 来实现 多个模块合作完成较大的功能 所有模块的合作完成整个软件系统的功能 2 第一章引论 1 1面向对象的目标对于传统的程序设计 在设计和实现 编程 阶段考虑的是模块 程序本身也是由模块构成的 下面我们由数据类型来引出面向对象的概念 3 第一章引论 1 1面向对象的目标数据类型分为三种 简单数据类型 内建 built in 类型 语言本身提供的类型 用户定义数据类型 以简单数据类型为基础 它包含多个简单数据类型成分 这些数据成分是可以直接操作的 抽象数据类型 在定义数据的同时 必须定义对数据的操作 它的数据成分是不可见的 也不可以直接操作 4 第一章引论 1 1面向对象的目标抽象数据类型是从更一般的信息隐蔽原则派生出来的 抽象数据类型隐藏了表示的细节 通过过程 或方法 来访问抽象数据对象 对象的表示是被保护的 对于抽象类型的使用 必须通过类型的实际例子 实例 实体 相当于变量或常量 的是用来体现 5 第一章引论 1 1面向对象的目标面向对象语言中所谓的对象 就是上面提到的实体 具体的说 是 将某组数据和使用该数据的一组基本操作封装在一起而形成的一个实体 对象和抽象类型的关系 就像整型变量和整型的关系 6 第一章引论 1 1面向对象的目标面向对象的基本思想就是把要构造的系统表示为对象的集合 它的目的是想在某种程度上解决软件面临的两大课题 怎样克服软件的复杂性怎样将现实世界模型 包括它们之间的关系 在计算机中自然地表示出来 7 第一章引论 1 1面向对象的目标从软件的角度来看 计算是一种仿真 如果每一个被仿真的实体都由一个数据结构来表示 并且将相关的操作信息封装进去 仿真将被简化 可以更方便地刻画对象的内部状态和运动规律 面向对象就是这样一种适用于直观模型化的设计方法 这意味着设计模型与客观对象之间有近乎一对一的对应关系 这一思想非常利于实现大型的软件系统 8 第一章引论 1 1面向对象的目标作为克服软件复杂性的手段 在面向对象的方法中 利用了如下对象的性质 将密切相关的数据和过程封装成为一个实体 定义了一个实体后 即使不知道此实体的功能是怎样实现的也能使用它 9 第一章引论 1 1面向对象的目标面向对象设计非常注重设计方法 实际上 用面向对象方法编程的关键是模型化 程序员的责任是构造现实的软件模型 此时 计算机的观点是不重要的 而现实的观点才是关键 10 第一章引论 1 1面向对象的目标面向对象的目标可以归纳为 对试图利用计算机进行问题求解和信息处理的领域 尽量使用对象的概念 将问题空间中的现实模型映射到程序空间 由此所得到的自然性可望克服软件系统的复杂性 从而得到问题求解和信息处理的更高性能 11 第一章引论 1 2面向对象语言的核心概念1 2 1数据封装DataEncapsulation面向过程语言的做法 12 第一章引论 1 2面向对象语言的核心概念1 2 1数据封装DataEncapsulation面向过程语言的做法 实例 13 第一章引论 1 2面向对象语言的核心概念1 2 1数据封装DataEncapsulation面向对象语言的做法 14 第一章引论 1 2面向对象语言的核心概念1 2 1数据封装DataEncapsulation面向对象语言的做法 实例 15 第一章引论 1 2面向对象语言的核心概念1 2 1数据封装DataEncapsulation面向对象语言采用了抽象的方法 而抽象的原则之一就是信息隐藏 数据封装将一组数据和这组数据相关的操作集合封装在一起 形成了一个能动的实体 成为对象 用户不必知道对象行为的实现细节 只需根据对象提供的外部特性接口访问对象 在C 中 实现数据封装的机制是 类 class 在Java和C 中 实现数据封装的机制也是 类 class 16 第一章引论 1 2面向对象语言的核心概念1 2 2继承Inheritance继承是面向对象语言的另一个重要的概念 在客观世界中 存在着整体和部分的关系 ispartof 一般和特殊的关系 iskindof 而这两种关系也是初学者容易弄混淆的关系 17 第一章引论 1 2面向对象语言的核心概念1 2 2继承Inheritance让我们来看看现实世界中的例子 Insect 18 第一章引论 1 2面向对象语言的核心概念1 2 2继承Inheritance在一个的继承树中 每下一层都比上一层更加具体地定义了每种类的特性 反过来 一旦某层的某个特征被确定了下来 那么其下所有的种类都应该包含该特性 这就是 继承 的一般性概念 19 第一章引论 1 2面向对象语言的核心概念1 2 2继承Inheritance在面向对象的语言中 类功能支持继承机制 除了根类 每个类都可以有父类 super parentclass baseclass 也可以有它的子类 subclass childclass derivedclass 一个子类从它的父类那里继承了所有的数据和操作 并扩充自己的特殊数据和操作 父类抽象出共同特征 子类表达差别 20 第一章引论 1 2面向对象语言的核心概念1 2 2继承Inheritance再看一个实际的例子 21 第一章引论 1 2面向对象语言的核心概念1 2 2继承Inheritance要注意区分的两个概念是 ispartof和iskindof 只有后者才是继承的概念 KindofMercedesisakindofcar PartofWheelsarepartofaMercedes Wheelisnotakindofcar 22 第一章引论 1 2面向对象语言的核心概念1 2 3多态性Poly morphism所谓多态 是指一个名字 或符号 具有多种含义 用户在使用函数编程时 关心的是该函数的功能及其使用接口 并不需要了解该函数的使用接口与函数的哪一种实现方法相匹配 binding 也就是说 在设计这一级上 我们只关心 施加在对象上的动作是什么 而不必牵涉 如何实现这个动作 以及 实现这个动作有多少种方法 的细节 23 第一章引论 1 2面向对象语言的核心概念1 2 3多态性Poly morphism函数重载在面向对象的语言中 函数重载 overload 表达了最简单的多态性 下面是函数重载的例子 voidfun int int char voidfun char float voidfun int int voidfun float float 24 第一章引论 1 2面向对象语言的核心概念1 2 3多态性Poly morphism运算符重载运算符重载指的是相同的运算符在不同的上下文有不同的解释 例如 两个整数使用 运算符表示它们要做加法 而两个字符串使用 运算符则表示串连接 C 为运算符重载提供了完整的语法支持 25 第一章引论 1 2面向对象语言的核心概念1 2 3多态性Poly morphism如果函数调用 接口 与哪个函数实现相匹配是在编译时完成的 称为早期匹配 earlybinding 或静态联编 如果匹配是在运行时确定的 则称为后期匹配 latelybinding 或动态联编 C 提供的虚函数 VirtualFunction 提供了后期匹配带来的良好特性 26 第一章引论 1 3按对象方式思维面向对象是一种仿真技术 面向对象设计产生一种与现实具有自然关系的软件系统 面向过程的程序设计方法鼓励全局地看问题 强调系统功能的逐步细化 而在面向对象程序设计中 每个对象严格地是局部的 每个对象管理自己的实现 学习面向对象设计 我们需要将思维方式从全局转到局部 在局部中发现对象 27 第一章引论 1 3按对象方式思维设计对象需要做许多小决策 怎样将计算部分合理地分配给不同的对象 这叫做分散责任 distributionresponsibility 这是设计决策的基础 其余都是次要的 CRC方法帮助设计者分散责任 直到设计的最后阶段才考虑问题的总体 28 第一章引论 1 3按对象方式思维面向对象的CRC方法从以下三个方面来表述对象 ClassName 给对象命名 实际上就是对需要处理的问题空间中包含的不同性质的数据进行分类 一个好的具有一致性的名字会为以后设计的正确性奠定基础 29 第一章引论 1 3按对象方式思维面向对象的CRC方法从以下三个方面来表述对象 Responsibilities 每个对象完成设计中的一个小目标的功能 它实现了这个系统状态的某一部分 责任要简明扼要 不要太多 同时不要让对象负责自己不需要承担的责任 30 第一章引论 1 3按对象方式思维面向对象的CRC方法从以下三个方面来表述对象 Collaborators 每个对象都可能依赖于其它对象来完成任务 合作者应该不要多 并且应该实用 尽量避免设计同所有对象打交道的也就是全局的对象 31 第一章引论 1 4面向对象的思想和方法1 4 1面向对象是一种认知方法学1 4 2面向对象与软件IC1 4 3面向对象方法与结构化程序设计方法1 4 4对象是抽象数据类型的实现 32 第一章引论 1 5类属类属并不是面向对象语言
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中国挤压铝管行业市场前景预测及投资价值评估分析报告
- 2026年中国盲人卫生巾行业市场规模及投资前景预测分析报告
- 2026年中国硫含量测定器行业市场前景预测及投资价值评估分析报告
- 2025江苏宿迁产发商业保理有限公司业务部客户经理招聘1人考试笔试模拟试题及答案解析
- 2026中国铁路广州局集团有限公司招聘普通高校毕业生682人(二)笔试考试备考试题及答案解析
- (人教2024版)英语八年级上册Unit 6 大单元教学设计(新教材)
- 佛山市城市供用水合同2025年合同履行监督报告审核
- 2026年防城港职业技术学院单招职业技能考试题库新版
- 2026年宁夏职业技术学院单招职业适应性测试题库附答案
- 2026年河北省承德市单招职业适应性考试题库及答案1套
- 5G通信模块设计项目分析方案
- 汽车维修入股协议合同
- 教育家精神课件
- 2025年四川教师公招《教育公共基础知识》试题答案
- 2026蒙牛「星动力」校园招聘笔试考试参考试题及答案解析
- 2025年机械行业安全生产考试题库(行业安全规范试卷)
- 教师职业发展规划与晋升路径解析
- 2025年实验室检验质控知识考试试题及答案解析
- 2025贵州毕节市中级人民法院招聘聘用制法官助理30人考试参考题库及答案解析
- 医院地震疏散培训
- 4.11 拧螺丝 课件 2025-2026学年科学二年级上册苏教版
评论
0/150
提交评论