资源预览内容
第1页 / 共31页
第2页 / 共31页
第3页 / 共31页
第4页 / 共31页
第5页 / 共31页
第6页 / 共31页
第7页 / 共31页
第8页 / 共31页
第9页 / 共31页
第10页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
实验一 类和对象的基本操作实验目的:l 掌握定义类、实现类的方法;l 领会面向对象程序设计的基本思想和方法;实验内容:l 在多个程序文件中实现类的定义及对象的使用实验步骤:1、实例一在计算机中处理数据有时是无限的,例如在平面中的角度在0-359之间,如果在359上再加1,则角度变成0,同样,从0再减1,则成为359。类似的还有星期、月份等,我们设计一个通用的循环计数器类,能够设置循环计数器的起止范围,并进行基本操作。(1)头文件此文件中声明循环计数器类。/文件crinum.h#ifndef _CN#define _CNclass Circular_Numberpublic:void set_mode(int,int);/设置循环计数器的上下界void set_value(int);/设置循环计数器的当前值int get_value();/取循环计数器的当前值void increment();/累加循环计数器void decrement();/累减循环计数器private:int min_val;/最小值int max_val;/最大值int current;/当前值;#endif(2)循环计数器类的实现文件/文件cirnum.cpp#includecirnum.hvoid Circular_Number:set_mode(int min,int max)min_val=(min=max)?min:max;max_val=(min=max)?max:min;void Circular_Number:set_value(int value)if(valuemax_val)current=max_val;else current=value;int Circular_Number:get_value()return current;void Circular_Number:increment()int mode=max_val-min_val+1;current=(current-min_val)+1)%mode+min_val;void Circular_Number:decrement()int mode=max_val-min_val+1;current=(current-min_val)-1+mode)%mode+min_val;(3)应用文件/文件test.cpp#include#includecirnum.hvoid main()int loop;Circular_Number angle; /角度循环计数器Circular_Number month; /月份循环计数器angle.set_mode(0,359);angle.set_value(200);month.set_mode(1,12);month.set_value(9);coutthe initial angle is angle.get_value()endl;coutthe initial month is month.get_value()endl;for(loop=1;loop=100;loop+)angle.increment();coutthe current angle is angle.get_value()endl;for(loop=1;loop=300;loop+)angle.decrement();coutthe current angle is angle.get_value()endl;for(loop=1;loop=10;loop+)month.increment();coutthe current month is month.get_value()endl;for(loop=1;loop=15;loop+)month.decrement();coutthe current month is month.get_value()endl;2、实例二我们设计一个简单日期类,其中包含月、日、年,并能够进行判断是否闰年、设置日期等基本操作。(1)头文件/文件Tdate.hclass Tdatepublic: void Set(int m, int d, int y);int IsLeapYear();void Print();private:int month;int day;int year;(2)实现文件/文件Tdate.cpp#include#includeTdate.hvoid Tdate:Set(int m, int d, int y) month=m;day=d;year=y;int Tdate:IsLeapYear()return (year%4=0 & year%100!=0) | (year %400=0);void Tdate:Print()coutmonth/day/yearendl;(3)应用程序#includeTdate.hvoid main() Tdate a; a.Set(3,18,2001); a.Print();3、思考问题(1)面向对象程序设计方法相对于过程化程序设计方法的优势有哪些;(2)为什么类可以实现数据封装和信息隐藏;(3)用设置函数来给数据成员进行设置值是否合理;(4)我们自己设计的类本质上是什么;实验报告设计内容实验内容定义一个MyDate类,其中成员有:1、包含三个私有数据成员year、month、day。2、公有成员函数及其功能描述如下:(1)有默认值的构造函数。(2)更改年月日成员函数(3)更改年成员函数(4)更改月成员函数(6)更改年成员函数(7)获取年值成员函数(8)获取月值成员函数(9)获取中文月值成员函数(10)获取日值成员函数 (11)显示日期成员函数(12)判断闰年成员函数实验二 类成员的基本操作实验目的:l 理解在面向对象程序设计中构造函数所处的地位和作用;l 掌握构造函数和析构函数的使用方法;l 理解构造函数重载的必要性;l 理解使用拷贝构造函数的需要性及深拷贝与浅拷贝的不同;l 掌握定义和使用拷贝构造函数的方法;l 理解为什么要使用静态成员及其用法;实验内容:l 编制一个类,并在其中编制多种构造函数和析构函数来更好地理解构造的方法与析构的次序;l 在类中编制拷贝构造函数,l 用静态数据成员实现链表的操作。l 用静态函数成员实现链表的操作查找操作。实验步骤:1、实例一我们用上次实验中的循环计数器为例,其带构造函数的实现如下。(1)头文件/crinum.hclass Circular_Numberpublic:Circular_Number(int min,int max,int value);int get_value();/取循环计数器的当前值void increment();/累加循环计数器void decrement();/累减循环计数器 Circular_Number();private:int min_val;/最小值int max_val;/最大值int current;/当前值;(2)实现文件/crinum.cpp#includecirnum.hCircular_Number:Circular_Number(int min,int max,int value)min_val=(min=max)?min:max;max_val=(min=max)?max:min;if(valuemax_val)current=max_val;else current=value; coutconstruct Circular_Numberendl;int Circular_Number:get_value()return current;void Circular_Number:increment()int mode=max_val-min_val+1;current=(current-min_val)+1)%mode+min_val;void Circular_Number:decrement()int mode=max_val-min_val+1;current=(current-min_val)-1+mode)%mode+min_val;Circular_Number:Circular_Number()coutdestruct Circular_Numberendl;(3)应用程序#include#includecirnum.hvoid main()int loop;Circular_Number angle(0,359,200); /角度循环计数器Circular_Number month(1,12,9); /月份循环计数器 coutthe initial angle is angle.get_value()endl;coutthe initial month is month.get_value()endl;for(loop=1;loop=100;loop+)angle.increment();coutthe current angle is angle.get_value()endl;for(loop=1;loop=300;loop+)angle.decrement();coutthe current angle is angle.get_value()endl;for(loop=1;loop=10;loop+)month.increment();coutthe current month is month.get_value()endl;for(loop=1;loop=15;loop+)month.decrement();coutthe current month is
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号