面向对象程序设计概述PPT课件

上传人:牛*** 文档编号:78739465 上传时间:2022-04-22 格式:PPTX 页数:51 大小:1.01MB
收藏 版权申诉 举报 下载
面向对象程序设计概述PPT课件_第1页
第1页 / 共51页
面向对象程序设计概述PPT课件_第2页
第2页 / 共51页
面向对象程序设计概述PPT课件_第3页
第3页 / 共51页
资源描述:

《面向对象程序设计概述PPT课件》由会员分享,可在线阅读,更多相关《面向对象程序设计概述PPT课件(51页珍藏版)》请在装配图网上搜索。

1、课程学习方法第1页/共51页 本课程的主要内容 第第1 1章章 从现实生活和面向对象程序设计的两个角度,简单介绍面向对象程序设计的一些概念,例如对象与类、抽象与封装、继承性、多态性等。 第第2 2章章 介绍C+对C在非面向对象方面的改进与增强,为以后各章的学习打下基础。 第第3 3章到第章到第1010章章 介绍C+面向对象程序设计的基本知识和方法。 第第1111章章 介绍面向对象程序设计方法与实例 。第2页/共51页第3页/共51页第1章 面向对象程序设计概述 1.1 什么是面向对象程序设计 1.2 为什么要使用面向对象程序设计 1.3 面向对象程序设计的语言第4页/共51页 1.1.1 1.

2、1.1 什么是面向对象程序设计什么是面向对象程序设计 面向对象程序设计面向对象程序设计是一种新的程序设计的范型。是一种新的程序设计的范型。 程序设计范型是指设计程序的规范、模型和风格程序设计范型是指设计程序的规范、模型和风格, ,它是一类程序设计语言的基础。一种程序设计范型体它是一类程序设计语言的基础。一种程序设计范型体现了一类语言的主要特征。现了一类语言的主要特征。 面向过程程序设计面向过程程序设计范型的范型的主要特征主要特征是是, ,程序由程序由过程过程定义定义和和过程调用过程调用组成。组成。 基于面向过程的程序可以用以下的公式来表述基于面向过程的程序可以用以下的公式来表述: : 程序程序

3、 = = 过程过程 + + 调用调用 所谓所谓过程过程就是程序执行某项操作的一段代码就是程序执行某项操作的一段代码, ,函数函数是最常用的过程。是最常用的过程。第5页/共51页 面向过程程序设计语言称为面向过程程序设计语言称为面向过程性语言面向过程性语言, ,如如C C、PASCALPASCAL等都是典型的面向过程性语言。等都是典型的面向过程性语言。 用面向过程的程序设计语言解决一个实际问题用面向过程的程序设计语言解决一个实际问题时,通常分为以下三步:时,通常分为以下三步: 1 1将问题分解成若干个称之为模块的功能块将问题分解成若干个称之为模块的功能块; ; 2.2. 根据模块功能来设计一系列

4、用于存储数据的数根据模块功能来设计一系列用于存储数据的数据结构据结构; ; 3.3. 编写一些过程(或函数)对这些数据进行操作。编写一些过程(或函数)对这些数据进行操作。 程序就是由这些过程构成的。程序就是由这些过程构成的。第6页/共51页 面向过程的程序设计方法将面向过程的程序设计方法将数据数据和和过程过程作为两个作为两个实体来对待,实体来对待,数据数据和和过程过程是分离的。是分离的。 面向过程的程序设计的缺点是面向过程的程序设计的缺点是: : 一旦数据需要变更的时候,必须修改与之有关的一旦数据需要变更的时候,必须修改与之有关的所有模块。所有模块。 因此,因此,面向过程的程序的可重用性差,维

5、护代价面向过程的程序的可重用性差,维护代价高高, , 数据安全性较差。数据安全性较差。 第7页/共51页 面向对象的程序设计面向对象的程序设计将将数据数据和相应的和相应的操作操作看成一看成一个个统一体统一体, ,这个统一体称为这个统一体称为对象对象。 面向对象程序设计的主要特征是面向对象程序设计的主要特征是: : 程序程序 = = 对象对象 + + 消息消息 对象对象是面向对象程序的基本元素。是面向对象程序的基本元素。 第8页/共51页 面向对象程序的结构特点是面向对象程序的结构特点是: : 第一,程序一般由第一,程序一般由类的定义类的定义和和类的使用类的使用两部分组两部分组成。成。 在程序中

