实验报告
课程名称计算机程序设计实验名称类与对象
系别电子信息科学学院专业班级12信管(4)指导教师邹丽新
学号_1姓名:实验日期2013/12/3 实验成绩___________
一、实验目的
1、掌握类的定义和使用方法,掌握类对象的声明和使用方法。
2、掌握对象的初始化和赋值的方法。
3、了解构造函数与析构函数的调用时机与顺序。
二、实验环境
1.硬件环境:微机
2.软件环境:Windows XP;Microsoft Visual C++6.0 集成开发环境。
三、实验内容
1、实验题目:构造一个TimeDate类,在类中包含一个成员函数,用来在屏幕上显示时间与日期。
(1) 基本要求
(a) 题目解析及要求:
1.定义TimeDate类,包含构造函数、析构函数和show成员函数(用于显示时间)。
2.要求在构造函数中增加以下代码:
cout<<"constructing TimeDate..."< 以便在实验中观察构造函数的调用。 3.要求在析造函数中增加以下代码: cout<<"destructing TimeDate..."< 以便在实验中观察析造函数的调用。 4. 在程序中,当这个类对象被创建的时候,当前系统时间与系统日期被作为构造参数传递给它。 (b)提示: 1. 程序设计可建立在标准库time.h中的标准时间与日期函数来寻找与显示日期。time.h文件中的time_t 结构包含时间与日期的所有信息。 2. 调用时间库函数time( )返回一个当前时间时期的time_t类型的数据,其输入参数是time_t的指针, 也可以用来接受当前时间日期的time_t数据。当time函数的参数值为NULL时,其返回值为当前系统的日期与时间。 库函数ctime( )可将time_t数据转换成时间日期的字符串。 (2)实验代码 #include #include class TimeDate { public: TimeDate() { cout<<"constructing TimeDate..."< tm* dt; time_t curr; curr=(time(0)); dt=localtime(&curr); year=dt->tm_year+1900; mon=dt->tm_mon+1; mday=dt->tm_mday; h=dt->tm_hour; m=dt->tm_min; s=dt->tm_sec; } ~TimeDate() { cout<<"destructing TimeDate..."< } void show() { cout< < } private: int year; int mon; int mday; int h; int m; int s; }; int main() { TimeDate curr; curr.show(); return 0; } (3)实验结果 3、实验题目:编写程序,定义类Point,需要满足以下要求: (1)定义构造函数,默认参数值为0,使得用户在main函数中能以如下方式定义对象。 void main( ) { …… Point P1; Point P2(1.3); Point P3(1.3,5.6); …… } (2)重载函数Distance,该函数实现:求平面上两点之间的距离。 (3)定义成员函数Pint,实现输出点的坐标。 (1) 基本要求 (a) 题目解析及要求: 1.类Point适用于平面点,即坐标点由x轴与y轴构成。 2.重载成员函数Distance采用不同的方式求两点之间的距离。一种方法是接收一个类的对象(求点 P1到点P2的距离),第二种方法是接收平面上一个点的坐标来求两点之间的距离(求点P1到点(1.3, 5.6)的距离)。 (b) 提示: 要用到库函数sqrt,因此需要头文件math.h。 函数原型:double sqrt(double x); 函数功能:对数值x开平方。 函数返回:返回数值x开平方的值。 由于编程时要用到这些函数,所以请在预编译行添加下列指令: # include (c)测试数据:(下划线部分为输入数据,下同) 测试输入数据为题目要求(1)中的数值。 输出要求: 显示P1点坐标: X=0 Y=0 显示P2点坐标: X=1.3 Y=0 显示P3点坐标: X=1.3 Y=5.6 P1点至P2点距离:1.3 P1点至点(1.3,5.6)的距离:5.74891 (2)实验代码 #include #include "math.h" class point { public: point(double xx, double yy) { x=xx; y=yy; } void getxy( ); friend double distance(point &a, point &b); private: double x,y; }; void point::getxy( ) { cout<<"("< double distance(point &a, point &b) { double dx=a.x-b.x; double dy=a.y-b.y; return sqrt(dx*dx+dy*dy); } void main( ) { point p1(0,0), p2(1.3,0),p3(1.3,5.6); p1.getxy( ); p2.getxy( ); p3.getxy( ); double d1=distance(p1, p2); double d2=distance(p1, p3); cout<<" P1点至P2点距离:"< cout<<"P1点至点(1.3,5.6)的距离:"< (3)实验结果 四、实验小结 1、实验出错情况及解决办法 实验中会遇到定义上的错误,以及格式/标点等上的疏忽和错误发现问题仔细检查,或是和同学们讨论,以便得到最简洁、高效的c++程序。 2、心得体会 C++是一门需要仔细/耐心学习的学科. 千万别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;不可以浮躁,慢慢的琢磨才会做的更好!