C面向对象程序设计谭浩强第二章

上传人:M****1 文档编号:587349998 上传时间:2024-09-05 格式:PPT 页数:35 大小:1.65MB
返回 下载 相关 举报
C面向对象程序设计谭浩强第二章_第1页
第1页 / 共35页
C面向对象程序设计谭浩强第二章_第2页
第2页 / 共35页
C面向对象程序设计谭浩强第二章_第3页
第3页 / 共35页
C面向对象程序设计谭浩强第二章_第4页
第4页 / 共35页
C面向对象程序设计谭浩强第二章_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《C面向对象程序设计谭浩强第二章》由会员分享,可在线阅读,更多相关《C面向对象程序设计谭浩强第二章(35页珍藏版)》请在金锄头文库上搜索。

1、CPP_2 C+ 语言设计 第二章 类和对象 大连海事大学大连海事大学 陈余庆陈余庆 第一第一章章 C+的初步知识的初步知识 第二章第二章 类和对象类和对象 第三章 再论类和对象 第四章 运算符重载 第五章 继承与派生 第六章 多态性与虚函数 第七章 输入输出流 第八章 C+工具 C+ 2- 2 2.1 面向对象程序设计方法概述面向对象程序设计方法概述 2.2 类的声明和对象的定义类的声明和对象的定义 2.3 类的成员函数类的成员函数 2.4 对象成员的引用对象成员的引用 2.5 类和对象的举例类和对象的举例 2.6 类的封装和信息的隐藏类的封装和信息的隐藏 C+ 2- 3 2.1 面向对象

2、程序设计方法概述面向对象程序设计方法概述 ?什么是面向对象的程序设计什么是面向对象的程序设计? 面向对象的程序设计面向对象的程序设计(Object-Oriented Programming )和传和传统的结构化程序设计的思路完全不同。面向对象的程序设计统的结构化程序设计的思路完全不同。面向对象的程序设计和人们日常生活解决问题的思路是相似的。和人们日常生活解决问题的思路是相似的。 比如,我们生产汽车时,不是顺序制造发动机,在设计比如,我们生产汽车时,不是顺序制造发动机,在设计制造底盘、车身、轮子。而是分别设计制造发动机、底盘、制造底盘、车身、轮子。而是分别设计制造发动机、底盘、车身和轮子,最后组

3、装在一起。组装时,各部件之间有联系,车身和轮子,最后组装在一起。组装时,各部件之间有联系,以便协调工作。例如,司机踩油门,就能调节油路,控制发以便协调工作。例如,司机踩油门,就能调节油路,控制发动机的转速,就能驱动车轮。动机的转速,就能驱动车轮。 C+ 2- 4 2.1 面向对象程序设计方法概述面向对象程序设计方法概述 程序设计者的任务有两个:一是设计所需要的类和对象,程序设计者的任务有两个:一是设计所需要的类和对象,即确定那些数据和操作封装在一起;二是考虑怎样向有关对即确定那些数据和操作封装在一起;二是考虑怎样向有关对象发送消息,以启动相关对象的操作。象发送消息,以启动相关对象的操作。 编程

4、者如同一个总调度,不断地向各个对象发出命令,编程者如同一个总调度,不断地向各个对象发出命令,让这些对象活动起来,完成指定的工作。让这些对象活动起来,完成指定的工作。 这就是面向对象的程序设计的基本思路。这就是面向对象的程序设计的基本思路。 C+ 2- 5 2.1 面向对象程序设计方法概述面向对象程序设计方法概述 ?什么是对象什么是对象(object)? 一个对象由一组一个对象由一组“属性属性”和一组和一组“行为行为”构成。并根据构成。并根据外界给它的消息进行相应的操作。系统中多个对象通过一定外界给它的消息进行相应的操作。系统中多个对象通过一定的渠道相互联系。的渠道相互联系。 任何事物都可以看成

