面向对象程序设计语言C-第1章引论.ppt

上传人:xian****812 文档编号:6570820 上传时间:2020-02-29 格式:PPT 页数:34 大小:878.50KB
返回 下载 相关 举报
面向对象程序设计语言C-第1章引论.ppt_第1页
第1页 / 共34页
面向对象程序设计语言C-第1章引论.ppt_第2页
第2页 / 共34页
面向对象程序设计语言C-第1章引论.ppt_第3页
第3页 / 共34页
点击查看更多>>
资源描述
面向对象程序设计语言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类属类属并不是面向对象语言特有的成分 它指的是类型参数化 即参数化一个软件分量的能力 C语言没有类属的能力 但可以通过C的宏定义来模拟类属 C 采用模板来实现类属 在现代的编程思想中 用 泛型 的概念来代替类属 同时具有更广泛的含义 33 第一章引论 1 6面向对象的程序设计语言Simula67 Simula 20世纪60年代Smalltalk 20世纪80年代C 20世纪80年代早期Java 20世纪90年代C 21世纪初 34
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!