类和对象类与对象的概念类的声明和对象的定.ppt

上传人:小飞机 文档编号:6329512 上传时间:2023-10-17 格式:PPT 页数:26 大小:292KB
返回 下载 相关 举报
类和对象类与对象的概念类的声明和对象的定.ppt_第1页
第1页 / 共26页
类和对象类与对象的概念类的声明和对象的定.ppt_第2页
第2页 / 共26页
类和对象类与对象的概念类的声明和对象的定.ppt_第3页
第3页 / 共26页
类和对象类与对象的概念类的声明和对象的定.ppt_第4页
第4页 / 共26页
类和对象类与对象的概念类的声明和对象的定.ppt_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《类和对象类与对象的概念类的声明和对象的定.ppt》由会员分享,可在线阅读,更多相关《类和对象类与对象的概念类的声明和对象的定.ppt(26页珍藏版)》请在三一办公上搜索。

1、第8章 类和对象8.1 类与对象的概念 8.2 类的声明和对象的定义8.3 类的成员函数8.4 对象成员的引用8.5 类和对象的简单应用示例8.6 类的封装性和信息隐藏,本学期的教学特点与学习方法,教学特点课堂讲重点、主线。要求记笔记,记重点学会把握讲课的重点是一种通用能力。课堂示例与课本的例子不同扩大学习容量。课堂示例会在实验报告中以实验内容提供,以便同学们复习。课前课后必须认真看课本内容,消化课堂教学的理论内容。实验任务与课堂教学同步安排,但不是简单的验证课堂教学内容。实验任务的问题注重概念、引导思考,需要在认真阅读课本后完成。书面作业注重设计能力的训练。学习方法课堂上听懂,注意作笔记;以

2、教材、笔记为参考,完成实验任务和书面作业;课后对照教材、笔记、实验报告、书面作业进行复习。,面向过程与面向对象:思想方法的不同,第一学期的程序设计:注重程序设计步骤面向过程:考虑问题从程序设计运行的“步骤”入手细节的丰富与多样性,使“设计”成为“艺术”面向对象的程序设计:思想方法的进步从整体到细节,从一般到具体思想方法更贴近人的思维方式观察一个新事物的过程我们的学校环境:教学区、生活区、休闲区教学区:教学室、实验室、体育运动设施生活区:宿舍、食堂、店铺、马路组织:学院-分院-专业-班级人员:老师、同学,本次课重点,介绍C+的一种新的数据类型类与对象“类”类型定义的语法规范“对象”的定义与使用的

3、语法规范类与对象的物理意义以类和对象为基础的程序设计示例,例:“时钟”对象的C+描述,时钟的基本特征时间属性的数量描述时(hour)分(minute)秒(second)我们可以对时钟的操作设置时间:调整时间(对hour,minute,second的改变)读取时间:获取时间属性的具体数值(输出hour,minute,second)某种时钟产品有多个-不同的时钟对象,而这一种时钟产品就称为一种时钟的类型-类,int hour;int minute;int second;,9:23:42,用C+语言的“类”模型描述“时钟”,class Timeprivate:/定义时钟的基本属性相当于机械钟的齿轮i

