第2章对象、类和派生.ppt
《第2章对象、类和派生.ppt》由会员分享,可在线阅读,更多相关《第2章对象、类和派生.ppt(90页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1,第2 章 对象、 类和派生,概述类和对象构造函数和析构函数 const对象和const成员函数实例 : 有理数类 继承: 基类和派生类7.实例 : 类point、circle和cylinder,2,概述,对象: 问题对象 行动或思考时作为目标的人或事物. 通过对象思考问题. 软件对象(模拟问题对象) 数据(表示属性) 操作(对象的行为),3,2. 类:对象划分成类. 一类对象的描述. 数据成员 成员函数 对象通过类生成程序设计 以函数为单位; 以类为单位. 程序结构:类结构.,封装,4,用面向对象的程序语言进行程序设计,一个基本工作就是定义程序中所需要的各种对象。采用的方式是先定义对象的类
2、,然后用这些类生成程序中要使用的对象。 把类看成类型, 对象看成变量,用类型声名变量;用类声名对象。 类型 变量名 类 对象,5,2. 类和对象,class 类名 private: 私有的数据和成员函数; public: 公有的数据和成员函数; ; 类是对象的抽象, 是定义对象的一种抽象数据类型;而对象是类的具体实例。,6,class stud private: int num; char name10; char sex; public: void display( ) cout“num”numendl; cout“name”nameendl; cout“sex”sexendl; ;stud
3、 student1, student2 ;,7,访问权限: 类是一个程序范围,在一个类内, private下的成员,仅能被类内的成员函数访问. public下的成员,能被类内的成员函数和外部的函数访问. 访问表示法: 对象名.成员 例: student1.display(),8,public: 成员1; .成员n,不可见部分:private: 成员1; .成员mpublic: 成员函数的实现,用户1可见部分,用户2,用户i,9,构造函数(constructor) 作用: 建立对象时初始化; 建立对象时自动执行; 表示方法: 同类名 和析构函数(destructor) 作用: 对象灭亡时做善后工
4、作; 对象灭亡时系统自动执行它. 表示方法: 类名( ),10,class stud private: int num; char name10; char sex; public: stud( ) num=10010; sex=f ; name=strcpy(name,”Wang_Li”: void display( ) cout“num”numendl; cout“name”nameendl; cout“sex”sexendl; ;stud student1;,11,构造函数可定义如下: stud ( int n, char namee , char s ) num=n; strcpy(n
5、ame, namee); sex=s; stud student1( 10010, “Wang_Li”, f );stud student21( 10011, “Zhang_Fun”, m );,12,构造函数可以重载: stud ( ) num=10010; sex= f ; strcpy(name, “Wang_Li”); stud ( int n, char namee , char s ) num=n; strcpy(name, namee); sex=s; stud student1( );stud student21( 10011, “Zhang_Fun”, m );,13,例 1
6、5.2 含有析构函数#include#includeclass stud private: int num; char name10; char sex; public: stud (int n, char namee , char s ) num=n; sex=s; strcpy(name,namee); stud( ) ,14,void display( ) cout“num”numendl; cout“name”nameendl; cout“sex”sexendl; ;Void main( ) stud student1(10010, “Wang_Li”,f ), student2(10
7、011, “Zhang_Fun”, m); student1.display( ); student2.display( ); ,15,例 15.3 在类的外面定义成员函数#include#includeclass stud private: int num; char name10; char sex; public: stud (int n, char namee , char s ); stud( ) ; display( ); ,16,stud:stud( int n, char namee , char s) num=n; strcpy(name, namee); sex=s; st
8、ud:stud( ) void stud: display( ) cout“num”numendl; cout“name”nameendl; cout“sex”sexendl; ,17,void main( ) stud student1(10010, “Wang_Li”,f ), student2(10011, “Zhang_Fun”, m); student1.display( ); student2.display( ); ,18,用面向对象的术语,访问一个成员函数的过程被称为向对象“发送一个消息”,对象之间通过这种消息发送的方式互相传递信息。 成员函数也称为方法.,19,const对象
9、与const成员函数 用const指定对象不能修改,且若修改会产生语法错误. 例, const time noon(12, 0, 0) ; 仅声明为const 的成员函数能调用(作为消息发送给)const对象.隐含: * const 成员函数不能修改(const对象的)数据成员; * const 成员函数不能调用同一类实例的非 const 成员函数 ; * const对象不能调用非const 成员函数 ;,20,下面是有理数类的例子,21,类的界面描述和实现 我们以数学中有理数作为例子,详细介绍C+语言中提供的各种支持构造类和对象的机制。,22,class rationalpublic: ra
10、tional( ); rational(int); rational(int,int); rational(const rational ,23,通常把一个类的界面定义和类实现的程序代码分放在两个文件里: 界面定义文件,它给出类的定义,其中说明了类的名字、类中各个数据成分的名字和类型、类中各有关操作的名字及操作的参数类型,等等。 实现文件,在这个文件里给出各操作的具体程序代码。,24,类的界面描述本身通常分成两个部分:用关键字public引出的一段(称为公共部分)描述的是类的界面,在这里说明的各种成分在类外部都可以(直接) 引用,而由另一个关键字private开始的一段(私有部分)里定义的各种
11、操作和数据成分则完全是内部的,这些成分用于类的实现,在类外面根本看不见,也就完全不能使用。,25,2.3.1 类的数据域 类定义里通常说明一些存储数据值的域。在程序执行中,这些数据域的值刻画了对象(类的实例)的内部状态。 在有理数类的定义里有两个数据域,它们位于定义的最后部分,这两个域都是整数类型的,名字分别是numerator和denominator,用于表示有理数的分子和分母。,26,2.3.2 对象的行为成员函数 为了实现有理数类,能够表示有理数和说明有理数变量只是问题的一个方面,另一个更重要的方面是需要提供一批能够对有理数进行操作的函数。,27,对有理数的最基本操作是访问其分子和分母,
12、在有理数类里提供了一对函数(num和den)来实现这两个访问操作。 由于一个类可以产生多个实例,因此,在使用函数时必须说明被作用的对象是哪一个实例。C+语言提供的写法是首先指明被操作的对象本身(例如写出一个变量名),后面写一个圆点,随后再给出对这个对象使用的函数。,28,假定left和right是两个有理数变量,下面的表达式将计算出它们的和的分子(值): left.num( )*right.den( )+right.num( )*left.dem( ),29,C+语言里,为类实例的各种行为定义的函数被称为是类的“成员函数”。为了完成有理数类的定义,我们还必须为各个成员函数提供实际实现的代码。
13、在成员函数的头部除了写出函数本身名字外,在它之前还需要给出它所属的类的名字,其具体表示方式是用符号“:”把类名和函数名连接起来。,30,int rational:num( )const return numerator;int rational:den( ) const return denominator;,31,函数的参数表后面写着关键字const,说明该函数的执行不会改变被它作用的实例本身。 例如num和den函数的执行不会对被作用的有理数的值产生任何影响。这种函数被称为“常数函数”。,32,2.3.3 运算符作为成员函数 如果一个运算符需要直接使用类的私有成分,那么它就应该定义为类的成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对象 派生
限制150内