《面向对象程序设计》课件第3章 类和对象.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《面向对象程序设计》课件第3章 类和对象.pptx》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计 面向对象程序设计课件第3章 类和对象 面向 对象 程序设计 课件
- 资源描述:
-
1、 3.1 3.1 类类描述了一组具有相同属性和行为特征的对象。在系统实描述了一组具有相同属性和行为特征的对象。在系统实现中,类是一种现中,类是一种共享共享机制,它提供了本类对象共享的操作机制,它提供了本类对象共享的操作实现。类是代码复用的基本单位,它可以实现抽象数据类实现。类是代码复用的基本单位,它可以实现抽象数据类型,创建对象,实现属性和行为的封装型,创建对象,实现属性和行为的封装。v类是一种复杂的数据类型,它是将不同类型的数据和与这类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。些数据相关的操作封装在一起的集合体。数据结数据结构构操作1操作2操作3操作
2、4操作5数据数据结构结构 3.1 3.1 类类v对象是类的实例对象是类的实例。类是对一组具有相同特征的对象的抽象类是对一组具有相同特征的对象的抽象描述,所有这些对象都是这个类的实例。描述,所有这些对象都是这个类的实例。v在程序设计语言中,在程序设计语言中,类是一种数据类型,而对象是该类型类是一种数据类型,而对象是该类型的变量的变量,变量名即是某个具体对象的标识。,变量名即是某个具体对象的标识。v类提供了完整的解决特定问题的能力,因为类描述了类提供了完整的解决特定问题的能力,因为类描述了数据数据结构结构(对象属性)、(对象属性)、算法算法(对象行为)和(对象行为)和外部接口外部接口(消息(消息协
3、议)。协议)。v在在C+C+语言中,一个类的定义包含语言中,一个类的定义包含数据成员和成员函数数据成员和成员函数两部两部分内容。数据成员定义该类对象的属性,不同对象的属性分内容。数据成员定义该类对象的属性,不同对象的属性值可以不同;成员函数定义了该类对象的操作即行为。值可以不同;成员函数定义了该类对象的操作即行为。v类具有对数据的类具有对数据的抽象性抽象性、隐藏性隐藏性和和封装性封装性。v类对象的行为由类的内部数据结构和相关的操作确定;类对象的行为由类的内部数据结构和相关的操作确定;外部行为通过操作外部行为通过操作接口接口实现。人们关心的就是操作接口所实现。人们关心的就是操作接口所能提供的服务
4、。能提供的服务。例例 3.1 3.1 类类The person watching TV does not need to know the TV sets structure and how it works inside.But he needs to control the TV set.TV needs to provide an interface.Internal State对象及其信息封装的例子对象及其信息封装的例子:TV开请求开请求变更频道变更频道调节声音调节声音Turn OnTurn OffChange ChannelAdjust VolumeOthers.被封装的行为和状态被
5、封装的行为和状态关请求关请求class 类名类名private:/私有数据成员和成员函数私有数据成员和成员函数public:/公有数据成员和成员函数公有数据成员和成员函数protected:/保护的数据成员和成员函数保护的数据成员和成员函数;3.1.1 3.1.1 类的定义类的定义 (1)(1)class 是关键字,类名是一个标识符,必须符合是关键字,类名是一个标识符,必须符合C+C+标标识符的命名规则。识符的命名规则。内是类的定义体部分,说明该类的成员,内是类的定义体部分,说明该类的成员,类的成员包括数据成员和成员函数。类的成员包括数据成员和成员函数。(2)(2)类成员的三种访问控制权限类成
6、员的三种访问控制权限:类有三种访问控制权限,分别是类有三种访问控制权限,分别是private(私有成员)、(私有成员)、public(公有成员)、(公有成员)、protected(保护成员),在每一种访(保护成员),在每一种访问控制权限下,均可以定义数据成员和成员函数。问控制权限下,均可以定义数据成员和成员函数。:私有成员是在类中被隐藏的部分,它往往是用来描述该私有成员是在类中被隐藏的部分,它往往是用来描述该类对象属性的数据成员,私有成员只能由本类的成员函数或某些特类对象属性的数据成员,私有成员只能由本类的成员函数或某些特殊说明的函数(如第殊说明的函数(如第4 4章讲到的友员函数)访问,而类的
7、外部根本就章讲到的友员函数)访问,而类的外部根本就无法访问。实现了无法访问。实现了的有效控制,有利于的有效控制,有利于,使内部使内部数据不能被任意的访问和修改,使数据得到数据不能被任意的访问和修改,使数据得到,也不会对该也不会对该类以外的其余部分造成影响,使模块之间的相互作用被降低到最小类以外的其余部分造成影响,使模块之间的相互作用被降低到最小。(1)(1)class 是关键字,类名是一个标识符,必须符合是关键字,类名是一个标识符,必须符合C+C+标标识符的命名规则。识符的命名规则。内是类的定义体部分,说明该类的成员,内是类的定义体部分,说明该类的成员,类的成员包括数据成员和成员函数。类的成员
8、包括数据成员和成员函数。(2)(2)类成员的三种访问控制权限类成员的三种访问控制权限:类有三种访问控制权限,分别是类有三种访问控制权限,分别是private(私有成员)、(私有成员)、public(公有成员)、(公有成员)、protected(保护成员),在每一种访(保护成员),在每一种访问控制权限下,均可以定义数据成员和成员函数。问控制权限下,均可以定义数据成员和成员函数。publicprivatepublic (1)(1)class 是关键字,类名是一个标识符,必须符合是关键字,类名是一个标识符,必须符合C+C+标标识符的命名规则。识符的命名规则。内是类的定义体部分,说明该类的成员,内是类
9、的定义体部分,说明该类的成员,类的成员包括数据成员和成员函数。类的成员包括数据成员和成员函数。(2)(2)类成员的三种访问控制权限类成员的三种访问控制权限:类有三种访问控制权限,分别是类有三种访问控制权限,分别是private(私有成员)、(私有成员)、public(公有成员)、(公有成员)、protected(保护成员),在每一种访(保护成员),在每一种访问控制权限下,均可以定义数据成员和成员函数。问控制权限下,均可以定义数据成员和成员函数。protectedprivatepublicdata1data2function1data3data4function2function3functio
10、n4Member visibilitystrangerfriend (3)(3)由于类的公有成员提供了一个类的接口,所以一般情况下,由于类的公有成员提供了一个类的接口,所以一般情况下,先定义公有成员,再定义保护成员和私有成员,这样可以在阅先定义公有成员,再定义保护成员和私有成员,这样可以在阅读时首先了解这个类的接口。读时首先了解这个类的接口。类的设计是类的设计是以数据为中心,以数据为中心,还是还是以行为为中心?以行为为中心?class Aprivate:int i,j;float x,y;public:void func1(void);void func2(void);class Apubli
11、c:void func1(void);void func2(void);private:int i,j;float x,y;(4)(4)结构体结构体struct和类和类class的区别的区别 C C语言中的结构体只有数据成员,无函数成员。语言中的结构体只有数据成员,无函数成员。C+C+语言中的结构体可有数据成员和函数成员。语言中的结构体可有数据成员和函数成员。可以随意修改结构体变量中的数据,这样对数据的操作是很不可以随意修改结构体变量中的数据,这样对数据的操作是很不安全的,不能通过结构体对数据进行保护和控制;在结构体中,安全的,不能通过结构体对数据进行保护和控制;在结构体中,数据和其相应的操作
12、是分离的,使得程序的复杂性难以控制,而数据和其相应的操作是分离的,使得程序的复杂性难以控制,而且程序的可重用性不好,严重影响了软件的生产效率。且程序的可重用性不好,严重影响了软件的生产效率。所以,一般我们所以,一般我们使用使用,当,当使用使用。class Tdate /定义日期类定义日期类public:/定义公有成员函数定义公有成员函数 void Set(int m,int d,int y);/置日期值置日期值 int isLeapYear();/判是否闰年判是否闰年 void Print();/输出日期值输出日期值private:/定义私有数据成员定义私有数据成员 int month;int
13、 day;int year;/类定义体的结束类定义体的结束(5)(5)类定义举例类定义举例3.1.2 3.1.2 类中成员函数的定义类中成员函数的定义 成员函数是程序算法实现的部分,是对封装的数据进行操作成员函数是程序算法实现的部分,是对封装的数据进行操作的唯一途径。的唯一途径。类的成员函数有两种定义方法:外联定义和内联定义。类的成员函数有两种定义方法:外联定义和内联定义。1.1.外联函数是指在类定义体中外联函数是指在类定义体中声明声明成员函数,而在类外成员函数,而在类外定义定义成成员函数。员函数。作用域区分符作用域区分符 :指明一个成员函数或数据成员所在的类。指明一个成员函数或数据成员所在的
14、类。:前若不跟类名,则成为全局数据或全局函数前若不跟类名,则成为全局数据或全局函数(非成员函数非成员函数)。class Tdate public:void Set(int m,int d,int y);int isLeapYear();void Print();private:int month;int day;int year;void Tdate:Set(int m,int d,int y)month=m;day=d;year=y;int Tdate:IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Tdate:Print
15、()coutmonth/day /year公有成员公有成员或或 (*对象指针名对象指针名).公有成员公有成员(3)通过对象的引用调用成员通过对象的引用调用成员格式:对象的引用格式:对象的引用.公有成员公有成员 class Myclock private:int hour,minute,second;public:void init();void updata();void display();Myclock clock,*pclock;/定义对象clock和指向Myclock类对象的指针pclockclock.init();/通过对象访问公有成员函数通过对象访问公有成员函数pclock=&cl
16、ock;/指针指针pclockpclock指向对象指向对象clockclockpclock-display();/通过指针访问成员函数通过指针访问成员函数clock.hour=4;/错误,因为对象不能访问其私有成员错误,因为对象不能访问其私有成员clock.hour=4;错误,因为对象不能访问其私有成员错误,因为对象不能访问其私有成员在调用成员函数时,通常使用缩写形式,如上例中的语句在调用成员函数时,通常使用缩写形式,如上例中的语句s.sets.set(2,15,1998);(2,15,1998);就是就是s.s.TdateTdate:set(2,15,1998);set(2,15,1998)
17、;的缩写,因的缩写,因此可以定义两个或多个类的具有相同名字的成员而不会产生二义此可以定义两个或多个类的具有相同名字的成员而不会产生二义性。性。当一个成员函数被调用时,系统自动向它传递一个隐含的参当一个成员函数被调用时,系统自动向它传递一个隐含的参数,该参数是一个数,该参数是一个,在程序中,在程序中可以使用关键字可以使用关键字thisthis来引用该指针,因此称该指针为来引用该指针,因此称该指针为thisthis指针。指针。,它将成员和用于操作这些,它将成员和用于操作这些成员的成员函数连接在一起。成员的成员函数连接在一起。3.2.4 3.2.4 名字解析和this指针void Tdate:set
18、(int m,int d,int y)/置日期值置日期值 month=m;day=d;year=y;void Tdate:set(int m,int d,int y)/置日期值置日期值 this-month=m;this-day=d;this-year=y;使用this指针,保证了每个对象可以拥有不同的数据成员,但处理这些数据成员的代码可以被所有的对象共享。thisthis指针指针同普通函数一样,类的成员函数也可以是带缺省同普通函数一样,类的成员函数也可以是带缺省值的函数,其调用规则同普通函数。成员函数也可值的函数,其调用规则同普通函数。成员函数也可以是重载函数,类的成员函数的重载与全局函数的
展开阅读全文