6、由类定义其在程序中由类定义其对象对象, ,并规定并规定对象对象之间之间传递消传递消息息的规律的规律。 第二,程序中的一切操作都是通过第二,程序中的一切操作都是通过向对象发送消向对象发送消息息来实现的。来实现的。 对象接收到消息后,启动有关方法完成相应的操对象接收到消息后,启动有关方法完成相应的操作。作。 面向对象程序设计面向对象程序设计是一种是一种新的程序设计的范型新的程序设计的范型, ,是是解决面向过程的程序设计的缺点的最好方法。解决面向过程的程序设计的缺点的最好方法。第9页/共51页1.1.2 面向对象程序设计的基本概念1.1.对象对象: :在现实世界中现实世界中,对象是我们认识世界的基本

7、单元。 它可以是人,物,一件事,整个世界就是由形形色色的“对象”构成的。 对象可以是: * 有形的具体存在的事物 例如: 一辆车、一个球、一个小学生; * 无形的、抽象的事件 例如: 一次演出、一场球赛等。 对象既可以很简单,也可以很复杂,复杂的对象可以由若干简单的对象构成。第10页/共51页 现实世界中的对象,具有以下特性: (1) 每一个对象必须有一个名字以区别其它对象; (2) 用属性来描述对象的某些特征; (3) 有一组操作,每一个操作决定对象的一种行为; (4) 对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。 在现实世界中对象可以表示为: 属性 + 行为

8、 行 为 对象 属 性第11页/共51页 举例: 对象名: 录音机 对象的属性: 生产厂家: SONY 机器编号 :XXXX 出厂日期 :2009.05.06 对象的行为: 播放 录音 停止 倒带 静态特征静态特征动态特征动态特征使用对象时只需知道它向外界提供的接口形式而不需要知道它的内部是如何实现的。 这样,不仅使得对象的使用变得非常简单、方便,而且具有很高的安全性和可靠性。 可见面向对象程序设计中的对象来源于现实世界,更接近人们的思维。第12页/共51页在面向对象程序设计中: : 对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。对象可以认为是: :数据 + + 操

9、作对象对象 数数 据据操作代码操作代码对象对象对象 数数 据据操作代码操作代码对象在面向对象程序设计中, ,用数据来体现上面提到的“属性”, ,用函数来实现对数据的操作, ,以实现某些功能。第13页/共51页 在现实世界中, “类”是对一组具有共同的属性和行为的对象的抽象。 例如,教师黎明是一个对象。 对象名: 黎明 对象的属性: 年龄:45 学历:博士 职称:教授 对象的行为(操作): 走路 吃饭 授课 一个个的象黎明这样的教师就构成教师类。 2.类第14页/共51页 类和对象之间的关系是抽象和具体的关系, 类是对多个对象进行抽象的结果。 一个对象是类的一个实例。 例如: 张三、李四、王五、

10、. 人 对象 类 再如: 苹果、梨、桔子、香蕉 - - - 水果 对象 类第15页/共51页 在面向对象程序设计中, “类”就是具有相同的数据和操作(函数)的一组对象的集合。 在C+语言中把类中的数据称为数据成员,类中的操作是用函数来实现的,这些函数称为成员函数。 实际上,类是一种新的用户定义的抽象的数据类型,对象是类的一个实例。 数据类型 实 例 int a,b (变量) 学生类 张三,李四( 对象) 水果类 苹果,桔子(对象)类类型与传统数据类型的重要区别是: : 一个类在定义数据的同时也定义了对这些数据的操作。第16页/共51页 在面向对象程序设计中,对象之间的联系,称为对象的交互。 在

11、面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息” 。 3.消息第17页/共51页 消息具有三个性质: (1) 同一个对象可以接收不同形式的多个消息,作出不同的响应; (2) 相同形式的消息可以传递给不同的对象,所作出的响应可以是不同的; (3) 接收对象对消息的响应并不是必须的,对象可以响应消息,也可以不响应。 第18页/共51页 调用对象中的函数就是向该对象传送一个消息,要求该对象实现某一行为(功能、操作)。 对象所能实现的行为(操作),在程序设计方法中称为方法,方法中定义了一系列的操作步骤它们是通过调用相应的函数来实现的。 实际上: 在C+语言中,方法是通过成员函数来实现的

12、。 4.方法第19页/共51页 1.1.3 面向对象程序设计的基本特征 1. 抽 象 2. 封 装 3. 继 承 4. 多 态 本节主要内容第20页/共51页1. 抽 象现实生活中:张三、李四、王五、. - 人苹果、梨、桔子、香蕉 . -水果 抽象的过程是将有关事物的共性归纳、集中的过程。 第21页/共51页在程序设计方法中: 抽象是对复杂世界的简单表示,抽象并不打算了解全部问题,而只强调感兴趣的信息,忽略了与主题无关的信息。 例如,在设计一个成绩管理程序的过程中,只关心他的姓名、学号、成绩等,而对他的身高、体重等信息就可以忽略。 而在设计学生健康信息管理系统中,身高、体重等信息必须抽象出来,

