实验2 类的定义与应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验2 类的定义与应用
1、实验目的和要求:
掌握类定义的方法,理解类类型,实例的含义,体会面向对象程序设计中数据隐藏的概念。理解构造函数和析构函数的作用和运行实际,掌握拷贝构造函数的作用。并熟练掌握复杂对象类型的运用。
2、实验内容:
(1)定义一个时间类Time,它能提供由时分秒组成的时间。要求能够修改时间和打印出时间。
数据成员:时、分、秒
成员函数:
各种构造函数
析构函数
可以通过函数分别设置时间的各个组成部分
也可以整体设置时间
有一个tick函数,负责给当前时间加1秒钟,然后输出新的时间
要保证测试下列情况:
a)递增到下一分钟。
b)递增到下一小时。
c)递增到下一天(即11:59:59PM到12:00:00AM)。
(2)定义并测试日期类Date ,包括私有数据成员year, month, day; 公有成员函数实现以下功能:
各种构造函数
设置时间,并对该时间的有效性进行检测
输出时间,按mm/ dd / yyyy方式打印
判断该日期是一年的第几天
(3) 设计并测试complex类,进行复数的四则运算。包括私有数据成员:real, imag;公有成员函数:
Show方法:打印形如(real,imag)的complex值
Set方法: 设置负数的实部和虚部值
get方法:分别获取实部和虚部值
编写一个驱动程序,测试这个类。
class Complex
{
public:
//默认构造函数
//有参构造函数
//复制构造函数
// 析构函数
// 输出复数-5+3i,4 - i 形式的show
// 实现四则运算的成员函数
private:
double real; //实部
double imag; //虚部
};
(4)定义一个分数类如下,要求实现各个成员函数,并在主函数中测试两个分数的加减乘除等运算。
class Rational{
public:
Rational(int nn=1,int mm=1); //构造
Rational R_add(Rational & A); //加
Rational R_sub(Rational & A); //减
void R_mul(Rational & A); //乘
void R_div(Rational & A, Rational &B); //除
void simple( ); //约分
void print(); //以分数形式显示,注意约分
private:
int m; // 分母
int n; // 分子
};
(5)定义一个类包含一个整型数的指针变量,在构造函数中用new分配10各整型数的内存空间,在析构函数中用delete释放内存空间,并编写给内存空间赋值和输出函数。
(6)编写并测试字符串类String
已知类String 的原型为:
class String
{
public:
String(const char *str = NULL); // 普通构造函数
String(const String &other); // 拷贝构造函数
~ String(void); // 析构函数
private:
char *m_data; // 用于保存字符串
};
编写一个主函数,在主函数中对所编写的成员函数进行测试。
(7)定义和实现类Array。数据成员有包含了10个元素的数组,成员函数GetData,有一个整形数参数i,函数返回下标为i的元素值,对一个数组元素的引用,成员函数Print打印出数组的值。构造函数将数据成员的所有数组元素初始化为0。还有一个input成员函数为数组赋值。
(8) 定义类Point.要求定义类对象时,可以有这样的定义语句:
Point p1(1,2),p2(p1);
#include
class Point
{
public:
Point (int a, int b)
{
x=a;y=b;
}
void fun (Point &p);
void fun (Point * p);
private:
int x,y;
};
void fun (Point &p)
{
x=p.x ;
y=p.y ;
cout<< "The fun(Point &p) "< } void Point:: fun (Point *p) { x=p->x ; y=p->y ; cout<< "Fun (Point *p) "< } Void main() { Point p(1,2),q(3,4) ; p.fun(q) ; q.fun(&q) ; } 改正程序中小的错误,给出程序运行的结果,并对程序进行分析。 9)设计一个用于人事管理的People(人员)类。人员属性:number(编号)、name(姓名char*或string) 、sex(性别)、birthday(出生日期)、id(身份证)等。其中“出生日期”定义为一个日期内嵌对象。用成员函数实现对人员信息的录入和显示。要求:用到构造函数和析构函数、内联成员函数、带默认参数的成员函数。 建立完整的工程,分别定义Date.h,Date.cpp,Person.h,Person.cpp,Main.cpp文件 3、思考题: 结合编程实践回答下列的问题。 (1)结合第一个例子,说明什么是类?什么是对象?你是如何理解类和对象的?(2)面向对象的程序设计与结构化程序设计有何不同? (3)拷贝构造函数那些情况下会被调用,分别给出例子?