最新Object-OrientedProgramminginC++第二章类和对象
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对象定义示例 如前例中,声明了一个名为 rectangle 的类,我们可以定义该
类的若干对象: rectangle r1, r2, r3;
对象定义说明 类的声明和对象的定义可以想结构体类型声明和结构体变量定
义一样,合在一起完成。请同学们自己阅读教材48页的内容。
C++
2- 15
2.3 类的成员函数
C++
2- 12
2.2 类的声明和对象的定义
类的声明
类的声明方法和结构体的声明方法一样,只是将关键字
struct 换成class:
class 类名
成员访问限定符
{ private:
( member access specifier )
私有数据成员和私有成员函数;
public:
成员访问限定符
公共数据成员和公共成员函数; ( member access specifier )
C++中,对象的类型称为类( class )。类代表了某一批对 象的共同特性。前面已经谈到,类是对象的抽象,而对象是类 的具体实例( instance )。就象结构体类型和结构体变量一样。
C++中,我们先声明一个类的类型,然后再定义该类的若 干对象。对象就是类这种类型的一个变量。类是抽象的,不占 内存,而对象是具体的,要占用内存空间。
class rectangle { private:
int length, width,; int area, perimeter ; public: void PutArea ( ); void PutPerimeter ( ); void display ( ); }; void rectangle:: PutArea ( ) { area = length * width;}
C++
2- 2
2.1 面向对象程序设计方法概述
什么是面向对象的程序设计? 面向对象的程序设计(Object-Oriented Programming )和传
统的结构化程序设计的思路完全不同。面向对象的程序设计 和人们日常生活解决问题的思路是相似的。
比如,我们生产汽车时,不是顺序制造发动机,在设计 制造底盘、车身、轮子。而是分别设计制造发动机、底盘、 车身和轮子,最后组装在一起。组装时,各部件之间有联系, 以便协调工作。例如,司机踩油门,就能调节油路,控制发 动机的转速,就能驱动车轮。
::display ( ) 或 display ( ) 则表示该函数不属于任何类,它不是成员函数,而是全局函 数,即普通函数。 inline 成员函数
类的成员函数也可以指定为内联函数,只要是函数代码 较少,有频繁使用。我们只要在成员函数的类型签名加上 inline 关键字就可以。
C++
2- 19
2.3 类的成员函数
作是围绕对象进行的。 所谓面向对象,是指,在基于对象的基础上,利用了继承
机制和多态性。 面向对象的程序设计特点:
类具有对数据的抽象性、封装性、继承性、多态性。
C++
2- 11
2.2 类的声明和对象的定义
类和对象的关系 每一个实体都可以作为对象,一些对象具有相同的结构
和特性。如高一1班,2班,3班。他们是不同的对象,但具有 完全相同的结构的特性。每个对象都属于一个特定的类型。
};
别忘了必须用分号结束!
C++
2- 13
2.2 类的声明和对象的定义
类的声明示例
在类的外面不能访问私有成员,
class rectangle
只能通过公有成员函数间接访问
{ private:
int length, width, area, perimeter ;
public:
void PutArea ( ) { area = length * width;}
C和C++中,数据类型就是对一批具体数据的抽象,整 形数据就是所有整数的抽象。
“类”是“对象”的抽象,“对象”则是类的“特 例”,或“具体表现形式”。
C++
2- 8
2.1 面向对象程序设计方法概述
什么是继承( inherit )?
生产汽车,一般不会从头开始设计,而是选择已有的某 一型号汽车为蓝本,增加、修改一些功能就行了。
cout << “area = “ << area << endl;
cout << “perimeter = “ << perimeter << endl; }
};
C++
2- 14
2.2 类的声明和对象的定义
对象的定义 声明了类以后,就可以定义该类的对象了。其格式为: [class] 类名 对象名1,对象名2,… // 方括号表示可选项
对象封装的好处在于,降低了人们操作对象的复杂程度。 使用对象的人,不必知道对象内部的实现细节,只需要了解 外部功能就可以自如地操作该对象。
对象的行为由类的内部数据结构和相关的操作确定;外 部行为通过操作接口实现。人们关心的就是操作接口所能提 供的服务。
C++
2- 7
2.1 面向对象程序设计方法概述
就是对象的“属性”,函数就是用来对数据进行的“操作”, 以便实现某种功能。这种操作就是对象的“行为”,也叫 “方法”。我们点击一下鼠标,按动键盘的一个按钮,就是 给某个对象一个消息,系统会调用该对象中的函数进行操作。
比如长方形对象,其长和宽就是它的属性,调用该对象 的一些函数,即向该对象传送一些消息,可以用来对其长、 宽值进行加工计算,以实现求出面积、周长等功能。
软件开发也是这样,我们已经有了一个名为“A”的类, 还想建立一个名为“B”的类,而后者内容只是在前者的基础 上增加了少量内容。我们显然不必重新设计一个新类B,只需 要把A类拿过来,在此基础上添加新内容就可以了。这就是面 向对象程序设计的继承机制。
C++提供继承机制,大大节省了编程工作量,这就是所 谓“软件重用( software reusability )”的思想。对于大型软 件的开发具有重要意义。
成员函数的存储方式
同一类定义了多个对象时,每个对象的数据成员各自占 据独立的空间,而共享一个共用的函数代码段,不占用对象 的存储空间。那么不同对象使用的是同一个函数代码段,如 何区分不同对象呢?
C++为此专门设立了一个名为 this 的指针,用来指向不 同的对象。当调用对象r1,成员函数访问的就是r1的成员。
对象r1
数据1
对象r2
数据2
…
共用函数代码
对象r10
数据10
C++
2- 20
2.4 对象成员的引用
用对象名和成员运算符( . )访问对象成员 举例:用这种方式万分的成员,必须定义成公用成员!
class rectangle
{ public: int length, width; // 公共数据成员 void display ( ); // 公共成员函数
rectangle r1, r2, r3;
C++
2- 17
这种类定义包括两个部分:
1、声明部分(“做什么”): 数据成员(名称、类型) 成员函数(方法)
2、实现部分(“怎么做”):
成员函数的定义和实现
C++
2- 18
2.3 类的成员函数
其中,“::”成为域限定符。如果在域限定符前没有类 名,或函数名前既没有类名,又没有域限定符:
什么是抽象(abstracti为抽象。比如,把张三,李四,王五归纳为一类,我们称 之为“人”。
抽象的作用,是表示同类事物的本质。如果你会操作 自己家的电视机,看到别人家里的电视机即使牌子不同,你 也肯定会操作,因为所有电视机具有共同的特性。
void rectangle:: PutPerimeter ( ) { perimeter = (length + width ) * 2; } void rectangle:: display ( ) { cout << “length = “<< length << endl;
cout << “width = “<< width << endl; cout << “area = “ << area << endl; cout << “perimeter = “ << perimeter ; }
成员函数的性质 类的成员函数也叫类函数,用法和一般函数基本上一样。
区别在于它只是属于一个类的成员而出现在类中。它可以被指 定为类的私有成员( private )、公有成员( public )或保护成员 ( protected )。
使用类函数时,要注意它的使用权限,如果是私有成员, 只能被本类的其他成员函数调用,不能被类外调用。成员函数 可以调用本类所有数据成员和成员函数,也可以引用在本作用 域中的有效数据。
在类的外面可以访问公有成员
void PutPerimeter ( )
{ perimeter = (length + width ) * 2; }
void display ( )
{ cout << “length = “<< length << endl;
cout << “width = “<< width << endl;
C++
2- 9
2.1 面向对象程序设计方法概述
什么是多态性( polymorphism )? 如果有几个相似而不同的对象,人们往往要求在向它们
发出同一个消息时,各自作出不同的操作,这种情况就是 “多态现象”。
比如,高二1,2,3班,听到上课铃后,作出的动作是 各自走进自己的教室上课,而不会走错教室。
C++
2- 3
2.1 面向对象程序设计方法概述
程序设计者的任务有两个:一是设计所需要的类和对象, 即确定那些数据和操作封装在一起;二是考虑怎样向有关对 象发送消息,以启动相关对象的操作。
编程者如同一个总调度,不断地向各个对象发出命令, 让这些对象活动起来,完成指定的工作。
这就是面向对象的程序设计的基本思路。
Object-Oriented Programming in C++ 第二章 类和对象
第一章 C++的初步知识 第二章 类和对象 第三章 再论类和对象 第四章 运算符重载 第五章 继承与派生 第六章 多态性与虚函数 第七章 输入输出流 第八章 C++工具
C++
2- 1
2.1 面向对象程序设计方法概述 2.2 类的声明和对象的定义 2.3 类的成员函数 2.4 对象成员的引用 2.5 类和对象的举例 2.6 类的封装和信息的隐藏
通常,我们把类的数据成员定义成私有成员,对外屏蔽, 而把成员函数定义成公有成员,他可以调用私有成员和其它成 员。
一个类若没有成员函数,就退化成C语言的结构体,而失 去意义。
C++
2- 16
2.3 类的成员函数
在类外定义成员函数 成员函数一般在类体中定义,如前面所讲。也可以在类
外定义,但要指明是属于哪个类的成员函数,用“类名::函数 名”来指定。例如:
C++
2- 4
2.1 面向对象程序设计方法概述
什么是对象(object)?
一个对象由一组“属性”和一组“行为”构成。并根据 外界给它的消息进行相应的操作。系统中多个对象通过一定 的渠道相互联系。
任何事物都可以看成一个对象。可以是自然物体,也可
以是逻辑结构。我们以一个班级为例。一个班级作为对象,
有两个要素:一是班级的静态特征,如班级所属的专业,学
生人数、班主任姓名等,这种静态特征称为“属性”;另一
个是班级的动态特征,如上课,体育比赛,开会等,称为
“行为”。外界向班级发一个信息(如上课铃声,广播通
知),我们称之为“消息”,班级就会发生一个操作(要么
上课,要么开会)
C++
2- 5
2.1 面向对象程序设计方法概述
什么是C++对象? C++中,每个对象都由若干数据和若干函数组成。数据
C++
2- 6
2.1 面向对象程序设计方法概述
什么是对象封装(encapsulation )?
就是把对象的不想让外界知道的属性和功能屏蔽起来, 让外界看不见。封装有两个含义,一是将有关的数据和操作 函数封装成一个基本单位,即对象内。各对象之间相互独立, 互不干扰;二是将对象中的部分属性或功能对外隐蔽,只留 少数接口向外公布,以接收外界信息。
C++中,所谓多态性是指,由继承而产生的相关的不同 的类,其对象对同一消息会作出不同的响应。
显然,多态性能增加程序的灵活性,它是面向对象程序 设计的重要特征。
C++
2- 10
2.1 面向对象程序设计方法概述
类与对象的作用 C++全面支持传统的面向过程的程序设计(即结构化编
程),也支持基于对象和面向对象的程序设计。 所谓基于对象,是指程序是以类和对象为基础,程序的操
类的若干对象: rectangle r1, r2, r3;
对象定义说明 类的声明和对象的定义可以想结构体类型声明和结构体变量定
义一样,合在一起完成。请同学们自己阅读教材48页的内容。
C++
2- 15
2.3 类的成员函数
C++
2- 12
2.2 类的声明和对象的定义
类的声明
类的声明方法和结构体的声明方法一样,只是将关键字
struct 换成class:
class 类名
成员访问限定符
{ private:
( member access specifier )
私有数据成员和私有成员函数;
public:
成员访问限定符
公共数据成员和公共成员函数; ( member access specifier )
C++中,对象的类型称为类( class )。类代表了某一批对 象的共同特性。前面已经谈到,类是对象的抽象,而对象是类 的具体实例( instance )。就象结构体类型和结构体变量一样。
C++中,我们先声明一个类的类型,然后再定义该类的若 干对象。对象就是类这种类型的一个变量。类是抽象的,不占 内存,而对象是具体的,要占用内存空间。
class rectangle { private:
int length, width,; int area, perimeter ; public: void PutArea ( ); void PutPerimeter ( ); void display ( ); }; void rectangle:: PutArea ( ) { area = length * width;}
C++
2- 2
2.1 面向对象程序设计方法概述
什么是面向对象的程序设计? 面向对象的程序设计(Object-Oriented Programming )和传
统的结构化程序设计的思路完全不同。面向对象的程序设计 和人们日常生活解决问题的思路是相似的。
比如,我们生产汽车时,不是顺序制造发动机,在设计 制造底盘、车身、轮子。而是分别设计制造发动机、底盘、 车身和轮子,最后组装在一起。组装时,各部件之间有联系, 以便协调工作。例如,司机踩油门,就能调节油路,控制发 动机的转速,就能驱动车轮。
::display ( ) 或 display ( ) 则表示该函数不属于任何类,它不是成员函数,而是全局函 数,即普通函数。 inline 成员函数
类的成员函数也可以指定为内联函数,只要是函数代码 较少,有频繁使用。我们只要在成员函数的类型签名加上 inline 关键字就可以。
C++
2- 19
2.3 类的成员函数
作是围绕对象进行的。 所谓面向对象,是指,在基于对象的基础上,利用了继承
机制和多态性。 面向对象的程序设计特点:
类具有对数据的抽象性、封装性、继承性、多态性。
C++
2- 11
2.2 类的声明和对象的定义
类和对象的关系 每一个实体都可以作为对象,一些对象具有相同的结构
和特性。如高一1班,2班,3班。他们是不同的对象,但具有 完全相同的结构的特性。每个对象都属于一个特定的类型。
};
别忘了必须用分号结束!
C++
2- 13
2.2 类的声明和对象的定义
类的声明示例
在类的外面不能访问私有成员,
class rectangle
只能通过公有成员函数间接访问
{ private:
int length, width, area, perimeter ;
public:
void PutArea ( ) { area = length * width;}
C和C++中,数据类型就是对一批具体数据的抽象,整 形数据就是所有整数的抽象。
“类”是“对象”的抽象,“对象”则是类的“特 例”,或“具体表现形式”。
C++
2- 8
2.1 面向对象程序设计方法概述
什么是继承( inherit )?
生产汽车,一般不会从头开始设计,而是选择已有的某 一型号汽车为蓝本,增加、修改一些功能就行了。
cout << “area = “ << area << endl;
cout << “perimeter = “ << perimeter << endl; }
};
C++
2- 14
2.2 类的声明和对象的定义
对象的定义 声明了类以后,就可以定义该类的对象了。其格式为: [class] 类名 对象名1,对象名2,… // 方括号表示可选项
对象封装的好处在于,降低了人们操作对象的复杂程度。 使用对象的人,不必知道对象内部的实现细节,只需要了解 外部功能就可以自如地操作该对象。
对象的行为由类的内部数据结构和相关的操作确定;外 部行为通过操作接口实现。人们关心的就是操作接口所能提 供的服务。
C++
2- 7
2.1 面向对象程序设计方法概述
就是对象的“属性”,函数就是用来对数据进行的“操作”, 以便实现某种功能。这种操作就是对象的“行为”,也叫 “方法”。我们点击一下鼠标,按动键盘的一个按钮,就是 给某个对象一个消息,系统会调用该对象中的函数进行操作。
比如长方形对象,其长和宽就是它的属性,调用该对象 的一些函数,即向该对象传送一些消息,可以用来对其长、 宽值进行加工计算,以实现求出面积、周长等功能。
软件开发也是这样,我们已经有了一个名为“A”的类, 还想建立一个名为“B”的类,而后者内容只是在前者的基础 上增加了少量内容。我们显然不必重新设计一个新类B,只需 要把A类拿过来,在此基础上添加新内容就可以了。这就是面 向对象程序设计的继承机制。
C++提供继承机制,大大节省了编程工作量,这就是所 谓“软件重用( software reusability )”的思想。对于大型软 件的开发具有重要意义。
成员函数的存储方式
同一类定义了多个对象时,每个对象的数据成员各自占 据独立的空间,而共享一个共用的函数代码段,不占用对象 的存储空间。那么不同对象使用的是同一个函数代码段,如 何区分不同对象呢?
C++为此专门设立了一个名为 this 的指针,用来指向不 同的对象。当调用对象r1,成员函数访问的就是r1的成员。
对象r1
数据1
对象r2
数据2
…
共用函数代码
对象r10
数据10
C++
2- 20
2.4 对象成员的引用
用对象名和成员运算符( . )访问对象成员 举例:用这种方式万分的成员,必须定义成公用成员!
class rectangle
{ public: int length, width; // 公共数据成员 void display ( ); // 公共成员函数
rectangle r1, r2, r3;
C++
2- 17
这种类定义包括两个部分:
1、声明部分(“做什么”): 数据成员(名称、类型) 成员函数(方法)
2、实现部分(“怎么做”):
成员函数的定义和实现
C++
2- 18
2.3 类的成员函数
其中,“::”成为域限定符。如果在域限定符前没有类 名,或函数名前既没有类名,又没有域限定符:
什么是抽象(abstracti为抽象。比如,把张三,李四,王五归纳为一类,我们称 之为“人”。
抽象的作用,是表示同类事物的本质。如果你会操作 自己家的电视机,看到别人家里的电视机即使牌子不同,你 也肯定会操作,因为所有电视机具有共同的特性。
void rectangle:: PutPerimeter ( ) { perimeter = (length + width ) * 2; } void rectangle:: display ( ) { cout << “length = “<< length << endl;
cout << “width = “<< width << endl; cout << “area = “ << area << endl; cout << “perimeter = “ << perimeter ; }
成员函数的性质 类的成员函数也叫类函数,用法和一般函数基本上一样。
区别在于它只是属于一个类的成员而出现在类中。它可以被指 定为类的私有成员( private )、公有成员( public )或保护成员 ( protected )。
使用类函数时,要注意它的使用权限,如果是私有成员, 只能被本类的其他成员函数调用,不能被类外调用。成员函数 可以调用本类所有数据成员和成员函数,也可以引用在本作用 域中的有效数据。
在类的外面可以访问公有成员
void PutPerimeter ( )
{ perimeter = (length + width ) * 2; }
void display ( )
{ cout << “length = “<< length << endl;
cout << “width = “<< width << endl;
C++
2- 9
2.1 面向对象程序设计方法概述
什么是多态性( polymorphism )? 如果有几个相似而不同的对象,人们往往要求在向它们
发出同一个消息时,各自作出不同的操作,这种情况就是 “多态现象”。
比如,高二1,2,3班,听到上课铃后,作出的动作是 各自走进自己的教室上课,而不会走错教室。
C++
2- 3
2.1 面向对象程序设计方法概述
程序设计者的任务有两个:一是设计所需要的类和对象, 即确定那些数据和操作封装在一起;二是考虑怎样向有关对 象发送消息,以启动相关对象的操作。
编程者如同一个总调度,不断地向各个对象发出命令, 让这些对象活动起来,完成指定的工作。
这就是面向对象的程序设计的基本思路。
Object-Oriented Programming in C++ 第二章 类和对象
第一章 C++的初步知识 第二章 类和对象 第三章 再论类和对象 第四章 运算符重载 第五章 继承与派生 第六章 多态性与虚函数 第七章 输入输出流 第八章 C++工具
C++
2- 1
2.1 面向对象程序设计方法概述 2.2 类的声明和对象的定义 2.3 类的成员函数 2.4 对象成员的引用 2.5 类和对象的举例 2.6 类的封装和信息的隐藏
通常,我们把类的数据成员定义成私有成员,对外屏蔽, 而把成员函数定义成公有成员,他可以调用私有成员和其它成 员。
一个类若没有成员函数,就退化成C语言的结构体,而失 去意义。
C++
2- 16
2.3 类的成员函数
在类外定义成员函数 成员函数一般在类体中定义,如前面所讲。也可以在类
外定义,但要指明是属于哪个类的成员函数,用“类名::函数 名”来指定。例如:
C++
2- 4
2.1 面向对象程序设计方法概述
什么是对象(object)?
一个对象由一组“属性”和一组“行为”构成。并根据 外界给它的消息进行相应的操作。系统中多个对象通过一定 的渠道相互联系。
任何事物都可以看成一个对象。可以是自然物体,也可
以是逻辑结构。我们以一个班级为例。一个班级作为对象,
有两个要素:一是班级的静态特征,如班级所属的专业,学
生人数、班主任姓名等,这种静态特征称为“属性”;另一
个是班级的动态特征,如上课,体育比赛,开会等,称为
“行为”。外界向班级发一个信息(如上课铃声,广播通
知),我们称之为“消息”,班级就会发生一个操作(要么
上课,要么开会)
C++
2- 5
2.1 面向对象程序设计方法概述
什么是C++对象? C++中,每个对象都由若干数据和若干函数组成。数据
C++
2- 6
2.1 面向对象程序设计方法概述
什么是对象封装(encapsulation )?
就是把对象的不想让外界知道的属性和功能屏蔽起来, 让外界看不见。封装有两个含义,一是将有关的数据和操作 函数封装成一个基本单位,即对象内。各对象之间相互独立, 互不干扰;二是将对象中的部分属性或功能对外隐蔽,只留 少数接口向外公布,以接收外界信息。
C++中,所谓多态性是指,由继承而产生的相关的不同 的类,其对象对同一消息会作出不同的响应。
显然,多态性能增加程序的灵活性,它是面向对象程序 设计的重要特征。
C++
2- 10
2.1 面向对象程序设计方法概述
类与对象的作用 C++全面支持传统的面向过程的程序设计(即结构化编
程),也支持基于对象和面向对象的程序设计。 所谓基于对象,是指程序是以类和对象为基础,程序的操