5、一个对象。可以是自然物体,也可任何事物都可以看成一个对象。可以是自然物体,也可以是逻辑结构。我们以一个班级为例。一个班级作为对象,以是逻辑结构。我们以一个班级为例。一个班级作为对象,有两个要素:一是班级的静态特征,如班级所属的专业,学有两个要素:一是班级的静态特征,如班级所属的专业,学生人数、班主任姓名等,这种静态特征称为生人数、班主任姓名等,这种静态特征称为“属性属性”;另一;另一个是班级的动态特征,如上课,体育比赛,开会等,称为个是班级的动态特征,如上课,体育比赛,开会等,称为“行为行为”。外界向班级发一个信息(如上课铃声,广播通。外界向班级发一个信息(如上课铃声,广播通知),我们称之为知

6、),我们称之为“消息消息”,班级就会发生一个操作(要么,班级就会发生一个操作(要么上课,要么开会)上课,要么开会) C+ 2- 6 2.1 面向对象程序设计方法概述面向对象程序设计方法概述 ?什么是什么是C+对象?对象? C+中,每个对象都由若干数据和若干函数组成。数据中,每个对象都由若干数据和若干函数组成。数据就是对象的就是对象的“属性属性”,函数就是用来对数据进行的,函数就是用来对数据进行的“操作操作”,以便实现某种功能。这种操作就是对象的以便实现某种功能。这种操作就是对象的“行为行为”,也叫,也叫“方法方法”。我们点击一下鼠标,按动键盘的一个按钮,就是。我们点击一下鼠标,按动键盘的一个按

7、钮,就是给某个对象一个消息,系统会调用该对象中的函数进行操作。给某个对象一个消息,系统会调用该对象中的函数进行操作。 比如长方形对象,其长和宽就是它的属性,调用该对象比如长方形对象,其长和宽就是它的属性,调用该对象的一些函数,即向该对象传送一些消息,可以用来对其长、的一些函数,即向该对象传送一些消息,可以用来对其长、宽值进行加工计算,以实现求出面积、周长等功能。宽值进行加工计算,以实现求出面积、周长等功能。 C+ 2- 7 2.1 面向对象程序设计方法概述面向对象程序设计方法概述 ?什么是对象封装什么是对象封装(encapsulation )? 就是把对象的不想让外界知道的属性和功能屏蔽起来,

8、就是把对象的不想让外界知道的属性和功能屏蔽起来,让外界看不见。封装有两个含义,一是将有关的数据和操作让外界看不见。封装有两个含义,一是将有关的数据和操作函数封装成一个基本单位,即对象内。各对象之间相互独立,函数封装成一个基本单位,即对象内。各对象之间相互独立,互不干扰;二是将对象中的部分属性或功能对外隐蔽,只留互不干扰;二是将对象中的部分属性或功能对外隐蔽,只留少数接口向外公布,以接收外界信息。少数接口向外公布,以接收外界信息。 对象封装的好处在于,降低了人们操作对象的复杂程度。对象封装的好处在于,降低了人们操作对象的复杂程度。使用对象的人,不必知道对象内部的实现细节,只需要了解使用对象的人,

9、不必知道对象内部的实现细节,只需要了解外部功能就可以自如地操作该对象。外部功能就可以自如地操作该对象。 对象的行为由类的内部数据结构和相关的操作确定;外对象的行为由类的内部数据结构和相关的操作确定;外部行为通过操作接口实现。人们关心的就是操作接口所能提部行为通过操作接口实现。人们关心的就是操作接口所能提供的服务。供的服务。 C+ 2- 8 2.1 面向对象程序设计方法概述面向对象程序设计方法概述 ?什么是抽象什么是抽象(abstraction)? 将具有相同特性的事物归纳、集中成一个统一类型,将具有相同特性的事物归纳、集中成一个统一类型,称为抽象。比如,把张三,李四,王五归纳为一类,我们称称为

10、抽象。比如,把张三,李四,王五归纳为一类,我们称之为之为“人人”。 抽象的作用,是表示同类事物的本质。如果你会操作抽象的作用,是表示同类事物的本质。如果你会操作自己家的电视机,看到别人家里的电视机即使牌子不同,你自己家的电视机,看到别人家里的电视机即使牌子不同,你也肯定会操作,因为所有电视机具有共同的特性。也肯定会操作,因为所有电视机具有共同的特性。 C和和C+中,数据类型就是对一批具体数据的抽象,整中,数据类型就是对一批具体数据的抽象,整形数据就是所有整数的抽象。形数据就是所有整数的抽象。 “类类”是是“对象对象”的抽象,的抽象,“对象对象”则是类的则是类的“特特例例”,或,或“具体表现形式

