面向对象程序设计之类和对象精选PPT课件.ppt
《面向对象程序设计之类和对象精选PPT课件.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计之类和对象精选PPT课件.ppt(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、关于面向对象程序关于面向对象程序设计之类和对象设计之类和对象第1页,此课件共56页哦C+2-2 2.1 面向对象程序设计方法概述面向对象程序设计方法概述l什么是面向对象的程序设计什么是面向对象的程序设计?面向对象的程序设计面向对象的程序设计(Object-Oriented Programming)和传统的结构化程序设计的思路完全不同。和传统的结构化程序设计的思路完全不同。面向对象的程序设计和人们面向对象的程序设计和人们日常生活解决问题日常生活解决问题的思路是相似的。的思路是相似的。比如,我们生产汽车时,不是顺序制造发动机,在设计制造底盘、车身、比如,我们生产汽车时,不是顺序制造发动机,在设计制
2、造底盘、车身、轮子。而是分别设计制造发动机、底盘、车身和轮子,最后组装在一轮子。而是分别设计制造发动机、底盘、车身和轮子,最后组装在一起。组装时,各部件之间有联系,以便协调工作。例如,司机踩油门起。组装时,各部件之间有联系,以便协调工作。例如,司机踩油门,就能调节油路,控制发动机的转速,就能驱动车轮。,就能调节油路,控制发动机的转速,就能驱动车轮。第2页,此课件共56页哦C+2-3 2.1 面向对象程序设计方法概述面向对象程序设计方法概述程序设计者的程序设计者的任务有两个任务有两个:一是设计所需要的类和对象,即确定那些数据和操作:一是设计所需要的类和对象,即确定那些数据和操作封装封装在一起;在
3、一起;(类设计者、核心模块产品提供商类设计者、核心模块产品提供商)二是考虑怎样向有关对象发送二是考虑怎样向有关对象发送消息消息,以启动相关对象的操作。,以启动相关对象的操作。(主程序设计者,外包程序,面向用户的公司)(主程序设计者,外包程序,面向用户的公司)编程者如同一个总调度,不断地向各个对象发出命令,让这些对象活动起编程者如同一个总调度,不断地向各个对象发出命令,让这些对象活动起来,完成指定的工作。来,完成指定的工作。这就是面向对象的程序设计的基本思路。这就是面向对象的程序设计的基本思路。第3页,此课件共56页哦C+2-4 2.1 面向对象程序设计方法概述面向对象程序设计方法概述l什么是对
4、象什么是对象(object)?一个对象由一组一个对象由一组“属性属性”和一组和一组“行为行为”构成。并根据外界给它的消息进构成。并根据外界给它的消息进行相应的操作。系统中多个对象通过一定的渠道相互联系。行相应的操作。系统中多个对象通过一定的渠道相互联系。任何任何事物事物都可以看成一个对象。可以是自然物体,也可以是逻辑结构。都可以看成一个对象。可以是自然物体,也可以是逻辑结构。例:例:一个班级作为对象一个班级作为对象一个班级作为对象,有两个要素:一是班级的静态特征,如班级所属的专业一个班级作为对象,有两个要素:一是班级的静态特征,如班级所属的专业,学生人数、班主任姓名等,这种静态特征称为,学生人
5、数、班主任姓名等,这种静态特征称为“属性属性”;另一个是班级;另一个是班级的动态特征,如上课,体育比赛,开会等,称为的动态特征,如上课,体育比赛,开会等,称为“行为行为”。外界向班级发。外界向班级发一个信息(如上课铃声,广播通知),我们称之为一个信息(如上课铃声,广播通知),我们称之为“消息消息”,班级就会发,班级就会发生一个操作(要么上课,要么开会)生一个操作(要么上课,要么开会)第4页,此课件共56页哦C+2-5 2.1 面向对象程序设计方法概述面向对象程序设计方法概述l什么是什么是C+对象?对象?C+中,每个对象都由若干中,每个对象都由若干数据(属性)数据(属性)和若干和若干函数(操作行
6、为)函数(操作行为)组成。数据就是对象的组成。数据就是对象的“属性属性”,函数就是用来对数据进行的,函数就是用来对数据进行的“操作操作”,以便实现某种功能。这种操作就是对象的以便实现某种功能。这种操作就是对象的“行为行为”,也叫,也叫“方法方法”。我们点击一下鼠标,按动键盘的一个按钮,就是给某个对象一个消息我们点击一下鼠标,按动键盘的一个按钮,就是给某个对象一个消息,系统回调用该对象中的函数进行操作。,系统回调用该对象中的函数进行操作。比如长方形对象,其长和宽就是它的属性,调用该对象的一些函数,比如长方形对象,其长和宽就是它的属性,调用该对象的一些函数,即向该对象传送一些消息,可以用来对其长、
7、宽值进行加工计算,以即向该对象传送一些消息,可以用来对其长、宽值进行加工计算,以实现求出面积、周长等功能。实现求出面积、周长等功能。第5页,此课件共56页哦C+2-6 2.1 面向对象程序设计方法概述面向对象程序设计方法概述l什么是对象封装什么是对象封装(encapsulation)?就是把对象的不想让外界知道的属性和功能屏蔽起来,让外界看不见。封就是把对象的不想让外界知道的属性和功能屏蔽起来,让外界看不见。封装有两个含义,装有两个含义,一是将有关的数据和操作函数封装成一个基本单位,即对象内。各对象之一是将有关的数据和操作函数封装成一个基本单位,即对象内。各对象之间间相互独立,互不干扰相互独立
8、,互不干扰;二是将对象中的部分属性或功能二是将对象中的部分属性或功能对外隐蔽对外隐蔽,只留少数接口向外公布,以接,只留少数接口向外公布,以接收外界信息。收外界信息。对象封装的好处在于,降低了人们操作对象的复杂程度。使用对象的人,不对象封装的好处在于,降低了人们操作对象的复杂程度。使用对象的人,不必知道对象内部的实现细节,只需要了解外部功能就可以自如地操作该对必知道对象内部的实现细节,只需要了解外部功能就可以自如地操作该对象。象。对象的行为由类的内部数据结构和相关的操作确定;外部行为通过操作接对象的行为由类的内部数据结构和相关的操作确定;外部行为通过操作接口实现。人们关心的就是操作接口(函数名)
9、所能提供的服务。口实现。人们关心的就是操作接口(函数名)所能提供的服务。第6页,此课件共56页哦C+2-7 2.1 面向对象程序设计方法概述面向对象程序设计方法概述l什么是抽象什么是抽象(abstraction)?将具有相同特性的事物归纳、集中成一个统一类型,称为将具有相同特性的事物归纳、集中成一个统一类型,称为抽象抽象。比如,把张三,李四,王五归纳为一类,我们称之为比如,把张三,李四,王五归纳为一类,我们称之为“人人”。抽象的作用,是表示同类事物的抽象的作用,是表示同类事物的本质本质。C和和C+中,中,数据类型数据类型就是对一批具体数据的抽象,整形数据就是所有整数就是对一批具体数据的抽象,整
10、形数据就是所有整数的抽象。的抽象。“类类”是是“对象对象”的抽象,的抽象,“对象对象”则是类的则是类的“特例特例”,或或“具体表现形式具体表现形式”。第7页,此课件共56页哦C+2-8 2.1 面向对象程序设计方法概述面向对象程序设计方法概述l什么是继承什么是继承(inherit)?B类在类在A类的基础上增加了少量内容。我们显然不必重新设计一个新类类的基础上增加了少量内容。我们显然不必重新设计一个新类B,只需要把,只需要把A类拿过来,在此基础上添加新内容就可以了。这就是面向对象程序设计的类拿过来,在此基础上添加新内容就可以了。这就是面向对象程序设计的继承机制继承机制。C+提供继承机制,大大节省
11、了编程工作量,这就是所谓提供继承机制,大大节省了编程工作量,这就是所谓“软件重用软件重用(software reusability)”的思想。对于大型软件的开发具有重要意义。的思想。对于大型软件的开发具有重要意义。第8页,此课件共56页哦C+2-9 2.1 面向对象程序设计方法概述面向对象程序设计方法概述l什么是多态性什么是多态性(polymorphism)?如果有几个如果有几个相似而不同相似而不同的对象,人们往往要求在向它们发出的对象,人们往往要求在向它们发出同一个消息同一个消息时,各自作出时,各自作出不同的操作不同的操作,这种情况就是,这种情况就是“多态现象多态现象”。C+中,所谓多态性是
12、指,由中,所谓多态性是指,由继承而产生继承而产生的相关的不同的类,其对象对同一消息会作出不同的响应。的相关的不同的类,其对象对同一消息会作出不同的响应。显然,多态性能增加程序的灵活性,它是面向对象程序设计的重要特显然,多态性能增加程序的灵活性,它是面向对象程序设计的重要特征。征。第9页,此课件共56页哦C+2-10 2.1 面向对象程序设计方法概述面向对象程序设计方法概述l类与对象的作用类与对象的作用C+全面支持传统的面向过程的程序设计(即结构化编程),也支持基于对全面支持传统的面向过程的程序设计(即结构化编程),也支持基于对象和面向对象的程序设计。象和面向对象的程序设计。所谓所谓基于基于对象
13、,是指程序是以类和对象为基础,程序的操作是围绕对象进行的。对象,是指程序是以类和对象为基础,程序的操作是围绕对象进行的。所谓所谓面向面向对象,是指,在基于对象的基础上,利用了继承机制和多态性。对象,是指,在基于对象的基础上,利用了继承机制和多态性。l面向对象的程序设计特点面向对象的程序设计特点:类具有对数据的抽象性、封装性、继承性、多态性。类具有对数据的抽象性、封装性、继承性、多态性。第10页,此课件共56页哦C+2-11 2.2 类的声明和对象的定义类的声明和对象的定义l类和对象的关系类和对象的关系C+中,中,对象的类型称为类对象的类型称为类(class)。类代表了某一批对象的共同特性。前面
14、已经谈到,。类代表了某一批对象的共同特性。前面已经谈到,类是对象的抽象,类是对象的抽象,而对象是类的具体实例而对象是类的具体实例(instance)。就象结构体类型和结构体变量一样。就象结构体类型和结构体变量一样。C+中,我们先中,我们先声明一个类的类型,然后再定义该类的若干对象。对象就是类这种类型声明一个类的类型,然后再定义该类的若干对象。对象就是类这种类型的一个变量。的一个变量。类是抽象的,不占内存,而对象是具体的,要占用内存空间类是抽象的,不占内存,而对象是具体的,要占用内存空间。第11页,此课件共56页哦C+2-12 2.2 类的声明和对象的定义类的声明和对象的定义l类的声明类的声明类
15、的声明方法和结构体的声明方法一样,只是将关键字类的声明方法和结构体的声明方法一样,只是将关键字struct 换成换成class:class 类名类名 private:私有数据成员和私有私有数据成员和私有成员函数成员函数;public:公共数据成员和公共公共数据成员和公共成员函数成员函数;/成员访问限定区域先后次序任意,但一种最好只出现一次成员访问限定区域先后次序任意,但一种最好只出现一次,类的成员包含对数据操作的函数,体现了数据和操作的封装类的成员包含对数据操作的函数,体现了数据和操作的封装类的成员不能所有都私有,一般隐藏数据,把成员函数作为对外接口类的成员不能所有都私有,一般隐藏数据,把成员
16、函数作为对外接口成员访问限定符(member access specifier)成员访问限定符(member access specifier)别忘了必须用分号结束!第12页,此课件共56页哦C+2-13 2.2 类的声明和对象的定义类的声明和对象的定义l类的声明示例类的声明示例类头:类头:class rectangle 类体:类体:private:int length,width,area,perimeter;public:void PutArea()area=length*width;void PutPerimeter()perimeter=(length+width)*2;void di
17、splay()cout “length=“length endl;cout “width=“width endl;cout “area=“area endl;cout “perimeter=“perimeter endl;在类的外面不能访问私有成员,只能通过公有成员函数间接访问在类的外面可以访问公有成员不指定公有私有,则默认为私有不指定公有私有,则默认为私有一般先出现一般先出现private,后出现,后出现public第13页,此课件共56页哦C+2-14 类的声明类的声明l还有一种还有一种protected类型,不能被类外访问,但可以被派生类访类型,不能被类外访问,但可以被派生类访问问l一般
18、使用厂商提供的类库一般使用厂商提供的类库l也可以自定义类库,便于单位部门使用也可以自定义类库,便于单位部门使用第14页,此课件共56页哦C+2-15 2.2 类的声明和对象的定义类的声明和对象的定义l对象的定义对象的定义 声明了类以后,就可以定义该类的对象了。给对象分配了存储空间。声明了类以后,就可以定义该类的对象了。给对象分配了存储空间。其格式为:其格式为:class 类名类名 对象名对象名1,对象名,对象名2,/方括号表示可选项方括号表示可选项l对象定义示例对象定义示例 如前例中,声明了一个名为如前例中,声明了一个名为 rectangle 的类,我们可以定义该类的若干对象:的类,我们可以定
19、义该类的若干对象:class rectangle r1,r2,r3;rectangle r1,r2,r3;第15页,此课件共56页哦C+2-16 2.2 类的声明和对象的定义类的声明和对象的定义l对象定义对象定义class rectangle private:int length,width,area,perimeter;public:void PutArea()area=length*width;void PutPerimeter()perimeter=(length+width)*2;void display()cout “length=“length endl;cout “width=“
20、width endl;cout “area=“area endl;cout “perimeter=“perimeter endl;r1,r2;l不出现类名,直接定义对象,不提倡不出现类名,直接定义对象,不提倡第16页,此课件共56页哦C+2-17 2.2 类的声明和对象的定义类的声明和对象的定义l类和结构体类型异同类和结构体类型异同 struct/class rectangle public/private:int length,width,area,perimeter;void PutArea()area=length*width;void PutPerimeter()perimeter=(
21、length+width)*2;void display()cout “length=“length endl;cout “width=“width endl;cout “area=“area endl;cout “perimeter=“perimeter endl;r1,r2;l建议使用建议使用CLASS第17页,此课件共56页哦C+2-18 2.3 类的成员函数类的成员函数l成员函数的性质成员函数的性质类的成员函数也叫类函数,用法和一般函数基本上一样。区别在于它类的成员函数也叫类函数,用法和一般函数基本上一样。区别在于它只是属于一个类的成员而出现在类中。它可以被指定为类的私有成员只是属于一
22、个类的成员而出现在类中。它可以被指定为类的私有成员(private)、公有成员、公有成员(public)或保护成员或保护成员(protected)。使用类函数时,要注意它的使用权限,如果是私有成员,只能被使用类函数时,要注意它的使用权限,如果是私有成员,只能被本类的其他成员函数调用,不能被类外调用(本类的其他成员函数调用,不能被类外调用(工具函数工具函数)。成员函数可以调用本类所有数据成员和成员函数,也可以引用)。成员函数可以调用本类所有数据成员和成员函数,也可以引用在本作用域中的有效数据。在本作用域中的有效数据。通常,我们把类的数据成员定义成通常,我们把类的数据成员定义成私有私有成员,对外屏
23、蔽,而把成员函数定义成成员,对外屏蔽,而把成员函数定义成公有公有成员,他可以调用私有成员和其它成员。成员,他可以调用私有成员和其它成员。一个类若没有成员函数,就退化成一个类若没有成员函数,就退化成C语言的结构体,而失去意义。语言的结构体,而失去意义。第18页,此课件共56页哦C+2-19 2.3 类的成员函数类的成员函数l在类外定义成员函数在类外定义成员函数成员函数一般在类体中定义,如前面所讲。也可以在类外定义,但要指明成员函数一般在类体中定义,如前面所讲。也可以在类外定义,但要指明是属于哪个类的成员函数,用是属于哪个类的成员函数,用“类名类名:函数名函数名”来指定。例如:来指定。例如:cla
24、ss rectangle private:int length,width,;int area,perimeter;public:void PutArea();void PutPerimeter();void display();void rectangle:PutArea()area=length*width;void rectangle:PutPerimeter()perimeter=(length+width)*2;void rectangle:display()cout “length=“length endl;cout “width=“width endl;cout “area=“a
25、rea endl;cout “perimeter=“perimeter;rectangle r1,r2,r3;第19页,此课件共56页哦C+2-20“:”成为域限定符。如果在域限定符前没有类名,或函数名前既没成为域限定符。如果在域限定符前没有类名,或函数名前既没有类名,又没有域限定符:有类名,又没有域限定符::display()或或 display()则表示该函数不属于任何类,它不是成员函数,而是全局函数,则表示该函数不属于任何类,它不是成员函数,而是全局函数,即普通函数。即普通函数。第20页,此课件共56页哦C+2-21 一般来说,类定义包括两个部分:一般来说,类定义包括两个部分:1、声明部
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 之类 精选 PPT 课件
限制150内