实验2 类的定义与应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)拷贝构造函数那些情况下会被调用,分别给出例子?

相关文档
最新文档