
类和对象类与对象的概念类的声明和对象的定.ppt
26页信息分院计算机教研室好那汉三捍匈没纽嘘能劣恢抬肌甸蚊甭耘趁伟臭肌驯獭增氓词绣缠瞬众倚类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定第第8章章 类和对象类和对象8.1 类与对象的概念类与对象的概念 8.2 类的声明和对象的定义类的声明和对象的定义8.3 类的成员函数类的成员函数8.4 对象成员的引用对象成员的引用8.5 类和对象的简单应用示例类和对象的简单应用示例8.6 类的封装性和信息隐藏类的封装性和信息隐藏绘挖役乔悄义右舀尘响泰禄手销娇葱瓜嘿漏必转缺唾微菱迂高纬凰只眼掣类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定本学期的教学特点与学习方法本学期的教学特点与学习方法§教学特点教学特点«课堂课堂讲重点、主线讲重点、主线要求记笔记,记重点要求记笔记,记重点——学会把握讲学会把握讲课的重点是一种通用能力课的重点是一种通用能力«课堂示例课堂示例与课本的例子不同与课本的例子不同——扩大学习容量扩大学习容量课堂示例课堂示例会在实验报告中以实验内容提供,以便同学们复习会在实验报告中以实验内容提供,以便同学们复习«课前课后课前课后必须认真看课本内容,消化课堂教学的理论内容。
必须认真看课本内容,消化课堂教学的理论内容«实验任务实验任务与课堂教学同步安排,但不是简单的验证课堂教与课堂教学同步安排,但不是简单的验证课堂教学内容实验任务的问题注重概念、引导思考,学内容实验任务的问题注重概念、引导思考,需要在认需要在认真阅读课本后完成真阅读课本后完成«书面作业书面作业注重设计能力的训练注重设计能力的训练§学习方法学习方法«课堂上听懂,注意作笔记;课堂上听懂,注意作笔记;«以教材、笔记为参考,完成实验任务和书面作业;以教材、笔记为参考,完成实验任务和书面作业;«课后对照教材、笔记、实验报告、书面作业进行复习课后对照教材、笔记、实验报告、书面作业进行复习供李钻疫虐汝坦栓阑奸胀攫混樊柞酉谓臻理赢庸季慈虎惨府厚顽套挪慑素类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定面向过程与面向对象:思想方法的不同面向过程与面向对象:思想方法的不同§第一学期的程序设计:注重程序设计第一学期的程序设计:注重程序设计步骤步骤«面向过程:考虑问题从程序设计运行的面向过程:考虑问题从程序设计运行的“步骤步骤”入手入手——细节的丰富与多样性,使细节的丰富与多样性,使“设计设计”成为成为“艺术艺术”§面向对象的程序设计:思想方法的进步面向对象的程序设计:思想方法的进步«从整体到细节,从一般到具体从整体到细节,从一般到具体——思想方法思想方法«更贴近人的思维方式更贴近人的思维方式v观察一个新事物的过程观察一个新事物的过程——我们的学校我们的学校l环境:教学区、生活区、休闲区环境:教学区、生活区、休闲区u教学区:教学室、实验室、体育运动设施教学区:教学室、实验室、体育运动设施u生活区:宿舍、食堂、店铺、马路生活区:宿舍、食堂、店铺、马路l组织:学院组织:学院-分院分院-专业专业-班级班级l人员:老师、同学人员:老师、同学隋等扮逻瞒黔隘昭桥鬃薄目友郴坝护氦栏员瑟服板抒逆房莆彦枢胳判什渗类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定本次课重点本次课重点§介绍介绍C++的一种新的数据类型的一种新的数据类型——类与对象类与对象«“类类”类型定义的语法规范类型定义的语法规范«“对象对象”的定义与使用的语法规范的定义与使用的语法规范«类与对象的物理意义类与对象的物理意义«以类和对象为基础的程序设计示例以类和对象为基础的程序设计示例画扒谨寿勘逾鼎万暖菜顽滚撇憋衡茂棋饼莉睡屹通芝沁堰氏史岩荧询翌解类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定例:例:“时钟时钟”对象的对象的C++描述描述§时钟的基本特征时钟的基本特征«时间属性的数量描述时间属性的数量描述v时(时(hour))v分(分(minute))v秒(秒(second))«我们可以对时钟的操作我们可以对时钟的操作v设置时间:设置时间:l调整时间(对调整时间(对hour,minute,second的改变)的改变)v读取时间:读取时间:l获取时间属性的具体数值(获取时间属性的具体数值( 输出输出hour,minute,second ))§某种某种时钟时钟产品有多个产品有多个----不同的时钟不同的时钟对象对象,,而这一种时钟产品就称为一种时钟的而这一种时钟产品就称为一种时钟的类型类型----类类9 9::2323::4242辐绦睦哗出虞光咳焚义暗禾拙玖抒汞藉邦钮苯息油反掣愈庞碗悬矢虐柱聊类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定用用C++语言的语言的“类类”模型描述模型描述“时钟时钟”classclass Time Time{ {privateprivate: :////定义时钟的基本属性定义时钟的基本属性—相当于机械钟的齿轮相当于机械钟的齿轮intint hour, minute, second; hour, minute, second;publicpublic: :////定义时钟的基本功能定义时钟的基本功能voidvoid SetTime( SetTime(intint h, h, intint m, m, intint s) s){ {////设置时间设置时间hour=h;minute=m;second=s;hour=h;minute=m;second=s;} }voidvoid GetTime( GetTime(intint &h, &h, intint &m, &m, intint &s) &s){ {////读取时间读取时间h=hour; m=minute; s=second;h=hour; m=minute; s=second;} }};};从外界对时钟设从外界对时钟设置时间:比如时置时间:比如时钟的设置按钮钟的设置按钮外界获取时钟外界获取时钟的时间:比如的时间:比如时钟的表盘或时钟的表盘或屏幕屏幕虽夹酥耶普政诫婚公骡夺猎豫都捏金切咸宰墙撑庄翌审昼择面庚昏熔雷柔类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定class Time{private: int hour, minute, second;public:void SetTime(int h, int m, int s){hour=h;minute=m;second=s;}void GetTime(int &h, int &m, int &s){h=hour; m=minute; s=second;}};在类里包含了数据成员在类里包含了数据成员和操作数据成员的成员和操作数据成员的成员函数,实现了把数据和函数,实现了把数据和操作封装在一起。
操作封装在一起成员访问限定符成员访问限定符,,在定义体开始处如在定义体开始处如不指定,则默认为不指定,则默认为私有私有privateprivate从时钟的描述形式看类的声明方法从时钟的描述形式看类的声明方法关键字关键字类类Time类型名类型名成员访问限定符成员访问限定符,,以下成员为公有以下成员为公有成员成员publicpublic数据成员数据成员函数成员函数成员类体结束类体结束私有成员,只有类内部定私有成员,只有类内部定义的函数可以访问义的函数可以访问公有成员,类内部、外部公有成员,类内部、外部定义的函数都可以调用定义的函数都可以调用撂片井稚傲普讣陀揪扯汇棺瞥及酥竿表颇蓉砷栅遍痈拈府演跑告庚瓢鸯问类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定对象的定义对象的定义§类的定义只是定义了类的定义只是定义了一种类型一种类型,说明有这样一种事物说明有这样一种事物要创建要创建这个种类的具体事物这个种类的具体事物,需要,需要定义对象定义对象注意:注意:类定义创建了新的数据类型,只是类型说明,还类定义创建了新的数据类型,只是类型说明,还没有定义存储空间(变量),并没有创建实际的对象。
没有定义存储空间(变量),并没有创建实际的对象创建对象的语法:指定存储空间创建对象的语法:指定存储空间 Time t1 ,t2;class Time{private: int hour, minute, second;public: void SetTime(int h, int m, int s) { hour=h;minute=m;second=s; } void GetTime(int &h, int &m, int &s) { h=hour; m=minute; s=second; }};类名类名对象名对象名胆钠土臻司桓释私嗽钟椭掌软钝巴债回深瞳瘪甫值军叉还没训讨但削肪痛类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定对象的使用对象的使用v使用对象的方式有使用对象的方式有三种三种::v整个对象整个对象v对象的数据成员对象的数据成员v对象的函数成员;对象的函数成员;v对象成员的使用要受到对象成员的使用要受到访问控制访问控制的影响,需要特别注意。
的影响,需要特别注意v使用对象的数据成员只能通过间接方式使用对象的数据成员只能通过间接方式(调整时钟的时间、读出时钟的时间)(调整时钟的时间、读出时钟的时间)Time t1, t2;t1.SetTime(9,23,42);int hh,mm,ss;t1.Gettime(hh,mm,ss);cout<
文件,和避免重复加载§实现的原则:实现的原则:«公用接口和私有成员的分离公用接口和私有成员的分离«类声明和成员函数定义的分离类声明和成员函数定义的分离伞字页据间椿纶汝蚕欣纶缘钢龚搓绎蓬鹿酪崔靖奄供绕柞哪抉证抽阑只乓类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定分离方法:成员函数原型与函数实现的分离分离方法:成员函数原型与函数实现的分离§一般把类的一般把类的数据成员设置为私有数据成员设置为私有,不允许外,不允许外界直接访问数据成员,界直接访问数据成员,公用成员函数充当使公用成员函数充当使用类的用类的公用接口公用接口§公用成员函数的代码一般是不公开的,其中公用成员函数的代码一般是不公开的,其中实现的细节是隐蔽的实现的细节是隐蔽的 DoorSetTimeGetTimehour,minute,secondhourminutesecond鸦屋堵恳堪状慰转诸嘲幌绵胰奋殿帅叹晰禁观讫撞隅鸿霞籍访毫楔襄风恐类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定术语:方法、消息术语:方法、消息§类的成员函数:方法类的成员函数:方法——对象产生操作的方法对象产生操作的方法§调用成员函数的程序语句:给对象发送消息调用成员函数的程序语句:给对象发送消息int h,m,s;t1.GetTime(h,m,s);给对象给对象t1t1发出一个消息,通发出一个消息,通知它执行其中的知它执行其中的GetTimeGetTime方法,方法,得到其私有成员得到其私有成员hour,minute,secondhour,minute,second的数值,的数值,保存到变量保存到变量h,m,sh,m,s里。
里分字缝像者渗趾闽舌狱幸莎写轿霜速戒譬库哥钱瓣或怔垂宫衙缔震消陆讹类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定成员函数的另一种定义方式:成员函数的另一种定义方式: 在类框架以外定义成员函数:在类框架以外定义成员函数:§成员函数可以直接在类成员函数可以直接在类{ }里定义,也可以里定义,也可以先先在类在类{ }里声明里声明,然后,然后在类外定义在类外定义区分声明与定义区分声明与定义))class Time {private: int hour, minute, second;public:void SetTime(int h, int m, int s) //定义定义{ hour=h;minute=m;second=s;}void GetTime(int &h, int &m, int &s); //声明声明};void Time::GetTimeTime::GetTime(int &h, int &m, int &s) //定义定义{ h=hour; m=minute; s=second; }作用域运算符:优先级最高作用域运算符:优先级最高类名类名函数返回函数返回值类型值类型Time::表明该函数属表明该函数属于于Time类的成员类的成员思考:为什么用引用?思考:为什么用引用?粳蜘羊侵农结儒避紊借总姬莹粟吉缩艰叶包陨索午英制帛舵坐糕絮疯符谷类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定作用域运算符作用域运算符 “::”§正确使用作用域运算符:正确使用作用域运算符:«在在类内部类内部声明和定义成员函数时不需要加作用域声明和定义成员函数时不需要加作用域运算符;运算符;«在在类外部类外部定义类的成员函数时,需要定义类的成员函数时,需要在类名后加在类名后加作用域运算符,标明该成员函数的作用域运算符,标明该成员函数的隶属特性隶属特性;;«如果在外部定义函数时加了作用域运算符如果在外部定义函数时加了作用域运算符::,但,但在前面没有加类名,或者既无类名又无作用域运在前面没有加类名,或者既无类名又无作用域运算符,定义的都是算符,定义的都是普通的全局函数普通的全局函数,如:,如:::display() 或或 display()郎攫翌汝捧厂哉扼椿虐争岳暖阔袭轰世教涩鸥排俯盈虾炭婶括锰模间佬酌类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定常见的类定义形式常见的类定义形式class Time {private: int hour, minute, second;public:void SetTime(int h, int m, int s);; //原型声明原型声明void GetTime(int &h, int &m, int &s); //声明声明};void Time::Time::SetTime(int h, int m, int s) //函数定义函数定义{ hour=h;minute=m;second=s;}void Time::Time::GetTimeGetTime(int &h, int &m, int &s) //定定义义 { h=hour; m=minute; s=second; }脉锰疲巍仆羌幕溪度扬脑勇睬豆芬令侨厅红烽啪其嘻岩会畦哉缠爱腊蚁靴类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定常见的类定义形式常见的类定义形式class Time{private: int hour, minute, second;void judge() ;;public:void SetTime(int h, int m, int s);;void GetTime(int &h, int &m, int &s);;};void Time::judge() { //确保时间数据合理性确保时间数据合理性if(hour>23 || hour<0) hour=0;if(minute>59 || minute<0) minute=0;if(second>59 || second<0) second=0;}void Time:: SetTime(int h, int m, int s){ hour=h;minute=m;second=s; judge(); }void Time:: GetTime(int &h, int &m, int &s){ h=hour; m=minute; s=second; }类的声明类的声明类的实现(成员函数的实现)类的实现(成员函数的实现)伴泰祁崖功汲庄仟栖滋轴寓倦斋溃预醚恕规炙训篷后镇平欠牧忱裔丸渝粘类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定完整的程序:类的定义完整的程序:类的定义 + 运行程序运行程序void main(){Time t1, t2;int x, y, z;int hh,mm,ss;char yorn; do{cin>>x>>y>>z;t1.SetTime(x, y, z);t1.GetTime(hh,mm,ss);cout<<“Now time is :”< 计算器计算器输出屏幕1592603in748outmax«设想有一种计算器,能存设想有一种计算器,能存储一组整数,且能找出其储一组整数,且能找出其最大值最大值 ——一种计算器一种计算器类型类型::v数据属性:可存储数据属性:可存储10个整数个整数的数组,记录最大值的变量;的数组,记录最大值的变量;v功能(方法或操作):接收功能(方法或操作):接收数据、输出数据、查找最大数据、输出数据、查找最大值、输出最大数;值、输出最大数;class Array_max{ public:void set_value();void show_value();void max_value();void show_max(); private:int array[10]; int max;};钟庙借悸酥蔬吃力独孺婚杖频贺良漂宅隘幽帽照促藩莱谍摘施恫铅宫面耘类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定简单应用举例简单应用举例void Array_max::set_value(){ for (int k=0;k<10;k++) cin>>array[k];}void Array_max::show_value(){ for (int k=0;k<10;k++) cout< 下面下面要建立一个这种机器的要建立一个这种机器的“对象对象”(即实体),并写出(即实体),并写出“动作动作指令指令”,以完成功能以完成功能void main(){ Array_max arr; arr.set_value(); arr.show_value(); arr.max_value(); arr.show_max();}跋旺募冯宜襄世柑效滤咎灭诛祈德舜慑氢舅曙袭苟皇殴殃忌惶痹棒搬湍氏类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定小结:用类方法进行程序设计的步骤小结:用类方法进行程序设计的步骤§确定要解决的问题范围确定要解决的问题范围«已知什么,求解什么已知什么,求解什么§建立建立与问题相关的类与问题相关的类§定义对象定义对象§操作对象操作对象«接收已知数据接收已知数据«处理已知数据处理已知数据«输出处理结果输出处理结果呜厨鸵沉寇实父叛技至备毡摔氏慢橙络裸举目它陛蓄介较克揽卵树广奄忧类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定教材使用方法教材使用方法§说明说明«可以以任何程度开始学习第八章内容可以以任何程度开始学习第八章内容«如果有看不明白的地方,第一次、第二次可以跳过去先如果有看不明白的地方,第一次、第二次可以跳过去先看后面的看后面的«按照建议的页数学习,可以与教学同步按照建议的页数学习,可以与教学同步§阅读、复习内容和要求如下阅读、复习内容和要求如下«要求:掌握术语;掌握类的设计规范;掌握对象的使用要求:掌握术语;掌握类的设计规范;掌握对象的使用方法方法——下周上课要检查复习情况下周上课要检查复习情况«内容:内容:vP231-237vP238-241,定义对象的方法只要掌握一种就可以。 定义对象的方法只要掌握一种就可以v8.3.1 , 8.3.2vP255-261欧屯橡躲无失富掘迢尔容爱圾鄙卷篓驰粗绸窒洁绥誓荒颇佐柳硝纲厄襄禁类和对象类与对象的概念类的声明和对象的定类和对象类与对象的概念类的声明和对象的定。





![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)






