学时类与对象-类的实例化.ppt

上传人:牧羊曲112 文档编号:6268402 上传时间:2023-10-11 格式:PPT 页数:25 大小:295.49KB
返回 下载 相关 举报
学时类与对象-类的实例化.ppt_第1页
第1页 / 共25页
学时类与对象-类的实例化.ppt_第2页
第2页 / 共25页
学时类与对象-类的实例化.ppt_第3页
第3页 / 共25页
学时类与对象-类的实例化.ppt_第4页
第4页 / 共25页
学时类与对象-类的实例化.ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《学时类与对象-类的实例化.ppt》由会员分享,可在线阅读,更多相关《学时类与对象-类的实例化.ppt(25页珍藏版)》请在三一办公上搜索。

1、第三讲 类的实例化,对象定义成员引用对象的操作代码分离,类的实例化-对象,类的实例化即定义类的对象,类似于定义任何类型的变量(类名称为一个新的类型说明符)定义对象有三种形式(1)先声明类类型,后定义对象,class Tdate d1,d2;/把class和Tdate合起来作为一个类名 Tdate d1,d2;/直接用类名定义对象。,(2)在声明类类型的同时定义对象,class Tdate public:void Set(int m,int d,int y)int IsLeapYear()void Print()private:int month;int day;int year;d1,d2;,

2、定义对象有三种形式,(3)不出现类名,直接定义对象编译系统会为这个对象分配存储空间,以存放对象中的成员。,class/无类名 private:/声明以下部分为私有的 public:/声明以下部分为公用的 d1,d2;/定义了两个无类名的类对象,定义对象有三种形式,类说明的一般形式为:class 类名 public:公有段数据成员和成员函数;protected:保护段数据成员和成员函数;private:私有数据成员和成员函数;,注意:允许已定义类名出现在类的说明中,例:class X;class Y X dataMember;,/声明一个类类型数据成员,对象,注意:允许已定义类名出现在类的说明中

3、,例:class X X dataMember;,/错误,错误无穷递归结构,对象,2.对象成员的引用一般对象的成员表示如下:数据成员 对象名.成员名 或 对象指针名-成员名成员函数对象名.成员名(参数表)或对象指针名-成员名(参数表)“.”运算符的功能是表示对象的成员。,对象,成员函数 vs.一般函数 都有函数体,返回值和函数类型。成员函数属于一个类的成员,出现在类体中 成员访问说明符限制private、public 注意调用它的权限以及它的作用域 成员函数必须由对象句柄调用 和数据成员封装成一体,对象,2访问对象中的成员可以有3种方法:通过对象名和成员运算符访问对象中的成员;通过指向对象的指

4、针访问对象中的成员;通过对象的引用变量访问对象中的成员。,class A private:/private说明符在首次出现时可以省略 int m_a;public:/切换到public说明符,以下就是公有成员 int m_b;void print()cout m_a m_bm_c;protected:int m_c;/该成员是保护的;,A a;a.m_a;a.m_c;a.m_b;a.print();,对象,通过指向对象的指针访问对象中的成员;通过对象的引用变量访问对象中的成员。,Time t1;/定义对象t1Time/输出对象t1中的成员hour,Time t,*p;/定义对象t和指针变量pp

5、=/p-hour,(*p).hour和 t.hour,对象,成员的存储方式,用类去定义对象时,系统会为每一个对象分配存储空间。如果一个类包括了数据和函数,要分别为数据和函数的代码分配存储空间。,coutsizeof(Tdate)endl;,由于类和结构是等价的,对类的五种操作对结构也同样适用:(1)对象之间可以相互赋值。Location locationA,locationB;locationA.set(5,6);locationB=locationA;(2)对象可以作为数组的元素。Location arrayloc100;(3)可以说明指向对象的指针,但不能取私有数据成员的指针或成员函数的地