11、具体表现形式”。 C+ 2- 9 2.1 面向对象程序设计方法概述面向对象程序设计方法概述 ?什么是继承什么是继承( inherit )? 生产汽车,一般不会从头开始设计,而是选择已有的某生产汽车,一般不会从头开始设计,而是选择已有的某一型号汽车为蓝本,增加、修改一些功能就行了。一型号汽车为蓝本,增加、修改一些功能就行了。 软件开发也是这样,我们已经有了一个名为软件开发也是这样,我们已经有了一个名为“A”的类,的类,还想建立一个名为还想建立一个名为“B”的类,而后者内容只是在前者的基础的类,而后者内容只是在前者的基础上增加了少量内容。我们显然不必重新设计一个新类上增加了少量内容。我们显然不必重

12、新设计一个新类B,只需,只需要把要把A类拿过来,在此基础上添加新内容就可以了。这就是面类拿过来,在此基础上添加新内容就可以了。这就是面向对象程序设计的向对象程序设计的继承机制继承机制。 C+提供继承机制,大大节省了编程工作量,这就是所提供继承机制,大大节省了编程工作量,这就是所谓谓“软件重用软件重用( software reusability )”的思想。对于大型软的思想。对于大型软件的开发具有重要意义。件的开发具有重要意义。 C+ 2- 10 2.1 面向对象程序设计方法概述面向对象程序设计方法概述 ?什么是多态性什么是多态性( polymorphism )? 如果有几个相似而不同的对象,人

13、们往往要求在向它们如果有几个相似而不同的对象,人们往往要求在向它们发出同一个消息时,各自作出不同的操作,这种情况就是发出同一个消息时,各自作出不同的操作,这种情况就是“多态现象多态现象”。 比如,高二比如,高二1,2,3班,听到上课铃后,作出的动作是班,听到上课铃后,作出的动作是各自走进自己的教室上课,而不会走错教室。各自走进自己的教室上课,而不会走错教室。 C+中,所谓多态性是指,由继承而产生的相关的不同中,所谓多态性是指,由继承而产生的相关的不同的类,其对象对同一消息会作出不同的响应。的类,其对象对同一消息会作出不同的响应。 显然,多态性能增加程序的灵活性,它是面向对象程序显然,多态性能增

14、加程序的灵活性,它是面向对象程序设计的重要特征。设计的重要特征。 C+ 2- 11 填空题填空题 1.面向对象的系统最突出的特性是面向对象的系统最突出的特性是 、 、 。 2.C+语言是一种计算机编程语言,利用它编写的程序并不能语言是一种计算机编程语言,利用它编写的程序并不能直接在计算机上运行,而是要经过直接在计算机上运行,而是要经过 、 和和 生生成可执行文件。成可执行文件。 C+ 2- 12 【 C+语言与面向对象的程序设计语言与面向对象的程序设计】 面向对象的程序设计是在吸收结构化程序设计的一切优点的基础面向对象的程序设计是在吸收结构化程序设计的一切优点的基础上发展起来的一种新的程序设计

15、方法,其本质是把数据和处理数据的上发展起来的一种新的程序设计方法,其本质是把数据和处理数据的过程抽象成一个具有特定身份和某些属性的自包含实体过程抽象成一个具有特定身份和某些属性的自包含实体对象对象。 面向对象系统最突出特点是封装性、继承性和多态性面向对象系统最突出特点是封装性、继承性和多态性 在面向对象的程序设计在面向对象的程序设计中,封装是一种数据隐中,封装是一种数据隐藏技术,它通过把一组藏技术,它通过把一组数据和与数据有关的操数据和与数据有关的操作集合放在一起形成对作集合放在一起形成对象来实现。对象通过操象来实现。对象通过操作接口与外部发生联系作接口与外部发生联系,而内部的具体细节则,而内

