02_C++课件_类与对象-类定义.ppt_第1页
02_C++课件_类与对象-类定义.ppt_第2页
02_C++课件_类与对象-类定义.ppt_第3页
02_C++课件_类与对象-类定义.ppt_第4页
02_C++课件_类与对象-类定义.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,第二讲 类与对象类定义,类的概念 类与结构体 类的定义 访问权限 内联函数,2,课堂练习,定义时钟结构体 定义两个函数实现时间设置和时间输出功能(要求形参是引用类型) 在主函数中调用两个函数,3,是面向对象编程的程序基本单位(面向过程呢?) 类是数据和操作数据的函数的封装(想想结构体) 类的对象使用自己的方法完成对数据的操作 类可以隐藏数据和操作细节,何为类?,4,struct Time int hour; / 0-23 int minute; / 0-59 int second; / 0-59 ;,结构类,5,#include struct Time int hour; int minu

2、te; int sec; ;,int main( ) Time t1; cint1.hourt1.minute t1.sec; coutt2.hourt2.minutet2.sec; coutt2.hour:t2.minute :t2.secendl; return 0; ,setTime(t1);,setTime(t2);,showTime( t1 );,showTime( t2 );,void setTime(Time,void showTime(Time,结构类,6,#include struct Time int hour; int minute; int sec; ; void se

3、tTime(Time ,int main( ) Time t1; setTime(t1); showTime(t1); Time t2; setTime(t2); showTime(t2); return 0; ,结构类,7,1.1 类,class Time private : 关于时间的数据; public : 读取时间值 ; 调整时间值 ; ;,类是数据和 操作数据的函数的封装,结构类,8,class Time private : int hour; int minute; int second; ;,public : void set(int,int,int); void get( );

4、,对象使用自己的方法 对数据操作,结构类,9,#include class Time public: void setTime( ); void showTime( ); private: int hour; int minute; int sec; ;,int main( ) Time t1; t1.setTime( ); t1.showTime( ); Time t2; t2.setTime( ); t2.showTime( ); return 0; ,改用含成员函数的类来处理,10,void Time:set_time( ) cinhour; cinminute; cinsec; voi

5、d Time:show_time( ) couthour : minute : secendl; ,class Time public: void setTime( ) cinhourminutesec; void show_time( ) couthour: minute: secendl; private: int hour; int minute; int sec; ;,改用含成员函数的类来处理,课堂练习:setTime()加上时间有效性检验,11,在主函数中调用两个成员函数时,应指明对象名(t1,t2)。表示调用的是哪一个对象的成员函数。 2. 在类外定义函数时,应指明函数的作用域(如

6、void Timeset_time( )。在成员函数引用本对象的数据成员时,只需直接写数据成员名,这时C+系统会把它默认为本对象的数据成员。也可以显式地写出类名并使用域运算符。 3. 应注意区分什么场合用域运算符“”,什么场合用成员运算符“.”,不要搞混。,注意,12,类的声明,面向对象编程的基础是把自己的数据类型定义为类,类是用户定义的数据类型。 定义一个类后,就可以用类名声明类类型的变量,即将类实例化为不同的对象; C+中用关键字class定义包含数据成员和成员函数的类型。类使程序员可以构造对象的属性和行为或操作。,13,声明类类型,类是一种用户自定义的数据类型,它的一般定义格式如下: c

7、lass 类名 private: 私有数据成员和成员函数; protected: 保护数据成员和成员函数; public: 公有数据成员和成员函数; ; 各个成员函数的实现;(类外或类内) *数据成员不能有初值;,14,访问控制,成员访问说明符 公有 public: 说明为公有的成员可以被程序中的任何代码访问; 私有 private: 说明为私有的成员只能被类本身的成员函数及友元 类成员函数或友元函数访问,默认类的对象的成员是私有; 保护 protected: 除了类本身的成员函数和说明为友元函数或友元类的成员函数可以访问保护成员外,该类的派生类的成员也可以访问。,15,访问控制,privat

8、e声明的数据和函数不能在类以外访问 public声明的数据和函数可以在类以外访问 默认为private访问类型的,类,数据和函数,私有,公有,无法从类的外部访问,可以从类的外部访问,数据和函数,16,成员函数,成员函数为描述对象的方法 一般定义为公用的 类定义中的成员函数被默认创建为内联函数 可在类的外部定义成员函数 如果成员函数在类体外定义,可以用关键字inline声明为内联函数。,在类的外部定义成员函数的语法: 返回类型 类名:成员函数名(参数列表) 函数定义体 ,双冒号称为域名解析分解符,17,内联函数,使用原因: 提高效率 使用方式: inline 前缀,类内部函数实现缺省为内联函数。

9、 工作原理: 函数代码扩展嵌入到调用处,并非调用,为编译指令,代码容量增大(一般是小函数),但减少调用的系统开销;程序运行速度快。 使用限制: 与编译器有关 (1)不能包括循环分支转移语句。 (2)不能递归。 (3)不能包含static语句。 存取函数通常被定义为内联函数,18,class Tdate private: int month; int day; int year; public: void set(int m, int d, int y ) ; int isLeapYear( ); void Print(); ;,代码模拟:声明日期类,类由成员构成: 数据成员描述对象的属性 成员

10、函数描述对象的方法,19,class Tdate public: void set(int m, int d, int y ) ; int IsLeapYear(); void Print( ); private: int month; int day;int year; ; void Tdate:Set(int m, int d, int y ) month = m ; day = d ; year = y ; int Tdate: isLeapYear() return ( year%4 = 0 ,类的声明,类的实现,在类外定义 成员函数,20,class Tdate public: vo

11、id set(int m, int d, int y ) month = m ; day = d ; year = y ; int isLeapYear() return ( year%4 = 0 ,代码模拟:声明日期类,类中定义成员函数 内联函数处理,21,代码练习,定义一个student类,每个学生包含name, sex, number, score属性,并且实现显示和设置这些属性的成员函数。 要求:用到inline关键字,22,总结,类的概念 类与一般结构体的区别 类的设计 访问权限问题 内联函数,23,课后作业,1.类中数据成员和成员函数有何区别? 2 类的访问权限有哪些? 并区别之.

12、 3关于类定义格式的描述中,判断对错. A.一般类中包含有数据成员和成员函数. B.一般类的定义格式分为说明部分和实现部分. C.类中成员有三种访问方式:公有,私有和保护. D.成员函数都应是公有的,数据成员都应是私有的. 4关于类的成员函数描述中,判断对错. A.类中可以有一个和多个函数, B成员函数只能定义在类体外 C.定义在类体外的成员函数前加inline可以成为内联函数. D.在类外定义成员函数时,在函数名前除了加类型说明符外,还需用作用域符号来限定改成员函数所属的类.,24,课后作业,5. 下面是Time类的定义部分,找出其中错误: class Time public: / 函数原型

13、省略 private: int hour=0; int minute=0; int second=0; ,25,课后作业,设计一个类,实现两个复数的加减运算。 设计一个点类Point其属性为其x,y坐标,能计算该点到(0,0)的距离。 生成一个Rational类,描述最简分数,并进行最简分数的运算. 两个Rational相加,输出结果的简化形式 两个Rational相减,输出结果的简化形式 两个Rational相乘,输出结果的简化形式 两个Rational相除,输出结果的简化形式 按a/b形式打印Rational,其中a为分子,b为分母,26,课后作业,生成一个Rectangle类,描述长方形,具有length属性和width属性,其成员函数计算长方形的perimeter(周长)和area(面积)。,27,课后作业,修改课堂上的Time类,用一个tick成员函数将Time对象中存放的时间递增1秒

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论