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

上传人:小飞机 文档编号:5010068 上传时间:2023-05-29 格式:PPT 页数:34 大小:356.50KB
返回 下载 相关 举报
面向对象程序设计语言C-第1章引论.ppt_第1页
第1页 / 共34页
面向对象程序设计语言C-第1章引论.ppt_第2页
第2页 / 共34页
面向对象程序设计语言C-第1章引论.ppt_第3页
第3页 / 共34页
面向对象程序设计语言C-第1章引论.ppt_第4页
第4页 / 共34页
面向对象程序设计语言C-第1章引论.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《面向对象程序设计语言C-第1章引论.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计语言C-第1章引论.ppt(34页珍藏版)》请在三一办公上搜索。

1、面向对象程序设计语言C+,电子科技大学示范性软件学院,1,第一章 引论,1.1 面向对象的目标传统的程序设计方法是模块化(或结构化)的,具体步骤为:整个软件系统功能逐步细化为多个小的功能功能划分。多个小的功能对应由一个模块(如函数、过程、分程序、子程序等)来实现。多个模块合作完成较大的功能,所有模块的合作完成整个软件系统的功能。,2,第一章 引论,1.1 面向对象的目标对于传统的程序设计,在设计和实现(编程)阶段考虑的是模块,程序本身也是由模块构成的。下面我们由数据类型来引出面向对象的概念。,3,第一章 引论,1.1 面向对象的目标数据类型分为三种:简单数据类型:内建(built-in)类型,

2、语言本身提供的类型。用户定义数据类型:以简单数据类型为基础,它包含多个简单数据类型成分,这些数据成分是可以直接操作的。抽象数据类型:在定义数据的同时,必须定义对数据的操作;它的数据成分是不可见的,也不可以直接操作。,4,第一章 引论,1.1 面向对象的目标抽象数据类型是从更一般的信息隐蔽原则派生出来的。抽象数据类型隐藏了表示的细节,通过过程(或方法)来访问抽象数据对象。对象的表示是被保护的。对于抽象类型的使用,必须通过类型的实际例子(实例/实体,相当于变量或常量)的是用来体现。,5,第一章 引论,1.1 面向对象的目标面向对象语言中所谓的对象,就是上面提到的实体,具体的说,是“将某组数据和使用

3、该数据的一组基本操作封装在一起而形成的一个实体”。对象和抽象类型的关系,就像整型变量和整型的关系。,6,第一章 引论,1.1 面向对象的目标面向对象的基本思想就是把要构造的系统表示为对象的集合,它的目的是想在某种程度上解决软件面临的两大课题:怎样克服软件的复杂性怎样将现实世界模型(包括它们之间的关系)在计算机中自然地表示出来,7,第一章 引论,1.1 面向对象的目标从软件的角度来看,计算是一种仿真。如果每一个被仿真的实体都由一个数据结构来表示,并且将相关的操作信息封装进去,仿真将被简化,可以更方便地刻画对象的内部状态和运动规律。面向对象就是这样一种适用于直观模型化的设计方法。这意味着设计模型与

4、客观对象之间有近乎一对一的对应关系。这一思想非常利于实现大型的软件系统。,8,第一章 引论,1.1 面向对象的目标作为克服软件复杂性的手段,在面向对象的方法中,利用了如下对象的性质:将密切相关的数据和过程封装成为一个实体;定义了一个实体后,即使不知道此实体的功能是怎样实现的也能使用它。,9,第一章 引论,1.1 面向对象的目标面向对象设计非常注重设计方法。实际上,用面向对象方法编程的关键是模型化。程序员的责任是构造现实的软件模型。此时,计算机的观点是不重要的,而现实的观点才是关键。,10,第一章 引论,1.1 面向对象的目标面向对象的目标可以归纳为:对试图利用计算机进行问题求解和信息处理的领域

5、,尽量使用对象的概念,将问题空间中的现实模型映射到程序空间,由此所得到的自然性可望克服软件系统的复杂性,从而得到问题求解和信息处理的更高性能。,11,第一章 引论,1.2 面向对象语言的核心概念 数据封装 Data Encapsulation面向过程语言的做法,12,第一章 引论,1.2 面向对象语言的核心概念 数据封装 Data Encapsulation面向过程语言的做法:实例,13,第一章 引论,1.2 面向对象语言的核心概念 数据封装 Data Encapsulation面向对象语言的做法,14,第一章 引论,1.2 面向对象语言的核心概念 数据封装 Data Encapsulatio

6、n面向对象语言的做法:实例,15,第一章 引论,1.2 面向对象语言的核心概念 数据封装 Data Encapsulation面向对象语言采用了抽象的方法。而抽象的原则之一就是信息隐藏。数据封装将一组数据和这组数据相关的操作集合封装在一起,形成了一个能动的实体,成为对象。用户不必知道对象行为的实现细节,只需根据对象提供的外部特性接口访问对象。在C+中,实现数据封装的机制是“类(class)”。在Java和C#中,实现数据封装的机制也是“类(class)”。,16,第一章 引论,1.2 面向对象语言的核心概念 继承 Inheritance继承是面向对象语言的另一个重要的概念。在客观世界中,存在着

