第1章面向对象程序设计概论(改)_第1页
第1章面向对象程序设计概论(改)_第2页
第1章面向对象程序设计概论(改)_第3页
第1章面向对象程序设计概论(改)_第4页
第1章面向对象程序设计概论(改)_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+语言程序设计语言程序设计2关于本课程关于本课程u重要性重要性: :在计算机专业的课程体系中是最重要的专在计算机专业的课程体系中是最重要的专业基础课业基础课u学时与学分学时与学分: :5656学时学时, ,讲授讲授3232学时学时, ,另有另有2424学时的上学时的上机实验机实验u学习内容学习内容: :面向对象的面向对象的程序设计方法和技巧(程序设计方法和技巧(1-81-8章)章)u课程目标课程目标: :训练基本的程序设计方法和技巧训练基本的程序设计方法和技巧; ;培养程培养程序员的基本素质序员的基本素质, ,学习的心得!学习的心得!u作业与实验作业与实验: :平时抽查平时抽查, ,最后全交

2、最后全交u考试方式考试方式: :笔试笔试,120,120分钟分钟3第第1 1章章 面向对象程序设计概论面向对象程序设计概论 1.1 1.1 程序设计方法程序设计方法 1.2 1.2 面向对象程序设计的基本概念面向对象程序设计的基本概念 1.3 1.3 面向对象程序设计语言面向对象程序设计语言 1.4 C+1.4 C+对面向对象程序设计方法的支持对面向对象程序设计方法的支持 1.5 C+1.5 C+程序的实现程序的实现 41.1 1.1 程序设计方法程序设计方法 1.1.1 1.1.1 结构化程序设计方法结构化程序设计方法 1.1.2 1.1.2 面向对象的程序设计方法面向对象的程序设计方法目前

3、有两种重要的程序设计方法:目前有两种重要的程序设计方法:51.1.1 结构化程序设计方法结构化程序设计方法 结构化程序设计的概念由瑞士计算机科结构化程序设计的概念由瑞士计算机科学家学家NiklausNiklaus提出来提出来-例如例如C C语言。语言。 结构化程序设计方法结构化程序设计方法-面向过程的程序设计面向过程的程序设计 1. 1. 强调程序结构的规范性,强调程序设计的强调程序结构的规范性,强调程序设计的 自顶自顶向下,逐步求精的演化过程。在这种方法中,待解向下,逐步求精的演化过程。在这种方法中,待解问题和程序设计语言中的过程紧密相联。问题和程序设计语言中的过程紧密相联。61.1.1结构

4、化结构化的程序设计方法的程序设计方法2、结构化程序设计方法结构化程序设计方法 重点放在如何实现细节过程方面,每个模块就重点放在如何实现细节过程方面,每个模块就是一个过程,由函数来实现。是一个过程,由函数来实现。 形式:主模块形式:主模块+ +若干个子模块若干个子模块(如:(如:main()+main()+子函数)。子函数)。 特点:特点:自顶向下,逐步求精自顶向下,逐步求精功能分解。功能分解。 缺点:效率低,是手工作坊式的编程。缺点:效率低,是手工作坊式的编程。7结构化程序设计举例:分数排序结构化程序设计举例:分数排序任务:任务:输入三个数,从大到小的顺序的输出。如果大于输入三个数,从大到小的

5、顺序的输出。如果大于等于等于8585,在该数后面输出,在该数后面输出AA,小于,小于8585且大于等于且大于等于70,70,则输出则输出BB,小于,小于7070且大于等于且大于等于6060输出输出CC,如果小,如果小于于60,60,则输出则输出DD。结构化设计思路:结构化设计思路:scanfscanf()()输入分数;输入分数;另建一个排序函数;另建一个排序函数;判断并输出等级函数;判断并输出等级函数;打印分数及等级的函数;打印分数及等级的函数;8void sortabc( ) float t; if (a b) t=a; a=b; b=t; if (b c) t=b; b=c; c=t; i

