c++面向对象实验报告.docx

上传人:b****5 文档编号:6469895 上传时间:2023-01-06 格式:DOCX 页数:14 大小:18.30KB
下载 相关 举报
c++面向对象实验报告.docx_第1页
第1页 / 共14页
c++面向对象实验报告.docx_第2页
第2页 / 共14页
c++面向对象实验报告.docx_第3页
第3页 / 共14页
c++面向对象实验报告.docx_第4页
第4页 / 共14页
c++面向对象实验报告.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

c++面向对象实验报告.docx

《c++面向对象实验报告.docx》由会员分享,可在线阅读,更多相关《c++面向对象实验报告.docx(14页珍藏版)》请在冰豆网上搜索。

c++面向对象实验报告.docx

c++面向对象实验报告

实验一类与对象

一、实验目的

1、掌握类的声明和使用。

2、掌握类的声明和对象的声明。

3、复习具有不同访问属性的成员的访问方式。

4、观察构造函数和析构函数的执行过程。

5、学习类的组合使用方法。

6、使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。

二、实验任务

1、声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。

其中,rank为枚举类型CPU_Rank,声明为enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。

观察构造函数和析构函数的调用顺序。

2、声明一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。

cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。

3、(选作)设计一个用于人事管理的People(人员)类。

考虑到通用性,这里只抽象出所有类型人员都具有的属性:

number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。

其中“出生日期”声明为一个“日期”类内嵌子对象。

用成员函数实现对人员信息的录入和显示。

要求包括:

构造函数和析构函数、拷贝构造函数、内联成员函数、组合。

1、#include

usingnamespacestd;

enumCPU_Rank{p1=1,p2,p3,p4,p5,p6,p7};

classCPU