16、部的具体细节则被隐藏起来,对外是不被隐藏起来,对外是不可见的。可见的。 C+多态性是指多态性是指相同的消息相同的消息为不同的对为不同的对象接收到时象接收到时,可能导致,可能导致不同的动作不同的动作。 在面向对象的程序设计在面向对象的程序设计中,同样有着继承的机中,同样有着继承的机制。通过继承,程序可制。通过继承,程序可以在扩展现有类的基础以在扩展现有类的基础上声明新类。其中新类上声明新类。其中新类被称作原有类的子类或被称作原有类的子类或派生类,原有类称作基派生类,原有类称作基类,又叫父类。类,又叫父类。 2- 132.1 面向对象程序设计方法概述面向对象程序设计方法概述 ?类与对象的作用类与对

17、象的作用 C+全面支持传统的面向过程的程序设计(即结构化编全面支持传统的面向过程的程序设计(即结构化编程),也支持基于对象和面向对象的程序设计。程),也支持基于对象和面向对象的程序设计。 所谓基于对象,是指程序是以类和对象为基础,程序的操所谓基于对象,是指程序是以类和对象为基础,程序的操作是围绕对象进行的。作是围绕对象进行的。 所谓面向对象,是指,在基于对象的基础上,利用了继承所谓面向对象,是指,在基于对象的基础上,利用了继承机制和多态性。机制和多态性。 ?面向对象的程序设计特点面向对象的程序设计特点: 类具有对数据的抽象性、封装性、继承性、多态性。类具有对数据的抽象性、封装性、继承性、多态性

18、。 C+ 2- 14 2.2 类的声明和对象的定义类的声明和对象的定义 ?类和对象的关系类和对象的关系 每一个实体都可以作为对象,一些对象具有相同的结构每一个实体都可以作为对象,一些对象具有相同的结构和特性。如高一和特性。如高一1班,班,2班,班,3班。他们是不同的对象,但具有班。他们是不同的对象,但具有完全相同的结构的特性。每个对象都属于一个特定的类型。完全相同的结构的特性。每个对象都属于一个特定的类型。 C+中,对象的类型称为类中,对象的类型称为类( class )。类代表了某一批对。类代表了某一批对象的共同特性。前面已经谈到,类是对象的抽象,而对象是类象的共同特性。前面已经谈到,类是对象

19、的抽象,而对象是类的具体实例的具体实例( instance )。就象结构体类型和结构体变量一样。就象结构体类型和结构体变量一样。 C+中,我们先声明一个类的类型,然后再定义该类的若中,我们先声明一个类的类型,然后再定义该类的若干对象。对象就是类这种类型的一个变量。类是抽象的,不占干对象。对象就是类这种类型的一个变量。类是抽象的,不占内存,而对象是具体的,要占用内存空间。内存,而对象是具体的,要占用内存空间。 C+ 2- 15 2.2 类的声明和对象的定义类的声明和对象的定义 ?类的声明类的声明 类的声明方法和结构体的声明方法一样,只是将关键字类的声明方法和结构体的声明方法一样,只是将关键字st

20、ruct 换成换成class: class 类名类名 private: ; 别忘了必须用分号结束!别忘了必须用分号结束! C+ 2- 16 成员访问限定符成员访问限定符 ( member access specifier ) 私有数据成员和私有成员函数;私有数据成员和私有成员函数; 成员访问限定符成员访问限定符 public: 公共数据成员和公共成员函数;公共数据成员和公共成员函数; ( member access specifier ) 2.2 类的声明和对象的定义类的声明和对象的定义 类的声明示例类的声明示例 只能通过公有成员函数间接访问只能通过公有成员函数间接访问 class recta

21、ngle 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 = “ width endl; cout “area = “ area endl; cout “perimeter