7、整体和部分的关系(is part of)、一般和特殊的关系(is kind of),而这两种关系也是初学者容易弄混淆的关系。,17,第一章 引论,1.2 面向对象语言的核心概念 继承 Inheritance让我们来看看现实世界中的例子:,Insect,18,第一章 引论,1.2 面向对象语言的核心概念 继承 Inheritance在一个的继承树中,每下一层都比上一层更加具体地定义了每种类的特性。反过来,一旦某层的某个特征被确定了下来,那么其下所有的种类都应该包含该特性。这就是“继承”的一般性概念。,19,第一章 引论,1.2 面向对象语言的核心概念 继承 Inheritance在面向对象的语言

8、中,类功能支持继承机制。除了根类,每个类都可以有父类(super/parent class,base class),也可以有它的子类(subclass/child class/derived class)。一个子类从它的父类那里继承了所有的数据和操作,并扩充自己的特殊数据和操作。父类抽象出共同特征,子类表达差别。,20,第一章 引论,1.2 面向对象语言的核心概念 继承 Inheritance再看一个实际的例子:,21,第一章 引论,1.2 面向对象语言的核心概念 继承 Inheritance要注意区分的两个概念是:is part of 和 is kind of,只有后者才是继承的概念。Kin

9、d ofMercedes is a kind of car.Part ofWheels are part of a Mercedes.Wheel is not a kind of car.,22,第一章 引论,1.2 面向对象语言的核心概念 多态性 Poly-morphism所谓多态,是指一个名字(或符号)具有多种含义。用户在使用函数编程时,关心的是该函数的功能及其使用接口,并不需要了解该函数的使用接口与函数的哪一种实现方法相匹配(binding)。也就是说,在设计这一级上,我们只关心“施加在对象上的动作是什么”,而不必牵涉“如何实现这个动作”以及“实现这个动作有多少种方法”的细节。,23,第

10、一章 引论,1.2 面向对象语言的核心概念 多态性 Poly-morphism函数重载在面向对象的语言中,函数重载(overload)表达了最简单的多态性。下面是函数重载的例子:void fun(int,int,char);void fun(char,float);void fun(int,int);void fun(float,float);,24,第一章 引论,1.2 面向对象语言的核心概念 多态性 Poly-morphism运算符重载运算符重载指的是相同的运算符在不同的上下文有不同的解释。例如:两个整数使用+运算符表示它们要做加法,而两个字符串使用+运算符则表示串连接。C+为运算符重载提

11、供了完整的语法支持。,25,第一章 引论,1.2 面向对象语言的核心概念 多态性 Poly-morphism如果函数调用(接口)与哪个函数实现相匹配是在编译时完成的,称为早期匹配(early binding)或静态联编。如果匹配是在运行时确定的,则称为后期匹配(lately binding)或动态联编。C+提供的虚函数(Virtual Function)提供了后期匹配带来的良好特性。,26,第一章 引论,1.3 按对象方式思维面向对象是一种仿真技术,面向对象设计产生一种与现实具有自然关系的软件系统。面向过程的程序设计方法鼓励全局地看问题,强调系统功能的逐步细化。而在面向对象程序设计中,每个对象

12、严格地是局部的。每个对象管理自己的实现。学习面向对象设计,我们需要将思维方式从全局转到局部,在局部中发现对象。,27,第一章 引论,1.3 按对象方式思维设计对象需要做许多小决策,怎样将计算部分合理地分配给不同的对象。这叫做分散责任(distribution responsibility)。这是设计决策的基础,其余都是次要的。CRC方法帮助设计者分散责任,直到设计的最后阶段才考虑问题的总体。,28,第一章 引论,1.3 按对象方式思维面向对象的CRC方法从以下三个方面来表述对象:Class Name。给对象命名,实际上就是对需要处理的问题空间中包含的不同性质的数据进行分类。一个好的具有一致性的

13、名字会为以后设计的正确性奠定基础。,29,第一章 引论,1.3 按对象方式思维面向对象的CRC方法从以下三个方面来表述对象:Responsibilities。每个对象完成设计中的一个小目标的功能,它实现了这个系统状态的某一部分。责任要简明扼要,不要太多,同时不要让对象负责自己不需要承担的责任。,30,第一章 引论,1.3 按对象方式思维面向对象的CRC方法从以下三个方面来表述对象:Collaborators。每个对象都可能依赖于其它对象来完成任务。合作者应该不要多,并且应该实用。尽量避免设计同所有对象打交道的也就是全局的对象。,31,第一章 引论,1.4 面向对象的思想和方法1.4.1 面向对

14、象是一种认知方法学1.4.2 面向对象与软件IC1.4.3 面向对象方法与结构化程序设计方法1.4.4 对象是抽象数据类型的实现,32,第一章 引论,1.5 类属类属并不是面向对象语言特有的成分,它指的是类型参数化,即参数化一个软件分量的能力。C语言没有类属的能力,但可以通过C的宏定义来模拟类属。C+采用模板来实现类属。在现代的编程思想中,用“泛型”的概念来代替类属,同时具有更广泛的含义。,33,第一章 引论,1.6 面向对象的程序设计语言Simula 67(Simula):20世纪60年代Smalltalk:20世纪80年代C+:20世纪80年代早期Java:20世纪90年代C#:21世纪初,34,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号