6、f (a bc*/float a,b,c ;void main() scanf(%f,%f,%f, &a,&b,&c););/* 输入输入 */ sortabc( ); /* 排序排序 */ putabc( ); /* 输出输出a,b,c三个数三个数 */ 结构很清楚,思考结构很清楚,思考- -复杂的程序这样设计行不行?复杂的程序这样设计行不行?char grade(float x) if (x=85) return(A); else if (x=70) return(B); else if (x=60) return (C); else return (D); void putabc( )

7、char g; g = grade(a); printf(%f : %c,a,g); g = grade(b); printf(%f : %c,b,g ); g = grade(c); printf(%f :%c,c,g); .2面向对象程序设计面向对象程序设计1 1、面向对象程序设计观点、面向对象程序设计观点 自然界是由各种各样的实体(对象)所组成自然界是由各种各样的实体(对象)所组成, ,每种对每种对象都有自己的内部状态和运动规律象都有自己的内部状态和运动规律, ,不同对象之间的不同对象之间的相互联系和相互作用就构成了各种不同的系统相互联系和相互作用就构成了各种不同的系统

8、, ,进而进而构成整个客观世界构成整个客观世界. .2 2、程序设计方法:使用面向对象的观点来描述模、程序设计方法:使用面向对象的观点来描述模仿并处理现实问题。仿并处理现实问题。 程序程序= =对象对象+ +消息消息3 3、目的:实现软件设计的产业化。、目的:实现软件设计的产业化。.2面向对象面向对象程序设计程序设计4 4、基本概念、基本概念 对象对象 客观存在的实体称为对象客观存在的实体称为对象 属性属性 描述对象的特征的数据描述对象的特征的数据 行为行为 对象自身的行为,对现实世界某些信息的应对象自身的行为,对现实世界某些信息的应 对象之间通过传递消息相互影响对象之间通

9、过传递消息相互影响属性行为行为对象由属性和对象由属性和行为构成行为构成思考思考: :同一个程序采用不同的程序设计方法有什么同一个程序采用不同的程序设计方法有什么不同不同? ?111.1.2 面向对象程序设计方法【例【例1.11.1】用】用C+C+语言描述,用结构化程序设计方法计算语言描述,用结构化程序设计方法计算矩形的面积。矩形的面积。#include using namespace std;int main()float length,width,area; /定义变量长、宽、面积定义变量长、宽、面积 coutplease input length and widthlengthwidth;

10、 /输入长、宽值输入长、宽值 area=length*width; /计算面积计算面积 coutareaendl; /输出面积输出面积 return 0;121.1.2 面向对象程序设计方法【例【例1.21.2】用】用C+C+语言描述,用面向对象程序设计语言描述,用面向对象程序设计方法计算矩形的面积。方法计算矩形的面积。class RectangleAreapublic: void SetData(float L,float W); /输入长、宽值输入长、宽值 float CompueterArea(); /计算面积计算面积 void OutputArea(); /输出面积输出面积 priva

11、te: float length,width,area; /定义长、宽、面积定义长、宽、面积;void RectangleArea:SetData(float L,float W).float RectangleArea:CompueterArea() void RectangleArea:OutputArea()int main() RectangleArea Rectangl; /声明对象声明对象 Rectangl.SetData(8,9); Rectangl.CompueterArea(); Rectangl.OutputArea(); return 0;在在C+C+中,数据定义的功中,

12、数据定义的功能被扩展了,在其中不能被扩展了,在其中不仅可以定义数据,还可仅可以定义数据,还可以定义函数。数据与函以定义函数。数据与函数构成了一个整体。其数构成了一个整体。其中的中的privateprivate和和publicpublic是是访问权限。访问权限。131.1.2 面向对象面向对象程序设计程序设计 将客观事物的属性和行为抽象成数据和操作数据的函数,将客观事物的属性和行为抽象成数据和操作数据的函数,并把它们组合成一个不可分割的整体(即对象)。从客观并把它们组合成一个不可分割的整体(即对象)。从客观世界中抽象出一个个对象,对象之间能够传递消息世界中抽象出一个个对象,对象之间能够传递消息