22、= “ perimeter endl; ; ?C+ 2- 17 在类的外面不能访问私有成员,在类的外面不能访问私有成员, 2.2 类的声明和对象的定义类的声明和对象的定义 ?对象的定义对象的定义 声明了类以后,就可以定义该类的对象了。其格式为:声明了类以后,就可以定义该类的对象了。其格式为: class 类名类名 对象名对象名1,对象名,对象名2, / 方括号表示可选项方括号表示可选项 ?对象定义示例对象定义示例 如前例中,声明了一个名为如前例中,声明了一个名为 rectangle 的类,我们可以定义该的类,我们可以定义该类的若干对象:类的若干对象: ?rectangle r1, r2, r3

23、; 对象定义说明对象定义说明 类的声明和对象的定义可以像结构体类型声明和结构体变量定类的声明和对象的定义可以像结构体类型声明和结构体变量定义一样,合在一起完成。请同学们自己阅读教材义一样,合在一起完成。请同学们自己阅读教材48页的内容。页的内容。 C+ 2- 18 2.3 类的成员函数类的成员函数 ? 成员函数的性质成员函数的性质 类的成员函数也叫类函数,用法和一般函数基本上一样。类的成员函数也叫类函数,用法和一般函数基本上一样。区别在于它只是属于一个类的成员而出现在类中。它可以被指区别在于它只是属于一个类的成员而出现在类中。它可以被指定为类的私有成员定为类的私有成员( private )、公

24、有成员、公有成员( public )或保护成员或保护成员( protected )。 使用类函数时,要注意它的使用权限,如果是私有成员,使用类函数时,要注意它的使用权限,如果是私有成员,只能被本类的其他成员函数调用,不能被类外调用。成员函数只能被本类的其他成员函数调用,不能被类外调用。成员函数可以调用本类所有数据成员和成员函数,也可以引用在本作用可以调用本类所有数据成员和成员函数,也可以引用在本作用域中的有效数据。域中的有效数据。 通常,我们把类的数据成员定义成私有成员,对外屏蔽,通常,我们把类的数据成员定义成私有成员,对外屏蔽,而把成员函数定义成公有成员,他可以调用私有成员和其它成而把成员函

25、数定义成公有成员,他可以调用私有成员和其它成员。员。 一个类若没有成员函数,就退化成一个类若没有成员函数,就退化成C语言的结构体,而失语言的结构体,而失去意义。去意义。 C+ 2- 19 2.3 类的成员函数类的成员函数 在类外定义成员函数在类外定义成员函数 成员函数一般在类体中定义,如前面所讲。也可以在类成员函数一般在类体中定义,如前面所讲。也可以在类外定义,但要指明是属于哪个类的成员函数,用外定义,但要指明是属于哪个类的成员函数,用“类名类名:函数函数名名”来指定。例如:来指定。例如: ?class rectangle private: int length, width,; int ar

26、ea, 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

27、 = “ area endl; cout “perimeter = “ perimeter ; rectangle r1, r2, r3; C+ 2- 20 这种类定义包括两个部分:这种类定义包括两个部分: 1、声明部分、声明部分(“做什么做什么”): 数据成员数据成员(名称、类型名称、类型) 成员函数成员函数(方法方法) 2、实现部分、实现部分(“怎么做怎么做”): 成员函数的定义和实现成员函数的定义和实现 C+ 2- 21 2.3 类的成员函数类的成员函数 其中,其中,“:”成为域限定符。如果在域限定符前没有类成为域限定符。如果在域限定符前没有类名,或函数名前既没有类名,又没有域限定符:名

28、,或函数名前既没有类名,又没有域限定符: :display ( ) 或或 display ( ) 则表示该函数不属于任何类,它不是成员函数,而是全局函则表示该函数不属于任何类,它不是成员函数,而是全局函数,即普通函数。数,即普通函数。 ?inline 成员函数成员函数 类的成员函数也可以指定为内联函数,只要是函数代码类的成员函数也可以指定为内联函数,只要是函数代码较少,有频繁使用。我们只要在成员函数的类型前面加上较少,有频繁使用。我们只要在成员函数的类型前面加上inline 关键字就可以。关键字就可以。 C+ 2- 22 2.3 类的成员函数类的成员函数 ?成员函数的存储方式成员函数的存储方式