13、而成绩则可以忽略。 第22页/共51页 抽象包括两个方面:数据抽象和代码抽象。 数据抽象描述某类对象的共同属性; 代码抽象描述了某类对象具有的共同行为。 第23页/共51页 以职工人事管理系统为例,通过对所有职工进行归纳、分析,抽取出其中的共性,可以得到如下的抽象描述: 共同的属性(数据抽象部分):姓名、职工号、部门 用C+语言的数据成员来表示: char* name; /姓名 int number; /职工号 char* department; /部门 共同的行为(代码抽象部分):数据录入、数据修改和数据输出等。 用C+语言的成员函数表示: input() /数据录入函数 modify()

14、/数据修改函数 display() /数据输出函数第24页/共51页 2.封装 在现实世界中,所谓封装就是把某个事物包围起来,外界是看不到的,甚至是不可知的。 例如:录音机、电视机、照相机等。 在面向对象程序设计中,封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能隐蔽对象的内部细节。 第25页/共51页 对象好像是一个不透明的黑盒子, 表示对象属性的数据和实现各个操作的代码都被封装在黑盒子里,从外面是看不见的,各个对象之间是相对独立的,互不干扰。 对象只留下少量接口,以便与外界联系。 C+对象中的成员函数名就是对象的对外接口,外界可以通过成员函数名来调用函数来实现某些操作。第26页

15、/共51页 封装具有两方面的含义: 一是将有关的数据和操作代码封装在一个对象中,各个对象相对独立、相不干扰。 二是将对象中某些数据与操作代码对外隐蔽,即隐蔽其内部细节,只留下少量接口,以便与外界联系,接收外界的消息。这种对外界隐蔽的做法称为信息隐蔽。第27页/共51页 封装和抽象机制可以将对象的使用者与设计者分开,使用者不必知道对象行为实现的细节,只需要使用设计者提供的接口让对象去做。 这样,大大降低了人们操作的复杂程度,还有利于数据安全。从而减轻了开发一个软件糸统的难度。第28页/共51页3. 继承 (1) 继承的概念 父亲 儿子 继承关系可以使后者继承前者的基本特性,又可以增加一些新的特性

16、。第29页/共51页 哺乳动物 (热血、有毛发、用奶哺育幼仔) 狗 (有犬牙、食肉、特定的骨骼结构、群居) 白狗 黑狗 (白色) (黑色) 继承关系简化了人们对事物的认识和叙述,简化了工作程序。 第30页/共51页 若类之间具有继承关系,则它们之间具有下列几个特性: 1类间具有共享特性(包括数据和程序代码的共享); 2类间具有差别或新增部分(包括非共享的数据和程序代码); 3类间具有层次结构。第31页/共51页 假设有两个类-类A 和类B,若类B继承类A,则类B具有类A的基本特性(包括数据和操作) A B 这时,我们称类A为基类或父类;而称类B为类A的派生类或子类。 我们可以说:类B 继承了类

17、A 还可以说: 类B是从类A中派生出来的。第32页/共51页 如果类B是类A的派生类,那么,在构造类B的时候,不必描述派生类B的所有特性,只需: 1. 让它继承类A的特性, 2. 增加类B与基类A不同的那些特性。 可见,类B的特性是由继承来的和新添加的两部分特性构成。第33页/共51页 类的派生过程可以无限继承下去, 即派生类可以作为另一个派生类的基类。 祖父 父亲 儿子第34页/共51页 继承机制的作用: 一是避免公用代码的重复开发, 减少代码和数据冗余。 二是通过增强一致性来减少模块间的接口和界面。 第35页/共51页 (2) 继承的分类 从继承源上划分: 继承分为单继承和多继承。 单继承

18、-一个派生类只继承了一个基类的特性。 多继承-一个派生类继承了多个基类的特性。第36页/共51页 4. 多态 面向对象系统的多态性是指不同的对象收到相同的的消息时, 执行不同的操作。 第37页/共51页 4. 多态 面向对象系统的多态性是指不同的对象收到相同的的消息时, 执行不同的操作。 1.在日常生活中: 汽车 行为1 挪开 同一消息 凳子 行为2 第38页/共51页 4. 多态 面向对象系统的多态性是指不同的对象收到相同的的消息时, 执行不同的操作。 1.在日常生活中: 汽车 行为1 挪开 同一消息 凳子 行为2 2.在OOP中: 窗口对象 行为3 移动 同一消息 棋子对象 行为4第39页

