第五章类与对(教案改变了兼学出再 从本章起将进入面向对象程序设计学习的实质阶 段,是面向对象的第一个重要特性一封装性。 封装( Encapsulation)是面向对象程序设计最 基本的特性,把数据(属性)和函数(操作)合成 个整体,这在计算机世界中是用类与对象实现的。本 章将引入C艹t的类( class)和对象( object)的概念, 建立“函数也可以是数据类型的成员”的思想。 下面对类和对象的概念再进行说明: 类是对现实世界中客观事物的抽象描述,将具有 相同属性的一类事物称为某个类,例如将在路上跑的 各种各样的汽车抽象岀它们相同的属性,称为汽车类, 而宝马汽车是汽车类的一个实例,宝马就是对象
第五章 类与对象(本教案改变了教学次序) 从本章起将进入面向对象程序设计学习的实质阶 段,是面向对象的第一个重要特性—封装性。 封装(Encapsulation)是面向对象程序设计最 基本的特性,把数据(属性)和函数(操作)合成一 个整体,这在计算机世界中是用类与对象实现的。本 章将引入C++的类(class)和对象(object)的概念, 建立“函数也可以是数据类型的成员”的思想。 下面对类和对象的概念再进行说明: 类是对现实世界中客观事物的抽象描述,将具有 相同属性的一类事物称为某个类,例如将在路上跑的 各种各样的汽车抽象出它们相同的属性,称为汽车类, 而宝马汽车是汽车类的一个实例,宝马就是对象
类蜀对 从计算机角度来看,类首先是一种复杂的数据类 型,它是将不同类型的数据和与这些数据有关的操作 封状在一起的集合体,因此,定义类就是定义一种新 的数据类型,就跟我们在C语言中定义结构体相类似, 只不过类除了数据定义之外,还可以定义这些数据的 操作函数。类不仅具有封装性,还具有隐藏性,类的 些属性可以设置为不被外界操作,所以对外部来说, 这些数据有不可见性,外面只有通过类的操作函数才 能操作类的内部数据。数据隐藏对于一个团队合作开 发一个大型程序是非常有意义的。 学习面向对象程序设计的目的是要解决实际问题, 只有具备了从实际问题中抽象出类和对象的能力,才 能说初步掌握了面向对象的程序设计的方法。 心
类与对象 从计算机角度来看,类首先是一种复杂的数据类 型,它是将不同类型的数据和与这些数据有关的操作 封状在一起的集合体,因此,定义类就是定义一种新 的数据类型,就跟我们在C语言中定义结构体相类似, 只不过类除了数据定义之外,还可以定义这些数据的 操作函数。类不仅具有封装性,还具有隐藏性,类的 一些属性可以设置为不被外界操作,所以对外部来说, 这些数据有不可见性,外面只有通过类的操作函数才 能操作类的内部数据。数据隐藏对于一个团队合作开 发一个大型程序是非常有意义的。 学习面向对象程序设计的目的是要解决实际问题, 只有具备了从实际问题中抽象出类和对象的能力,才 能说初步掌握了面向对象的程序设计的方法
第五章蜀对象 ■■■ 51类与对象 52构造函数和析构函数 53友元 54静态成员 55类的作用域 56全局对象与类接口
第五章 类与对象 5.1 类与对象 5.5 类的作用域 5.6 全局对象与类接口 5.4 静态成员 5.3 友元 5.2 构造函数和析构函数
5.1类与对 象 5.1.1C++类的定义 5.1.2成员函数的定义 5.1.3对象的创建与使用 <心
5.1 类与对象 5.1.3对象的创建与使用 5.1.1 C++类的定义 5.1.2成员函数的定义
5.1.1C++粪的定改 在一个面向对象的C+程序是由三部分组成的: 类的定义 2、类的实现一成员函数的定义 3、主函数的实现 首先我们来看看类在C十中是如何定义的: class类名{ private: 私有数据和函数成员的声明或实现; public: 公有数据和函数成员的声明或实现; protected 保护数据和函数成员的声明或实现;
5.1.1 C++类的定义 在一个面向对象的C++程序是由三部分组成的: 1、类的定义 2、类的实现—成员函数的定义 3、主函数的实现 首先我们来看看类在C++中是如何定义的: class 类名 { private: 私有数据和函数成员的声明或实现; public: 公有数据和函数成员的声明或实现; protected: 保护数据和函数成员的声明或实现; };
51.1C++类的定义 在C++中定义一个圆的类,可以这样表述 class Circle t private: float mfr;//数据成员,半径是私有的数据 public 四个公开的成员函数 void setradius( float mR)∥/设置圆的半径 float GetRadiusOr 返回圆的半径 void OutputAreao; /求面积 void Output circum o; 求周长 };/最后的分号不可少,这是一条说明语句 上面的表述中,关键字cass是数据类型说明符,指出下 面说明的是类。标识符 Circle是圆这个类的类型名。花括号中 是构成类体的一系列的成员,关键字 private和 public是一种 访问限定符, private表示其后所列为私有成员,就是说外部 不可以对这些成员进行直接访问,而 publie表示其后所列为一 公共成员,就是说可以在外部对这些成员进行访问
5.1.1 C++类的定义 在C++中定义一个圆的类,可以这样表述: class Circle { private: float mfR; // 数据成员,半径是私有的数据 public : // 四个公开的成员函数 void SetRadius(float mR); // 设置圆的半径 float GetRadius(); // 返回圆的半径 void OutputArea(); // 求面积 void OutputCircum(); // 求周长 } ; //最后的分号不可少,这是一条说明语句 上面的表述中,关键字class是数据类型说明符,指出下 面说明的是类。标识符Circle是圆这个类的类型名。花括号中 是构成类体的一系列的成员,关键字private和public是一种 访问限定符, private表示其后所列为私有成员,就是说外部 不可以对这些成员进行直接访问,而public表示其后所列为 公共成员,就是说可以在外部对这些成员进行访问
5.1.1C++类的定义 访问限定符( access specifier)有三种: public(公共的), private(私有的)和 protected(保护的),其中后两种说明的成员是 不能从外部进行访问的。每种说明符可在类体中使 用多次。它们的作用域是从该说明符出现开始到下 个说明符之前或类体结束之前结束。 如果在类体起始点无访问说明符,系统默认定 义为私有( private)。 访问说明符 private(私有的)和 protected(保 护的)体现了类具有封装性( Encapsulation) 实现数据成员的隐藏特性。 private和 protected的 区别在以后的类的继承特性中说明
5.1.1 C++类的定义 访问限定符(access specifier)有三种: public(公共的),private(私有的)和 protected(保护的),其中后两种说明的成员是 不能从外部进行访问的。每种说明符可在类体中使 用多次。它们的作用域是从该说明符出现开始到下 一个说明符之前或类体结束之前结束。 如果在类体起始点无访问说明符,系统默认定 义为私有(private)。 访问说明符private(私有的)和protected(保 护的)体现了类具有封装性(Encapsulation), 实现数据成员的隐藏特性。private和protected的 区别在以后的类的继承特性中说明
51.1C++类的定义 在类的定义中,引进了成员函数( member function)或 函数成员也就是说函数也成了数据(类)中的一员。类把数据 (事物的属性)和函数(事物的行为——操作)(也称为方 法)封装为一个整体。在圆的类定义中,我们注意到 个数据成员半径mR被说明成私有,而四个函数成员 SetRadius, GetRadius, OutputArea, Outputcirum被说明 成公有的;也就是说如果从外部对这个数据成员价mR进行操 作的话只能通过这四个公有函数来完成这时候数据受到了良 好的保护。公有函数集定义了类的接口( interface) 类是一种数据类型,定义时系统并不为类分配存储空间,所 以不能对类的数据成员初始化。当然类中的任何数据成员也 不能使用关键字 extern、auto或 register限定其存储类型。 成员函数可以直接使用类定义中的任一成员,可以处理 数据成员,也可调用函数成员 <心
5.1.1 C++类的定义 在类的定义中,引进了成员函数(member function)或 函数成员,也就是说函数也成了数据(类)中的一员。类把数据 (事物的属性)和函数(事物的行为——操作)(也称为方 法)封装为一个整体。在圆的类定义中,我们注意到: 一个数据成员半径fmR被说明成私有,而四个函数成员 SetRadius,GetRadius,OutputArea,OutputCirum被说明 成公有的;也就是说如果从外部对这个数据成员fmR进行操 作的话,只能通过这四个公有函数来完成,这时候数据受到了良 好的保护。公有函数集定义了类的接口(interface)。 类是一种数据类型,定义时系统并不为类分配存储空间,所 以不能对类的数据成员初始化。当然类中的任何数据成员也 不能使用关键字extern、auto或register限定其存储类型。 成员函数可以直接使用类定义中的任一成员,可以处理 数据成员,也可调用函数成员
51.2成员飘的定曳 在前面的小结中,只对成员函数作了一个声 明,或者讲只给出了函数的原型,并没有对函 数的具体操作进行定义。函数定义通常在类的 说明之后进行,其格式如下: 返回值类型类名:成员函数名(参数表) //函数体部分; } 其中运算符“:”称为作用域运算符( scope resolution operator),也可称为范围运算符。 它指出该函数是属于哪一个类的成员函数
5.1.2 成员函数的定义 在前面的小结中,只对成员函数作了一个声 明,或者讲只给出了函数的原型,并没有对函 数的具体操作进行定义。函数定义通常在类的 说明之后进行,其格式如下: 返回值类型 类名::成员函数名(参数表) { //函数体部分; } 其中运算符“::”称为作用域运算符(scope resolution operator),也可称为范围运算符。 它指出该函数是属于哪一个类的成员函数
512成员画数的定义 类 Circle的函数成员可以如下定义 void Circle: SetRadius( float MR fmR s mR float Circle:: GetRadiuso v0 return fmRi oid Circle: OutputAreao cout<<圆的面积为:<<P工*m代R*mRR<<end } void Circle:: Outputcircumo cout<<圆的周长为:"<<20*PT*mfR<<end }
5.1.2 成员函数的定义 类Circle的函数成员可以如下定义: void Circle::SetRadius(float mR) { fmR = mR; } float Circle::GetRadius() { return fmR; } void Circle::OutputArea() { cout<<“圆的面积为:”<<PI*mfR*mfR<<endl; } void Circle::OutputCircum() { cout<<“圆的周长为:”<<2.0*PI*mfR<<endl; }