{private:

CPU_Rankrank;

intfreauency;

floatvoltage;

public:

CPU(CPU_Rankr,intf,floatv)

{rank=r;

freauency=f;

voltage=v;

cout<<"ThisisCPUconstructprogram"<

~CPU()

{cout<<"ThisisCPUdestroyfunction"<

voidrun(){cout<<"TheCPUisrunning"<

voidstop(){cout<<"TheCPUisStopping"<

};

intmain()

{

enumCPU_Rankrank;

rank=p5;

CPUcpu1(rank,1024,;

();

();

return0;

}

运行结果:

ThisisCPUconstructprogram

TheCPUisrunning

TheCPUisStopping

ThisisCPUdestroyfunction

2、#include

usingnamespacestd;

enumCPU_Rank{p1=1,p2,p3,p4,p5,p6,p7};

classCPU

{private:

CPU_Rankrank;

intfreauency;

floatvoltage;

public:

CPU(CPU_Rankr=p1,intf=0,floatv=0)

{rank=r;

freauency=f;

voltage=v;

cout<<"ThisisCPUconstructprogram"<

~CPU()

{cout<<"ThisisCPUdestroyfunction"<

voidrun(){cout<<"TheCPUisrunning"<

voidstop(){cout<<"TheCPUisStopping"<

};

classRAM

{private:

intrank;

intsize;

public:

RAM(intr=0,ints=0)

{rank=r;

size=s;}

voidrun(){cout<<"TheRAMisrunning"<

voidstop(){cout<<"TheRAMisStopping"<

};

classCDROM

{private:

intrank;

intsize;

public:

CDROM(intr=0,ints=0)

{rank=r;

size=s;}

voidrun(){cout<<"TheCDROMisrunning"<

voidstop(){cout<<"TheCDROMisStopping"<

};

classComputer

{

private:

CPUcpu;

RAMram;

CDROMcdrom;

public:

Computer(CPUc,RAMr,CDROMcd)

{cout<<"ThisistheComputerConstruct"<

cpu=c;

ram=r;

cdrom=cd;}

voidrun()

{cout<<"ThisisComputerisrunning"<

();

();}

voidstop()

{cout<<"ThisisComputerisstop"<

();

();}

};

intmain()

{enumCPU_Rankrank;

rank=p5;

CPUcpu1(rank,1024,;

RAMram(5,1024);

CDROMcdrom(5,1024);

Computercp(cpu1,ram,cdrom);

();

();

return0;

}

实验二C++程序结构

1、实验目的

1.观察程序运行中的变量的作用域、生存期和可见性。

2.学习类的静态成员的使用。

3.学习多文件结构在C++程序中的使用。

2、实验任务

1.运行下面程序,2.观察变量x、y的值。

实现客户机(CLIENT)类。

定义字符型静态数据成员ServerName,4.保存其服5.务器名6.称:

整型静态数据成员ClientNum,7.记录已定义的客户数量;定义静态函数ChangeServerName()改变服8.务器名9.称。

在头文件中定义类,10.在文件中实现,11.在文件中测试这个类,12.观察相应的成员变量取值的变化情况。

实验二C++程序结构

1、实验目的

1.观察程序运行中的变量的作用域、生存期和可见性。

2.学习类的静态成员的使用。

3.学习多文件结构在C++程序中的使用。

2、实验任务

1.运行下面程序,2.观察变量x、y的值。

3.实现客户机(CLIENT)类。

定义字符型静态数据成员ServerName,4.保存其服务器名称:

整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。

在头文件中定义类,在文件中实现,在文件中测试这个类,观察相应的成员变量取值的变化情况。

三、实验结果

1.

2.服务器名称为:

N

客户机数量为:

2

服务器名称为:

A

实验源代码:

1.#include

usingnamespacestd;

voidfn1();

intx=1,y=2;

voidmain()

{

cout<<"Begin..."<

cout<<"x="<

cout<<"y="<

cout<<"Evaluatexandyinmain()..."<

intx=10,y=20;

cout<<"x="<

cout<<"y="<

cout<<"Stepintofn1()..."<

fn1();

cout<<"Backinmain"<

cout<<"x="<

cout<<"y="<

return0;

}

voidfn1()

{

inty=200;

cout<<"x="<

cout<<"y="<

}

2.//

#include

#include

usingnamespacestd;

classCLIENT

{

private:

staticcharServerName;

staticintClientNum;

public:

CLIENT();

~CLIENT();

staticintGetClientNum();

staticvoidChangServerName(charname);

staticcharGetServerName();

};

//

#include""

CLIENT:

:

CLIENT()

{

ClientNum++;

}

CLIENT:

:

~CLIENT()

{

ClientNum--;

}

intCLIENT:

:

GetClientNum()

{

returnClientNum;

}

voidCLIENT:

:

ChangServerName(charname)

{

ServerName=name;

}

charCLIENT:

:

GetServerName()

{

returnServerName;

}

//

#include<>

#include""

intCLIENT:

:

ClientNum=0;

charCLIENT:

:

ServerName='N';

intmain()

{

CLIENTa;

CLIENTb;

cout<<"服务器名称为:

"<

:

GetServerName()<

CLIENT:

:

ChangServerName('A');

cout<<"客户机数量为:

"<

:

GetClientNum()<

cout<<"服务器名称为:

"<

:

GetServerName()<

}

实验三数组与指针

一、实验目的

1、学习使用数组。

2、学习字符串数据的组织和处理。

3、掌握指针的使用方法。

4、练习通过debug观察指针的内容及其所指的对象的内容。

5、练习通过动态内存分配实现动态数组,并体会指针在其中的作用。

二、实验任务

1、测试3X3矩阵转置函数的程序,程序如下:

#include

usingnamespacestd;

voidmove(intmatrix[3][3])

{

inti,j,k;

for(i=0;i<3;i++)

for(j=0;j

{

k=matrix[i][j];

matrix[i][j]=matrix[j][i];

matrix[j][i]=k;

}

}

intmain()

{

inti,j;

intdata[3][3];

cout<<"输入矩阵的元素"<

for(i=0;i<3;i++)

for(j=0;j<3;j++)

{

cout<<"第"<

<<"个元素为:

";

cin>>data[i][j];

}

cout<<"输入的矩阵的为:

"<

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

cout<

cout<

}

move(data);

cout<<"转置后的矩阵的为:

"<

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

cout<

cout<

}

}

2、使用动态内存分配生成动态数组来重新设计一个3X3矩阵转置函数,使用指针实现函数的功能。

3、编程实现两字符串的连接。

要求使用字符数组保存字符串,不要使用系统函数。

4、使用String类定义字符串对象,重新实现上一小题。

(选作)5、定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。

display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。

实现并测试这个类。

(提示:

对字符数组的赋值可以使用字符串拷贝函数strcpy(char*,char*,name))。

(选作)6、定义包含个5元素的对象数组,每个元素都是Employee类型的对象。

实验四继承与派生

一、实验目的

1、学习定义和使用类的继承关系,定义派生类。

2、熟悉不同继承方式下对基类成员的访问控制。

3、学习利用虚基类解决二义性问题。

二、实验任务

1、定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(intn)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗编程试试看。

2、定义一个基类BaseClass,有整型成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。

3、定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run,Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,自行车类具有高度(Height)等属性,汽车类有座位数(SeatNum)等属性。

从bicycle和motorcar类派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。

如果不把设置为虚基类,会有什么问题编程试试看。

实验结果:

1、errorC2248:

'age':

cannotaccessprivatememberdeclaredinclass'Animal'

改正方案:

将Animal类中私有成员age换成公共成员。

2、构造基类对象!

构造派生类对象!

析构派生类对象!

析构基类对象!

3、Nowitisrunning!

Nowithasstopped!

//如果vehicle不是虚基类,有错误:

errorC2385:

'motorcycle:

:

Run'isambiguous

……

源程序:

1、#include

usingnamespacestd;

classAnimal

{

private:

intage;

public:

Animal(){};

~Animal(){};

};

classDog:

privateAnimal

{

public:

Dog(){};

~Dog(){};

voidSetAge(intn){age=n;}

};

intmain()

{

Doga;

(10);

return0;

}

2、#include

usingnamespacestd;

classBaseClass

{

public:

BaseClass(){cout<<"构造基类对象!

"<

~BaseClass(){cout<<"析构基类对象!

"<

};

classDerivedClass:

publicBaseClass

{

public:

DerivedClass(){cout<<"构造派生类对象!

"<

~DerivedClass(){cout<<"析构派生类对象!

"<

};

intmain()

{

DerivedClassd;

}

3、nclude

usingnamespacestd;

classvehicle

{

private:

intMaxSpeed;

intWeight;

public:

vehicle(){MaxSpeed=0;Weight=0;};

~vehicle(){};

voidRun(){cout<<"Nowitisrunning!

"<

voidStop(){cout<<"Nowithasstopped!

"<

};

classbicycle:

virtualpublicvehicle

{

private:

intHeight;

public:

bicycle(){};

~bicycle(){};

};

classmotorcar:

virtualpublicvehicle

{

private:

intSeatNum;

public:

motorcar(){};

~motorcar(){};

};

classmotorcycle:

publicbicycle,publicmotorcar

{

public:

motorcycle(){};

~motorcycle(){};

};

intmain()

{

motorcyclea;

();

();

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学反思汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1