13、数据数据成员函数成员函数成员函数成员函数数据成员函数成员函数成员函数成员函数数据成员函数成员函数成员函数成员函数对象对象对象对象对象对象消息消息消息消息消息消息5.5.面向对象模型面向对象模型类:是具有相类:是具有相同功能的对象同功能的对象的集合,用它的集合,用它来创建对象来创建对象141. 1.面向对象的程序设计基本概念面向对象的程序设计基本概念 本节主要介绍类与对象的基本概念,以及面向本节主要介绍类与对象的基本概念,以及面向对象程序设计的主要特征对象程序设计的主要特征 1.2.1 1.2.1 类与对象类与对象 1.2.2 1.2.2 封装封装 1.2.3 1.2.3 消息消息 1.2.4

14、1.2.4 继承继承 1.2.5 1.2.5 多态多态151.2.1 类与对象类与对象1. 1. 对象的基本概念对象的基本概念 对象对象: : 用来描述客观事物的一个实体,它是构成系统的一用来描述客观事物的一个实体,它是构成系统的一个基本单元。一个对象具有一组属性和行为。个基本单元。一个对象具有一组属性和行为。 实体对象实体对象 : 如如一台计算机一台计算机 抽象对象抽象对象 : 如如一项计划一项计划 对象构成要素对象构成要素: : 1.1.对象标识符:是对象的名称,用来区别与其他对象。对象标识符:是对象的名称,用来区别与其他对象。 2.2.属性属性: : 是用来描述对象静态特征的一个数据项。

15、是用来描述对象静态特征的一个数据项。 3.3.行为行为: : 是用来描述对象动态特征和行为的一个操作。是用来描述对象动态特征和行为的一个操作。 16 对象示例对象示例1 1:一个:一个“学生学生”对象的例子对象的例子 对象名对象名:学生:学生 对象的属性对象的属性: 学号:学号:123456123456 姓名:令狐冲姓名:令狐冲 年龄:年龄:1818 专业:信管专业:信管 行为行为 修改学号、姓名、专业、年龄等等修改学号、姓名、专业、年龄等等1.2.1 类与对象类与对象172. 2. 类的基本概念类的基本概念 类类 :是具有相同属性和行为的一组对象的是具有相同属性和行为的一组对象的集合集合,

16、,它为属于该类的全部对象提供统一的它为属于该类的全部对象提供统一的的抽象描述的抽象描述 类和对象的关系类和对象的关系:类:类 对象对象 抽象抽象 实例实例 类类 对象举例对象举例 学生学生 学生王强学生王强 课程课程 C+ C+程序设计程序设计 类型类型 变量变量, , 如如 C C 语言中的语言中的 intint 和和 intint x; x; 类的实例类的实例用类定义的类变量,即对象。用类定义的类变量,即对象。1.2.1 类与对象类与对象181.2.1 类与对象类与对象3 3、类的描述类的描述 类的描述类的描述不同的不同的OOPOOP语言用不同的描述形式。语言用不同的描述形式。在在C+C+

17、中用关键字中用关键字classclass来定义描述一个类。来定义描述一个类。class classnamepublic:/public members/friend function prototypesprivate:/private members; 191.2.2 1.2.2 抽象与抽象与封装封装1 1、抽象、抽象 抽象(抽象(abstractabstract)是指有意忽略问题的某些细)是指有意忽略问题的某些细节和与当前目标无关的方面,以便把问题的本节和与当前目标无关的方面,以便把问题的本质表达得更清楚。质表达得更清楚。 案例:案例:VCDVCD机器的抽象机器的抽象201.2.1 抽象-

18、程序举例数据抽象:数据抽象:float length, width, Area; float length, width, Area; 行为抽象:行为抽象:SetData (float L,floatSetData (float L,float W); W);CompueteAreaCompueteArea ( ); ( );OutputAreaOutputArea( );( ); 程序的抽象:分析程序清单对矩形进行抽象分析程序的抽象:分析程序清单对矩形进行抽象分析如果不是计算矩形的面积,如果不是计算矩形的面积,关注的特征可能是颜色、关注的特征可能是颜色、大小等。由此可见,对于大小等。由此可见