6、址。Location location;Location*pointLoc=当pointLoc被加1后,它将指向下一个Location对象。,对象操作,(4)对象可以作为函数的参数,既可作值参也可以作引用参数。void display(Location(5)一个对象可以是另一个类的成员。,class Timepublic:Time();void set(int,int,int)void print();private:int hour;int minute;int second;Date dd;,class Date public:Date(int,int,int);int get_y;voi

7、d set(int,int,int);void print();private:int month;int day;int year;,对象代码模拟,(student.cpp)#include using namespace std;class Personprivate:/成员访问控制符private,public char name20;/数据成员 char sex;public:/成员函数 void setName(char*s)strcpy(name,s);void setSex(char c);char*getName()return name;char getSex()return

8、 sex;void say()couthello;void run()coutI am running;void jump();,void Person:setSex(char c)if(c=f|c=F|c=m|c=M)sex=c;else sex=m;void Person:jump()coutI am jumpping;,int main(int argc,char*argv)Person p;/定义类对象/调用类成员函数,成员访问运算符p.setName(John);p.setSex(m);coutp.getName()endl;p.run();return 0;,类的封装性和信息隐蔽,

9、类中被操作的数据是私有的,实现的细节对用户是隐蔽的,这种实现称为私有实现。在声明了一个类以后,用户主要是通过调用公用的成员函数来实现类提供的功能。因此,公用成员函数是用户使用类的公用接口,或者说是类的对外接口。软件工程的一个最基本的原则就是将接口与实现分离,信息隐蔽是软件工程中一个非常重要的概念。,1.公用接口与私有实现的分离,类声明和成员函数定义的分离,在面向对象的程序开发中,一般做法是将类的声明放在指定的头文件中,用户如果想用该类,只要把有关的头文件包含进来即可,不必在程序中重复书写类的声明,以减少工作量,节省篇幅,提高编程的效率。由于在头文件中包含了类的声明,因此在程序中就可以用该类来定

10、义对象。由于在类体中包含了对成员函数的声明,在程序中就可以调用这些对象的公用成员函数。为了实现上一节所叙述的信息隐蔽,对类成员函数的定义一般不放在头文件中,而另外放在一个文件中。,/date.hclass Date public:void Set(int m,int d,int y);int IsLeapYear();void Print();private:int month;int day;int year;,自定义类库头文件.h,文件中有用户自行设计的类的定义,包括类的外部接口(公有成员函数的原型)。任何需要使用这些类的源程序,只要在文件中包含这些头文件即可。,/date.cpp#inc

11、lude#include“date.h”void Date:Set(int m,int d,int y)month=m;day=d;year=y;int Date:IsLeapYear()return(year%4=0,用户自定义类库的内部实现源文件,包括相关头文件包含和类中成员函数的定义。这就形成类的实现方法。,类的内部实现,#include#include“date.h”void main()Date a;a.Set(2,4,1998);a.Print();,唯一包含主函数的源文件,包括所有相关头文件及main()。,/student.h class Student public:void

12、 display();private:int num;char name20;char sex;,/student.cpp#include#include student.h void Studentdisplay()coutnum:numendl;coutname:nameendl;coutsex:sexendl;,/main.cpp 主函数模块#include#include student.h/将类声明头文件包含进来int main()Student stud;/定义对象stud.display();/执行stud对象的display函数return 0;,代码练习(分离,实例),实现表

13、示学生的类Student 属性包括名字,学号,性别和三门课的成绩 行为包括:属性的设置和显示等 用代码分离思想实现,课后练习电子版,1.定义一个日期类,有:计算星期几int day()的方法加上若干天Date add(int)的方法减去若干天Date sub(int)的方法显示日期设置日期提示:增加内部函数(1)判断闰年 int isLeapYear();以1970年1月1日为准,到本日期的天数的函数(把日期转化为整数)(2)int dtoi()方法(3)Date itod()方法,练习手写版,1.下面关于对象的描述,错误的是():A.同一个类创建的若干个对象的数据结构和其内容都是不一样的.B.对象的成员表示与C语言中结构变量的成员表示相同.C.一个类可以定义多个对象,指向对象的指针和对象数组.D.一个对象在定义时就被初始化.2.定义一个对象时系统只存储其数据成员,而不存储对象的成员函数,成员函数是同一类的对象所公享的.3.一个类中可以只有公共成员,也可以只有私有成员,也可以都有.4.指向对象的指针的成员表示与对象的成员表示所使用的运算符不同.5.什么是类,什么是对象,他们的区别和联系.,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号