类与对象-类定义 理论讲义

上传人:woxinch****an2018 文档编号:45252771 上传时间:2018-06-15 格式:PPT 页数:28 大小:444KB
返回 下载 相关 举报
类与对象-类定义 理论讲义_第1页
第1页 / 共28页
类与对象-类定义 理论讲义_第2页
第2页 / 共28页
类与对象-类定义 理论讲义_第3页
第3页 / 共28页
类与对象-类定义 理论讲义_第4页
第4页 / 共28页
类与对象-类定义 理论讲义_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《类与对象-类定义 理论讲义》由会员分享,可在线阅读,更多相关《类与对象-类定义 理论讲义(28页珍藏版)》请在金锄头文库上搜索。

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

2、nt sec; ;intint main( ) main( ) Time t1; Time t1;cincint1.hourt1.minute t1.sec;t1.hourt1.minute t1.sec;coutcoutt2.hourt2.minutet2.sec;t2.hourt2.minutet2.sec;coutcout struct Time int hour;int minute;int sec; ; void setTime(Time void showTime( Time void showTime( ); private: int hour;int minute;int se

3、c; ;intint main( ) main( ) Time t1; Time t1; t1.setTime( ); t1.setTime( ); t1.showTime( ); t1.showTime( ); Time t2; Time t2; t2.setTime( ); t2.setTime( ); t2.showTime( ); t2.showTime( ); return 0; return 0; 改用含成员函数的类来处理 9void Time:set_time( ) cinhour;cinminute;cinsec; void Time:show_time( ) couthour

4、minutesec;hourminutesec; void void show_timeshow_time( ) ( ) coutcouthour: hour: minute: minute:sec secendlendl; ; private: private: intint hour; hour; intint minute; minute;intint sec; sec; ;改用含成员函数的类来处理 课堂练习:setTime()加上时间有效性检验101. 在主函数中调用两个成员函数时,应指明对象名 (t1,t2)。表示调用的是哪一个对象的成员函数。2. 在类外定义函数时,应指明函数的作用

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

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

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

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

9、: 数据成员描述对象的属性成员函数描述对象的方法18class 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 void Tdate: print() cout year “.“ mon

10、th “.“ day endl ; 类的声明类的实现在类外定义成员函数19class Tdate public: void set(int m, int d, int y ) month = m ; day = d ; year = y ;int isLeapYear() return ( year%4 = 0 void print() cout year “.“ month “.“ day endl ; private:int month, day,year; ;代码模拟:声明日期类类中定义成员函数内联函数处理20代码练习n定义一个student类,每个学生包含name, sex, numb

11、er, score属性,并且实现显示和 设置这些属性的成员函数。n要求:用到inline关键字21总结n类的概念n类与一般结构体的区别n类的设计n访问权限问题n内联函数22课后作业n1.类中数据成员和成员函数有何区别?n2 类的访问权限有哪些? 并区别之.n3关于类定义格式的描述中,判断对错. A.一般类中包含有数据成员和成员函数.B.一般类的定义格式分为说明部分和实现部分.C.类中成员有三种访问方式:公有,私有和保护.D.成员函数都应是公有的,数据成员都应是私有的.n4关于类的成员函数描述中,判断对错.A.类中可以有一个和多个函数,B成员函数只能定义在类体外C.定义在类体外的成员函数前加in

12、line可以成为内联函数.D.在类外定义成员函数时,在函数名前除了加类型说明符 外,还需用作用域符号来限定改成员函数所属的类.23课后作业5. 下面是Time类的定义部分,找出其中错误: class Time public:/ 函数原型省略private:int hour=0;int minute=0;int second=0; 24课后作业1.设计一个类,实现两个复数的加减运算。2.设计一个点类Point其属性为其x,y坐标,能计 算该点到(0,0)的距离。3.生成一个Rational类,描述最简分数,并进行最 简分数的运算.n两个Rational相加,输出结果的简化形式n两个Rationa

13、l相减,输出结果的简化形式n两个Rational相乘,输出结果的简化形式n两个Rational相除,输出结果的简化形式n按a/b形式打印Rational,其中a为分子,b为分母25课后作业n生成一个Rectangle类,描述长方形,具 有length属性和width属性,其成员函数 计算长方形的perimeter(周长)和area(面 积)。26课后作业n修改课堂上的Time类,用一个tick成员函数将 Time对象中存放的时间递增1秒。Time对象 总是保持一致状态。编写一个main程序,在 循环中测试tick成员函数,按标准格式打印时 间,从而演示tick成员函数的工作情况。要保 证测试下列情况:n递增到下一分钟n递增到下一小时n递增到下一天(即23:59:59到00:00:00)27课后作业n修改课堂上Tdate类,增加成员函数nextDay 将日期递增一天。Tdate对象应该总是保持一 致状态。测试该类,保证下列情况:n递增到下一月n递增到下一年28

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 法律文献 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号