19、,对于同一个研究对象,由于所同一个研究对象,由于所研究问题的侧重点不同,研究问题的侧重点不同,就可能产生不同的抽象结就可能产生不同的抽象结果。果。 返回本节返回本节211.2.2 抽象与抽象与封装封装2 2、封装性、封装性 封装封装encapsulationencapsulation将数据和与这个数据有将数据和与这个数据有关的操作集合在一起关的操作集合在一起, ,形成一个实体形成一个实体对象,且尽对象,且尽可能隐藏对象的内部细节可能隐藏对象的内部细节 特点如下特点如下: :具有一个清楚的边界具有一个清楚的边界, ,对象的所有私有数据、成对象的所有私有数据、成员函数都被固定在这个边界内。员函数都

20、被固定在这个边界内。对象内部的实现代码受到封装的保护,其它对对象内部的实现代码受到封装的保护,其它对象不能直接修改本对象所拥有的数据和代码。象不能直接修改本对象所拥有的数据和代码。封装的单位是对象。封装的单位是对象。223、封装的形式、封装的形式class classnamepublic:/public members/friend functionprivate:/private members;Public 成员成员1Public 成员成员2Public 成员成员nPrivate一个一个Class定义了一种抽定义了一种抽象的数据类型象的数据类型,用户只能用户只能访问访问Public成员成员

21、,不能直接不能直接访问访问Private成员成员直接访问直接访问private是是禁止的禁止的边边界界231.2.2 抽象与抽象与封装封装4 4、抽象与封装形成了程序接口与实现的分离、抽象与封装形成了程序接口与实现的分离241.2.3 消息 消息:是面向对象程序设计用来描述对象之消息:是面向对象程序设计用来描述对象之间通信的机制。间通信的机制。一个消息就是对一个对象要求实一个消息就是对一个对象要求实施某种操作的一个请求。施某种操作的一个请求。 前面所提到的前面所提到的“函数接口函数接口”规定了能向某一规定了能向某一对象发出什么请求。也就是说,类对每个可能的对象发出什么请求。也就是说,类对每个可

22、能的请求都定义了一个相关的函数,当向对象发出请请求都定义了一个相关的函数,当向对象发出请求时,就调用这个函数。求时,就调用这个函数。251.2.3 消息-举例例如,外界与例如,外界与RectangleAreaRectangleArea类进行通信,可以通类进行通信,可以通过下面的过下面的C+C+语句来描述:语句来描述: /创建一个创建一个RectangleRectangle对象对象 RectangleAreaRectangleArea Rectangle Rectangle; /通过对象调用通过对象调用CompueterAreaCompueterArea()()函数函数 Rectangle.Co

23、mpueterAreaRectangle.CompueterArea();();返回本节返回本节这个过程通常概括为向对象这个过程通常概括为向对象“发送消息发送消息”( (提出请求提出请求) ),对象根据这个消息决定做什么对象根据这个消息决定做什么( (执行函数代码执行函数代码) )。26 1 1、继承的基本概念、继承的基本概念1.2.4 1.2.4 继承继承继承意味着继承意味着“自动地拥有自动地拥有”,即,即特殊特殊类中不必重新定义已在类中不必重新定义已在一般类中定义过的属性和行为,而是自动地、拥有其一般类一般类中定义过的属性和行为,而是自动地、拥有其一般类的属性与行为。的属性与行为。 在客观

24、世界中,存在着一般和特殊的关系,特殊具有一在客观世界中,存在着一般和特殊的关系,特殊具有一般的特性,同时又有自己的新特性。般的特性,同时又有自己的新特性。 运用抽象的原则就是舍弃对象的特殊性,提取其一般性,运用抽象的原则就是舍弃对象的特殊性,提取其一般性,从而得到适合一个对象集的类。如果在这个类的基础上,从而得到适合一个对象集的类。如果在这个类的基础上,再抽象出自己的新特征,形成一种层次结构,即继承结构。再抽象出自己的新特征,形成一种层次结构,即继承结构。272 2、继承的层次结构、继承的层次结构 思考:和具有哪些成员?思考:和具有哪些成员?ABECD a: int getA( ): int

