面向对象程序设计教程(C++语言描述

上传人:jiups****uk12 文档编号:57132470 上传时间:2018-10-19 格式:PPT 页数:167 大小:470KB
返回 下载 相关 举报
面向对象程序设计教程(C++语言描述_第1页
第1页 / 共167页
面向对象程序设计教程(C++语言描述_第2页
第2页 / 共167页
面向对象程序设计教程(C++语言描述_第3页
第3页 / 共167页
面向对象程序设计教程(C++语言描述_第4页
第4页 / 共167页
面向对象程序设计教程(C++语言描述_第5页
第5页 / 共167页
点击查看更多>>
资源描述

《面向对象程序设计教程(C++语言描述》由会员分享,可在线阅读,更多相关《面向对象程序设计教程(C++语言描述(167页珍藏版)》请在金锄头文库上搜索。

1、面向对象程序设计教程(C+语言描述)上,第1章 面向对象程序设计概论,1.1 程序设计方法 1.2 面向对象程序设计的基本概念 1.3 面向对象程序设计语言 1.4 C+对面向对象程序设计方法的支持 1.5 C+程序的实现,1.1 程序设计方法,1.1.1 结构化程序设计方法 1.1.2 面向对象的程序设计方法,返回首页,目前有两种重要的程序设计方法:,1.1.1 结构化程序设计方法,结构化程序设计的概念由瑞士计算机科学家1971年首次提出来,随之出现了支持结构化程序设计方法的程序设计语言,例如C语言。结构化程序设计方法:强调程序结构的规范性,强调程序设计的自顶向下,逐步求精的演化过程。在这种

2、方法中,待解问题和程序设计语言中的过程紧密相联。,1.1.1 结构化程序设计方法,例如要开发一个成绩管理系统,由于问题较复杂,我们将待解的问题分解成若干子问题: 输入成绩 处理成绩 打印成绩,待解问题将对应到main()函数,每个子问题对应到main()的调用函数,1.1.1 结构化程序设计方法,返回本节,随着程序规模与复杂性的增长,面向过程的结构化程序设计方法存在明显的不足之处: 数据安全性问题 可维护性及可重用性差 图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。,1.1.2 面向对象程序设计方法,在结构化程序设计方法中,程序可表示为:程序=数据结构+算法 即程序的要

3、素是数据结构和算法,数据结构是指利用计算机的离散逻辑来量化表达需要解决的问题,而算法则研究如何高效而快捷地组织解决问题的具体过程。,1.1.2 面向对象程序设计方法,【例1.1】用C+语言描述,用结构化程序设计方法计算矩形的面积。,1.1.2 面向对象程序设计方法,在面向对象的程序设计方法中,对象是数据结构和算法的封装体。根据这个定义,对象是计算机内存中的一块区域。在对象中,不但存有数据,而且存有代码,使得每个对象在功能上相互之间保持相对独立。当然,对象之间存在各种联系,但它们之间只能通过消息进行通信。程序可表示为:程序=对象+消息,1.1.2 面向对象程序设计方法,【例1.2】用C+语言描述

4、,用面向对象程序设计方法计算矩形的面积。,1.1.2 面向对象程序设计方法,通过这个程序可以知道面向对象程序程序的基本结构。一般情况下,面向对象程序都是由三个部分来构成:类的声明、类的成员的实现和主函数。可见,在面向对象程序设计中,它着重于类的设计。类正是面向对象语言的基本程序模块,通过类的设计,来完成实体的建模任务。,1.1.2 面向对象程序设计方法,程序Li1_2比程序Li1_1看起来要烦琐一些。但是,如果以RectangleArea类为基础,通过继承,可以很方便地派生出长方体等新的几何体,实现代码重用。面向对象程序设计方法提供了软件重用、解决大问题和复杂问题的有效途径,具有抽象性、封装性

5、、继承性和多态性等特点。,返回本节,1.2 面向对象程序设计的基本概念,1.2.1 抽象 1.2.2 封装 1.2.3 消息 1.2.4 继承 1.2.5 多态,返回首页,1.2.1 抽象,抽象就是忽略事物中与当前目标无关的非本质特征,而强调与当前目标有关的本质特征,从而找出事物的共性,并把具有共性的事物划为一类,得到一个抽象的概念。,1.2.1 抽象,面向对象方法中的抽象:指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。它包括两个方面:数据抽象和行为抽象(或称功能抽象、代码抽象)。其中,数据抽象描述某类对象共有的属性或状态,行为抽象描述某类对象的共有的行为或功能特征。将

6、这两方面抽象有机地结合,就形成了面向对象程序设计中的“对象”。还可以继续抽象:把众多相似的“对象”聚集起来,进一步抽象后就形成了“类”。,1.2.1 抽象,数据抽象: float length,width,Area; 行为抽象: SetData(float L,float W); CompueteArea(); OutputArea();,分析程序清单Li1_2:,如果不是计算矩形的面积,关注的特征可能是颜色、大小等。由此可见,对于同一个研究对象,由于所研究问题的侧重点不同,就可能产生不同的抽象结果。,返回本节,1.2.2 封装,在日常生活中,我们往往只想知道某件物品的功能,而不关心它是怎么工

7、作的。对于程序设计亦是如此,当人们面对某段程序时,只关心它的执行结果,而不关心实现过程以及过程中所用到的数据。封装恰好满足了这一需求。,1.2.2 封装,面向对象方法中的封装:就是将抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。封装有两个含义:一是把对象的全部属性和行为结合在一起,形成一个不可分割的独立单位。对象的私有属性只能由这个对象的行为来读取和修改;二是尽可能隐蔽对象的内部细节,对外形成一道屏障,通过公有行为充当外部接口。,1.2.2 封装,例如程序段Li1_2中的类RectangleArea就是在抽象的基础上,将矩形的数据和功能结合起来而构成的封装体。声明

8、的私有成员length、width和Area外部无法直接访问,外界可通过公有行为SetData()、CompueteArea()和OutputArea()与类RectangleArea发生联系。,返回本节,1.2.3 消息,消息:是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。前面所提到的“接口”规定了能向某一对象发出什么请求。也就是说,类对每个可能的请求都定义了一个相关的函数,当向对象发出请求时,就调用这个函数。这个过程通常概括为向对象“发送消息”(提出请求),对象根据这个消息决定做什么(执行函数代码)。,1.2.3 消息,例如,外界与

9、RectangleArea类进行通信,可以通过下面的C+语句来描述:/创建一个Rectangle对象RectangleArea Rectangle;/通过对象调用CompueterArea()函数Rectangle.CompueterArea();,返回本节,1.2.4 继承,在客观世界中,存在着一般和特殊的关系,特殊具有一般的特性,同时又有自己的新特性。运用抽象的原则就是舍弃对象的特殊性,提取其一般性,从而得到适合一个对象集的类。如果在这个类的基础上,再考虑抽象过程中被舍弃的一部分对象的特性,则可形成一个新的类,这个类具有前一个类的全部特征,又有自己的新特征,形成一种层次结构,即继承结构。,

10、1.2.4 继承,面向对象程序设计中利用继承机制将这种关系模型化。继承就是指特殊类的对象拥有其一般类的属性和行为。,1.2.4 继承,在软件开发过程中,继承进一步实现了软件模块的可重用性。继承意味着“自动地拥有”,即特殊类中不必重新定义已在一般类中定义过的属性和行为,而是自动地、隐含地拥有其一般类的属性与行为。当这个特殊类又被它更下层的特殊类继承时,它继承来的和自己定义的属性和行为又被下一层的特殊类继承下去。不仅如此,如果将开发好的类作为构件放到构件库中,在开发新系统时便可直接使用或继承使用。,返回本节,1.2.5 多态,面向对象的通信机制是消息,一个消息可以产生不同的响应效果,这种现象叫做多

11、态。即一个名字,多种语义;或相同界面,多种实现。,1.2.5 多态,例如,如果发送消息“双击”,不同的对象就会有不同的响应。比如,“文件夹” 对象收到双击消息后,会打开该文件夹,而“音乐文件”对象收到双击消息后,会播放该音乐。显然,打开文件夹和播放音乐需要不同的函数体。但是,它们可以被同一条消息“双击”所引发。这就是多态。,返回本节,1.3 面向对象程序设计语言,1.3.1 混合型的面向对象程序设计语言C+ 1.3.2 纯面向对象程序设计语言Java,返回首页,1.3.1混合型的面向对象程序设计语言C+,混合型程序设计语言兼有同时支持面向过程的程序设计和支持面向对象的程序设计的特点,C+语言是

12、这类语言的典型代表。,1.3.1混合型的面向对象程序设计语言C+,C+语言具有4个方面的优点:降低程序开发和维护的成本。与C兼容,但比用C语言编写的程序更有效率。允许程序员更自由地使用各种库。C+的异常处理机制能够保证在运行期间检查到错误,并转至相应的处理程序,减少了代码的长度和复杂度。,返回本节,1.3.2 纯面向对象程序设计语言Java,Java是一种具有“简单、面向对象的、分布式、解释型、健壮、安全、与体系结构无关、可移植、高性能、多线程和动态执行”等特性的语言。其次,它最大限度地利用了网络,Java的应用程序(Applet)可在网络上传输,可以说是网络世界的通用语言;另外,Java还提

13、供了丰富的类库,使程序设计者可以方便地建立自己的系统。因此Java具有强大的图形、图像、动画、音频、视频、多线程及网络交互能力,使其在设计交互式、多媒体网页和网络应用程序方面大显身手。,Java是C+的简化和改进,因而C+程序员可以很快掌握Java编程技术。,返回本节,1.4 C+对面向对象程序设计方法的支持,C+作为一种面向对象程序设计语言,支持面向对象技术的抽象性、继承性、封装性和多态性等特性。,返回首页,1.4 C+对面向对象程序设计方法的支持,1支持抽象性C+把问题域中的事物抽象成对象(Object),用数据成员描述该对象的静态特征(属性),用成员函数来刻画该对象的动态特征(行为)。,

14、返回本节,1.4 C+对面向对象程序设计方法的支持,2支持继承性 C+语言允许单继承和多继承。继承是面向对象语言的重要特性。C+允许从一个或多个已经定义的类中派生出新的类并继承其数据和操作,同时在新类中可以重新定义或增加新的数据和操作,从而建立起类的层次结构。被继承的类称为基类或父类,派生的新类称为派生类或子类。,返回本节,1.4 C+对面向对象程序设计方法的支持,3支持封装性在C+语言中,类是支持数据封装的工具,对象是数据封装的实现。C+将数据和相关操作封装在类中,同时通过访问权限来控制对内部数据的访问。,返回本节,1.4 C+对面向对象程序设计方法的支持,4支持多态性C+多态分为编译时多态

15、和运行时多态。对编译时多态的支持是通过函数重载和运算符重载实现的;对运行时多态的支持是通过继承和虚函数来实现的。,返回本节,1.5 C+程序的实现,返回首页,1.5.1 编辑C+源程序 1.5.2 编译和连接源程序 1.5.3 运行源程序,第2章 从C到C+,2.1 C+程序基本组成 2.2 简单的输入/输出 2.3 指针与引用 2.4 函数 2.5 new和delete运算符 2.6 其他若干重要的C+特性 2.7 应用实例,2.1 C+程序基本组成,返回首页,2.1.1 C+程序基本结构 2.1.2 C+程序基本组成,2.1.1 C+程序基本结构,一般情况下,用C+语言编写的程序是由函数加

16、上类组成的。两种退化情形: 程序中仅有类而没有函数(包括没有主函数)。通常是用来构造C+程序库,供编程序时重用。 另一种退化情形是程序中仅有函数而没有类。除主函数外,还可能有一些游离的函数,这些游离的函数不属于任何类。,返回本节,2.1.2 C+程序基本组成,【例2.1】一个最简单的C+程序。,2.1.2 C+程序基本组成,分析程序Li1_1.cpp: 1.文件包含命令(#include指令)文件包含命令,即#include指令,其作用是将某一个源文件的代码并入当前源程序。其形式有两种: #include 一般用于C+提供的库函数。C+编译程序按标准方式搜索,即系统到存放C+库函数头文件的include子目录中寻找要包含的文件。,2.1.2 C+程序基本组成, #include “文件名”这种形式一般用于程序员自己开发的模块。C+编译程序首先在当前工作目录中搜索,若没有,再按标准方式搜索。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号