29、 同一类定义了多个对象时,每个对象的数据成员各自占同一类定义了多个对象时,每个对象的数据成员各自占据独立的空间,而共享一个共用的函数代码段,不占用对象据独立的空间,而共享一个共用的函数代码段,不占用对象的存储空间。那么不同对象使用的是同一个函数代码段,如的存储空间。那么不同对象使用的是同一个函数代码段,如何区分不同对象呢?何区分不同对象呢? C+为此专门设立了一个名为为此专门设立了一个名为 this 的指针,用来指向不的指针,用来指向不同的对象。当调用对象同的对象。当调用对象r1,成员函数访问的就是,成员函数访问的就是r1的成员。的成员。 对象对象r1 对象对象r2 对象对象r10 数据数据1

30、 数据数据2 数据数据10 共用函数代码共用函数代码 C+ 2- 23 2.4 对象成员的引用对象成员的引用 ?用对象名和成员运算符用对象名和成员运算符( . )访问对象成员访问对象成员 class rectangle public: int length, width; / 公有数据成员公有数据成员 void display ( ); / 公有成员函数公有成员函数 ; void rectangle: display ( ) cout “area =“ length* width ednl; cout“perimeter =“ length class rectangle public: in

31、t length, width; / 公共数据成员公共数据成员 void display ( ); / 公共成员函数公共成员函数 ; void rectangle: display ( ) cout “area =“ length* width ednl; cout“perimeter =“ lenght = 5; p-width = 4; p-display ( ); C+ 2- 25 2.4 对象成员的引用对象成员的引用 ?用对象的引用访问对象成员用对象的引用访问对象成员 public: int length, width; / 公共数据成员公共数据成员 void display ( );

32、 / 公共成员函数公共成员函数 ; void rectangle: display ( ) cout “area =“ length* width ednl; cout“perimeter =“ ( length+ width)*2; void main ( ) rectangle r2; rectangle &r3 = r2; /r3引用引用r2 r3.lenght = 5; r3.width = 4; r3.display ( ); class rectangle 举例:举例: C+ 2- 26 编程练习编程练习 请同学们自己阅读教材请同学们自己阅读教材55页页2.5节的简单节的简单示例程

33、序。然后编写下列程序:示例程序。然后编写下列程序: 输入三个整数,并输出它们之中的最大输入三个整数,并输出它们之中的最大值。值。 C+ 2- 27 2.6 类的封装和信息隐蔽类的封装和信息隐蔽 ?公用接口和私有实现的分离公用接口和私有实现的分离 我们已经学到,我们已经学到,C+通过类的封装,将类的数据成员和通过类的封装,将类的数据成员和成员函数集成到一个类中。而一般在类的声明时,往往把数成员函数集成到一个类中。而一般在类的声明时,往往把数据成员指定成私有的,使它们与外界隔离,即,不能在类外据成员指定成私有的,使它们与外界隔离,即,不能在类外直接使用私有成员,外界只能通过类的公有函数,间接进行直

34、接使用私有成员,外界只能通过类的公有函数,间接进行对私有成员的操作。换句话说,外界与类的私有成员的唯一对私有成员的操作。换句话说,外界与类的私有成员的唯一联系渠道,就是该类的公有成员函数。联系渠道,就是该类的公有成员函数。 所以,我们一般把成员函数指定成公有的所以,我们一般把成员函数指定成公有的( public )性性质(除非某些成员函数不想让外界调用)。质(除非某些成员函数不想让外界调用)。 这就是所谓的这就是所谓的“外部接口外部接口”与内部实现的分离,以起与内部实现的分离,以起到信息隐蔽的作用。而这是软件工程最基本的原则。到信息隐蔽的作用。而这是软件工程最基本的原则。 C+ 2- 28 定

35、义一个类就是实定义一个类就是实现对创建一个对象的现对创建一个对象的数据结构的描述。数据结构的描述。 在类中,一些成员在类中,一些成员是保护的,被有效地是保护的,被有效地屏蔽,以防外界的干屏蔽,以防外界的干扰和误操作。扰和误操作。 另一些成员是公共另一些成员是公共的,作为接口提供外的,作为接口提供外界使用。界使用。 右图是对它们采用右图是对它们采用的图示方法说明类的的图示方法说明类的组成结构。以组成结构。以Point 类为例。类为例。 C+ Point 类类 xoffset yoffset 访访问问接接set x 口口 y angle radius 2- 29 封封装装体体 内内部部数数据据成成