4、nt hour,minute,second;public:/定义时钟的基本功能void SetTime(int h,int m,int s)/设置时间hour=h;minute=m;second=s;void GetTime(int,从外界对时钟设置时间:比如时钟的设置按钮,外界获取时钟的时间:比如时钟的表盘或屏幕,class Timeprivate:int hour,minute,second;public:void SetTime(int h,int m,int s)hour=h;minute=m;second=s;void GetTime(int,在类里包含了数据成员和操作数据成员的成员

5、函数,实现了把数据和操作封装在一起。,成员访问限定符,在定义体开始处如不指定,则默认为私有private。,从时钟的描述形式看类的声明方法,关键字,类Time类型名,成员访问限定符,以下成员为公有成员public,数据成员,函数成员,私有成员,只有类内部定义的函数可以访问。,公有成员,类内部、外部定义的函数都可以调用。,对象的定义,类的定义只是定义了一种类型,说明有这样一种事物。要创建这个种类的具体事物,需要定义对象。注意:类定义创建了新的数据类型,只是类型说明,还没有定义存储空间(变量),并没有创建实际的对象。创建对象的语法:指定存储空间 Time t1,t2;,class Timepriv

6、ate:int hour,minute,second;public:void SetTime(int h,int m,int s)hour=h;minute=m;second=s;void GetTime(int,对象的使用,使用对象的方式有三种:整个对象对象的数据成员对象的函数成员;对象成员的使用要受到访问控制的影响,需要特别注意。使用对象的数据成员只能通过间接方式(调整时钟的时间、读出时钟的时间),Time t1,t2;t1.SetTime(9,23,42);int hh,mm,ss;t1.Gettime(hh,mm,ss);couthh“:”mm“:”ss;coutendl;,给对象t1

7、中的私有数据成员hour,minute,second赋值(间接),获取对象t1中的私有数据成员hour,minute,second的数据(间接),思考:为什么不能直接对数据成员赋值和输出?,实验:一个这样的程序有什么问题?void main()Time t1,t2;t1.hour=9;t1.minute=23;t1.second=42;coutt1.hour“:”t1.minute“:”t1.second;coutendl;语法上的解释:访问控制现实中的解释:用户不会拆开钟表调整时针!-封装内部构件-隐藏内部构件运转的细节,class Timeprivate:int hour,minute,s

8、econd;public:void SetTime(int h,int m,int s)hour=h;minute=m;second=s;void GetTime(int,更加灵活的设计时钟的时间任意设置,void main()Time t1,t2;int x,y,z;cinxyz;t1.SetTime(x,y,z);int hh,mm,ss;t1.GetTime(hh,mm,ss);couthh“:”mm“:”ssendl;,多次运行程序还有什么可以改进的吗?,void main()Time t1,t2;int x,y,z;int hh,mm,ss;char yorn;docinxyz;t1

9、.SetTime(x,y,z);t1.GetTime(hh,mm,ss);coutyorn;while(yorn=y|yorn=Y);cout“Have a nice day!”endl;,接口函数与工具函数,例:改进功能的Time控制输入数据class Timeprivate:int hour,minute,second;void judge()/确保时间数据合理性if(hour23|hour59|minute59|second0)second=0;public:void SetTime(int h,int m,int s)hour=h;minute=m;second=s;judge();v

10、oid GetTime(int,工具函数,只被Settime()函数调用,小结语法,“类”class:一种C+的类型“对象”:按照“类”类型产生的一个具体实例,在语法规则方面类似“变量”,但内涵方面不同于普通变量一个对象内部,包含有数据成员、函数成员访问对象的成员是受限的private成员:普通函数不能访问,只有成员函数可以访问public成员:所有函数都可以访问访问对象的成员要用“.”运算符一般大部分对象的数据成员被限定为private,小结类的封装性和信息隐蔽,封装:两层含义把一个对象的数据与可以进行的操作“捆绑”在一起放在 class 框架中通过访问控制机制 private和public

11、,把可以公开的信息与不能公开的信息分隔开来封装性和信息隐蔽的目的保证安全性,尽可能不让对象以外的函数直接使用对象数据成员;为保密起见,尽可能不公开成员函数的代码;为使用方便和减小开销,在使用类时只需加载尽可能少的文件,和避免重复加载。实现的原则:公用接口和私有成员的分离类声明和成员函数定义的分离,分离方法:成员函数原型与函数实现的分离,一般把类的数据成员设置为私有,不允许外界直接访问数据成员,公用成员函数充当使用类的公用接口。公用成员函数的代码一般是不公开的,其中实现的细节是隐蔽的。,int hour;int minute;int second;,Door,SetTime,GetTime,ho

12、ur,minute,second,private member,hourminutesecond,术语:方法、消息,类的成员函数:方法对象产生操作的方法调用成员函数的程序语句:给对象发送消息,int h,m,s;t1.GetTime(h,m,s);,给对象t1发出一个消息,通知它执行其中的GetTime方法,得到其私有成员hour,minute,second的数值,保存到变量h,m,s里。,成员函数的另一种定义方式:在类框架以外定义成员函数:,成员函数可以直接在类 里定义,也可以先在类 里声明,然后在类外定义。(区分声明与定义),class Time private:int hour,minu

13、te,second;public:void SetTime(int h,int m,int s)/定义 hour=h;minute=m;second=s;void GetTime(int,Time:表明该函数属于Time类的成员,思考:为什么用引用?,作用域运算符“:”,正确使用作用域运算符:在类内部声明和定义成员函数时不需要加作用域运算符;在类外部定义类的成员函数时,需要在类名后加作用域运算符,标明该成员函数的隶属特性;如果在外部定义函数时加了作用域运算符:,但在前面没有加类名,或者既无类名又无作用域运算符,定义的都是普通的全局函数,如::display()或 display(),常见的类定

14、义形式,class Time private:int hour,minute,second;public:void SetTime(int h,int m,int s);/原型声明void GetTime(int,常见的类定义形式,class Timeprivate:int hour,minute,second;void judge();public:void SetTime(int h,int m,int s);void GetTime(int,类的声明,类的实现(成员函数的实现),完整的程序:类的定义+运行程序,void main()Time t1,t2;int x,y,z;int hh,

15、mm,ss;char yorn;docinxyz;t1.SetTime(x,y,z);t1.GetTime(hh,mm,ss);coutyorn;while(yorn=y|yorn=Y);cout“Have a nice day!”endl;,简单应用举例,例8.4,用类的方法进行设计,找出一组整数中的元素的最大值。,设想有一种计算器,能存储一组整数,且能找出其最大值 一种计算器类型:数据属性:可存储10个整数的数组,记录最大值的变量;功能(方法或操作):接收数据、输出数据、查找最大值、输出最大数;,class Array_max public:void set_value();void sh

16、ow_value();void max_value();void show_max();private:int array10;int max;,简单应用举例,void Array_max:set_value()for(int k=0;karrayk;void Array_max:show_value()for(int k=0;kmax)max=arrayk;,class Array_max public:void set_value();void show_value();void show_max();void max_value();private:int array10;int max

17、;,至此只定义了这种“机器”的规格,还没有机器实体。下面要建立一个这种机器的“对象”(即实体),并写出“动作指令”,以完成功能。,void main()Array_max arr;arr.set_value();arr.show_value();arr.max_value();arr.show_max();,小结:用类方法进行程序设计的步骤,确定要解决的问题范围已知什么,求解什么建立与问题相关的类定义对象操作对象接收已知数据处理已知数据输出处理结果,教材使用方法,说明可以以任何程度开始学习第八章内容如果有看不明白的地方,第一次、第二次可以跳过去先看后面的按照建议的页数学习,可以与教学同步阅读、复习内容和要求如下要求:掌握术语;掌握类的设计规范;掌握对象的使用方法下周上课要检查复习情况内容:P231-237P238-241,定义对象的方法只要掌握一种就可以。P255-261,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号