19、/共51页 C+语言支持两种多态性: 编译时的多态性 运行时的多态性 编译时的多态性是通过函数重载和运算符重载来实现的; 运行时的多态性是通过虚函数来实现的。 将分别在第2章、第6章与第7章进行介绍。第40页/共51页1.2 为什么要使用面向对象程序设计1.2.1 传统程序设计方法的局限性 1.2.2 面向对象程序设计的主要优点第41页/共51页1.2.1 传统程序设计方法的局限性1.传统程序设计开发软件的生产效率低下 硬件: 电子管晶体管集成电路大规模集成电路 生产能力不断提高、更新越来越快、功能越来越强、价格越来越低。 软件: 机器语言汇编语言高级语言 生产能力低下、开发周期长、效率低、更

20、新较慢、费用不断上升。 为什么出现这个问题?主要原因是计算机硬件生产较好地解决了以下三个问题: 重用性 复杂性 可维护性 而传统的程序设计不能很好地解决这三个问题。第42页/共51页(1) 重用性 传统软件生产中缺乏大粒度、可重用的构件。基本处于手工作业阶段。(2) 复杂性 传统程序中数据与其操作是相分离的,开发大程序时,常因数据的一个的小小变动而导致意想不到的错误,甚至整个程序的崩溃。以致出现过所谓的“软件危机”。(3) 可维护性 传统程序中数据与操作相分离的结构不利于程序的维护。第43页/共51页 2.传统程序设计难以应付日益庞大的信息量和多样的信息类型 随着计算机科学与技术的飞速发展 应

21、用领域:已从数值计算扩展到了人类社会的各个方面; 处理的数据:已从简单数字和字符,发展为具有多种格式的多媒体数据,如文本、图形、图像、影像、声音等; 描述的问题:从单纯的计算问题到仿真复杂的自然现象和社会现象。 然而,面对这些庞大的信息量和多样的信息格式,传统程序设计方法是无法应付的。 第44页/共51页 3.传统的程序设计难以适应各种新环境 当前,并行处理、分布式、网络和多机系统等,已经或将是程序运行的主流方式和主流环境。 传统的程序设计技术很难适应这些新环境。 综上所述,传统的面向过程的结构化程序设计不能够满足计算机技术的迅猛发展的需要,软件开发迫切需要一种新的程序设计方法的支持。 第45

22、页/共51页 1.2.2 面向对象程序设计的主要优点 1.可提高程序的重用性 2.可控制程序的复杂性 3.可改善程序的可维护性 4.能够更好地支持大型程序设计 5.增强了计算机处理信息的范围 6.能很好地适应新的硬件环境第46页/共51页 1.3 面向对象的程序设计语言 1.3.1 面向对象程序设计语言的发展概况 1.3.2. 几种典型的面向对象程序设计语言 第47页/共51页 1.3.1 面向对象程序设计语言的发展概况 现在公认的第一个真正面向对象程序设计语言是Smalltalk。 它是由美国的Xerox公司于20世纪70年代初研制的。 该语言第一次使用了“面向对象”的概念和程序风格,开创了

23、面向对象程序设计的新范型。被誉为面向对象程序设计语言发展的里程碑。第48页/共51页 20世纪80年代以来,面向对象语言得到飞速发展 。 面向对象程序设计语言朝着两个方向发展: 一个方向是朝着纯面向对象语言发展,如继Smalltalk之后,又出现了Eiffel、SELF等语言; 另一个方向是朝着混合型面向对象语言发展,如将过程型与面向对象结合产生了诸如 C+、Objective-C、Object Pascal 等一大批语言。将函数型与面向对象结合产生了诸如 LOOPS、 Flavors、 CLOS等语言。 我们将要学习的 C+就是一种面向过程与面向对象相结合的语言。 第49页/共51页 1.3.2 几种典型的面向对象程序设计语言 (1) Smalltalk语言(20世纪70年代) Smalltalk语言被认为是最纯正最具代表性的面向对象的程序设计语言 (2) C+语言 (20世纪80年代) C+是在C语言的基础上,进行面向对象特征的扩充而成的语言 (3) Java语言( 20世纪90年代) Java语言,是一种面向对象的程序设计语言,是一种网络编程语言。 (4) C#语言 (21世纪2000年) C#语言从C/C+语言继承发展而来,是一个全新的、面向对象的、现代的编程语言。第50页/共51页感谢您的观看!第51页/共51页

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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