36、员员 2.6 类的封装和信息隐蔽类的封装和信息隐蔽 ?类声明和成员函数定义的分离类声明和成员函数定义的分离 当一个类被多个程序使用时,一般将类的声明(包括当一个类被多个程序使用时,一般将类的声明(包括成员函数的声明)放在指定的头文件中,用户在编程时,成员函数的声明)放在指定的头文件中,用户在编程时,将该头文件包含近来就可以了。而不必在每个使用该类的将该头文件包含近来就可以了。而不必在每个使用该类的程序中重复书写该类的声明。程序中重复书写该类的声明。 我们然后可以直接在程序中直接定义该类的对象,直我们然后可以直接在程序中直接定义该类的对象,直接调用该类的公有成员函数。为了实现信息隐蔽,对类的接调

37、用该类的公有成员函数。为了实现信息隐蔽,对类的成员函数的定义一般不放在头文件中,而放在另一个文件成员函数的定义一般不放在头文件中,而放在另一个文件中。中。 然后按照对多文件程序的编译和运行方法对程序进行然后按照对多文件程序的编译和运行方法对程序进行编译和连接。请看下面示例。编译和连接。请看下面示例。 C+ 2- 30 2.6 类的封装和信息隐蔽类的封装和信息隐蔽 / rectangle.h class rectangle private: int length, width; public: void Put ( ); void display ( ); ; / rectangle.cpp #

38、include #include “rectangle.h” void rectangle:Put ( ) length = 5; width = 4; void rectangle: display ( ) cout “area = “ length*width endl; C+ / main.cpp #include #include “rectangle.h” void main ( ) rectangle r1; r1.display ( ); 2- 31 2.6 类的封装和信息隐蔽类的封装和信息隐蔽 在实际运用中,将若干功能相近的类声明集中在一起,在实际运用中,将若干功能相近的类声明

39、集中在一起,形成类库。类库包括两个组成部分:形成类库。类库包括两个组成部分: ? 类声明头文件;类声明头文件; ? 经过编译的头文件函数的定义的目标文件。经过编译的头文件函数的定义的目标文件。 用户只需要将类库装入自己的计算机中用户只需要将类库装入自己的计算机中C+系统的子系统的子目录下,并在程序中用目录下,并在程序中用#include命令将有关类声明的头文命令将有关类声明的头文件包含到程序中,就可以使用这些类和其中的成员函数了。件包含到程序中,就可以使用这些类和其中的成员函数了。 C+ 2- 32 2.6 类的封装和信息隐蔽类的封装和信息隐蔽 ? 面向对象程序设计中的几个名词面向对象程序设计

40、中的几个名词 ?方法:方法:method,指对数据的操作。,指对数据的操作。 ?消息:其实就是一个命令,由程序语句实现。外界通过消息:其实就是一个命令,由程序语句实现。外界通过发送发送“消息消息”来激活有关的方法。来激活有关的方法。 比如:比如: rectangle.dispaly ( ); 就是向就是向rectangle对象发一个消息,通知它执行其中对象发一个消息,通知它执行其中的的“display ( )”方法。方法。 这一条语句就涉及到对象、消息、方法这三个术语。这一条语句就涉及到对象、消息、方法这三个术语。 rectangel:是对象;:是对象; display ( ):是方法;:是方法; rectangel.display ( ):是消息。:是消息。 C+ 2- 33 本章练习本章练习 试编写一个基于对象的程序,求试编写一个基于对象的程序,求 3个长方体个长方体的体积。长方体对象名为的体积。长方体对象名为 rectangle,数据成员,数据成员包括:包括:length,width,height。要求用成员函。要求用成员函数实现以下功能:数实现以下功能: ?由键盘分别输入由键盘分别输入3个长方体的长、宽、高;个长方体的长、宽、高; ?计算机长方体之体积;计算机长方体之体积; ?输出三个长方体的体积。输出三个长方体的体积。 C+ 2- 34

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

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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