25、c: int getC( ): int setB( ): void b: int getB( ): int setB( ): voidinheritance(“is-a” relation) e: int getE( ): intsetB( ): void d: intgetD( ): int1.2.4 继承继承283 3、继承的优势、继承的优势 能清晰体现相关类间的层次结构关系。能清晰体现相关类间的层次结构关系。 有效地址提高了程序的可重用性,减小了程序代码的有效地址提高了程序的可重用性,减小了程序代码的冗余度。冗余度。 增强了程序的一致性,减少了程序模块间的接口和界增强了程序的一致性,减少

26、了程序模块间的接口和界面,使程序更易维护。面,使程序更易维护。 继承具有传递性继承具有传递性 如果类如果类C C继承类继承类B B,类,类B B继承类继承类A A,则类,则类C C继承继承类类A A “站在巨人的肩头上站在巨人的肩头上”。用户在开发新系统时不必从。用户在开发新系统时不必从零开始,可以继承原有相似功能或者从类库中选取需零开始,可以继承原有相似功能或者从类库中选取需要的类,再派生新类。要的类,再派生新类。1.2.4 继承的优势继承的优势291.2.5 多态 面向对象的通信机制是消息,一个消息可以面向对象的通信机制是消息,一个消息可以产生不同的响应效果,这种现象叫做多态。即一产生不同

27、的响应效果,这种现象叫做多态。即一个名字,多种语义;或相同界面,多种实现。个名字,多种语义;或相同界面,多种实现。 例如,如果发送消息例如,如果发送消息“双击双击”,不同的对象,不同的对象就会有不同的响应。比如,就会有不同的响应。比如,“文件夹文件夹” ” 对象收对象收到双击消息后,会打开该文件夹,而到双击消息后,会打开该文件夹,而“音乐文件音乐文件”对象收到双击消息后,会播放该音乐。显然,打对象收到双击消息后,会播放该音乐。显然,打开文件夹和播放音乐需要不同的函数体。但是,开文件夹和播放音乐需要不同的函数体。但是,它们可以被同一条消息它们可以被同一条消息“双击双击”所引发。这就是所引发。这就

28、是多态。多态。302 2、多态的一个案例、多态的一个案例 图中同名函数图中同名函数area( )area( )作用在作用在CircleCircle、TriangleTriangle等不等不同类上时,将执行不同的操作,这就是多态。同类上时,将执行不同的操作,这就是多态。.5 多态多态311.3 面向对象程序设计语言 1.3.1 1.3.1 混合型的面向对象程序设计语言混合型的面向对象程序设计语言C+C+ 1.3.2 1.3.2 纯面向对象程序设计语言纯面向对象程序设计语言JavaJava返回首页返回首页321.1. C+C+与面向对象与面向对象程序设计程序设计1、面向对象程序设计

29、语言的基本情况、面向对象程序设计语言的基本情况 最早最成熟的领域最早最成熟的领域 萌芽于萌芽于60年代(年代(Simula),成熟于),成熟于80年代年代 90年代年代,纯面向对象语言纯面向对象语言, Java 常见面向对象的语言常见面向对象的语言 Java:纯面向对象的语言:纯面向对象的语言 C#:具有:具有VB和和+的特征的特征 C+,Object Pascal,Efficl 其它常用的具有面向对象特征的语言其它常用的具有面向对象特征的语言 Borland Delphi、PowerBuilder、Visual FoxPro 331.1. C+C+与面向对象与面向对象程序设计程序设计2、C+简史简史 C+起源起源 20世纪世纪80年代,年代,AT&T Bell实验室实验室C+发展发展 B C 带类的带类的C C+ 标准标准C+ 托管托管C+ C+常用领域常用领域 系统软件系统软件 设备驱动程序设备驱动程序 图形学图形学 用户界面用户界面 341.1. C+C+与面向对象与面向对象程序设计程序设计3 3、C+C+特征特征 兼容语言,支持面向过程的程序设计兼容语言,支持面向过程的程序设计 具有高效性、灵活性、可移植性具有高

温馨提示

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

评论

0/150

提交评论