面向对象程序设计实验报告学生.docx

上传人:b****5 文档编号:7415389 上传时间:2023-01-23 格式:DOCX 页数:23 大小:42.88KB
下载 相关 举报
面向对象程序设计实验报告学生.docx_第1页
第1页 / 共23页
面向对象程序设计实验报告学生.docx_第2页
第2页 / 共23页
面向对象程序设计实验报告学生.docx_第3页
第3页 / 共23页
面向对象程序设计实验报告学生.docx_第4页
第4页 / 共23页
面向对象程序设计实验报告学生.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

面向对象程序设计实验报告学生.docx

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

面向对象程序设计实验报告学生.docx

面向对象程序设计实验报告学生

 

面向对象程序设计

 

实验报告

 

计算机学院

张永

 

南昌航空大学实验报告

二00七年月日

课程名称:

面向对象程序设计实验名称:

类与结构

班级:

XXXXXXX学生姓名:

XXXXXX学号:

指导教师评定:

XX签名:

XXXXX

1、实验目的

·学习掌握声明和定义类及成员。

·学习掌握访问类对象成员。

·学习掌握保护数据如何屏蔽外部访问的原理,更好的认识类的封装

2、实验内容

(1)

定义一个满足下列要求的Date类:

①用下面的格式输出日期:

日/月年

②可运行在日期上加一天操作

③设置日期

//Date.h

#include

usingnamespacestd;

classDate{

public:

voidDisplay();

voidAddOneDay();

voidSetDay(inty,intm,intd);

protected:

boolLegal(inty,intm,intd);

boolIsLeapYear(inty);

intyear;

intmonth;

intday;

};

(2)

定义一个时间类Time,能提供和设置由时、分、秒组成的时间,并编出应用程序,定义时间对象,设置时间,输出该对象提供的时间。

并将类定义作为接口,用多文件结构实现之。

//Time.h

classTime

{

public:

Time();

voidPrint();

voidSet(int,int,int);

protected:

intmin;

intsec;

inthour;

};

南昌航空大学实验报告

二00七年月日

课程名称:

面向对象程序设计实验名称:

静态成员与友元

班级:

XXXXXXX学生姓名:

XXXXXX学号:

指导教师评定:

XX签名:

XXXXX

1、实验目的

·学习友元函数的定义和原理。

·学习静态数据成员和静态成员函数的使用。

·学习静态成员代替全局变量实现对象间的共享。

2、实验内容

(1)有如下类的定义。

类成员函数copy用于实现两个对象的相互拷贝,请完成该函数的实现。

(有两种方法即不用this指针和用this指针)

#include

classMyclass

{public:

Myclass(inta,intb){x=a;y=b;}

voidcopy(Myclass&my);

voidprint()

{cout<<“x=”<

cout<<”y=”<

}

private:

intx,y;

};

voidmain()

{Myclassmy(10,20),t(30,40);

my.print();

my.Copy(t);

my.print();

}

成员函数实现:

#include

classMyclass

{public:

Myclass(inta,intb){x=a;y=b;}

voidcopy(Myclass&my);

voidprint()

{cout<<"x="<

cout<<"y="<

}

private:

intx,y;

};

友员函数实现:

#include

classMyclass

{public:

Myclass(inta,intb){x=a;y=b;}

friendvoidcopy(Myclass&o,Myclassy);

voidprint()

{cout<<"x="<

cout<<"y="<

}

private:

intx,y;

};

(2)商店经销一种货物,货物成箱购进,成箱卖出,购进和卖出时以重量为单位,各箱的重量不一样,单价不一样,因此商店需要记录下目前库存的货物的总重量和总价值。

编写一个程序,通过定义类Carlo来模拟商店货物购进和卖出的情况。

(本题目主要练习静态数据成员的使用,定义私有变量存每件货物的价格和重量,用静态数据成员存货物的总重量和总价钱,定义构造函数和析构函数,当定义新的对象完成初始化的功能和删除对象时,从总重量和总价钱中减去对象的重量和价格)

//Menu.h

#ifndefMENU_H

#defineMENU_H

classMenu

{public:

intshow();

};

#endif;

//Carlo.h

classCarlo

{public:

Carlo(doubleWeight=0,doublePrice=0);

virtual~Carlo();

voidSetCarlo(double=0,double=0);

constdouble&GetCurrentTotalWeight()const;

constdouble&GetCurrentTotalPrice()const;

voidBuyBox();

voidSellBox();

voidShowBoxInfor()const;

protected:

staticdoubleTotalWeight;

staticdoubleTotalPrice;

private:

doubleBoxWeight;

doubleBoxPrice;

};

//Carlo.cpp

#include

#include"Carlo.h"

usingnamespacestd;

doubleCarlo:

:

TotalPrice=0.0;

doubleCarlo:

:

TotalWeight=0.0;

Carlo:

:

Carlo(doubleWeight,doublePrice)

{

}

voidCarlo:

:

BuyBox()

{

}

constdouble&Carlo:

:

GetCurrentTotalPrice()const

{returnTotalPrice;

}

constdouble&Carlo:

:

GetCurrentTotalWeight()const

{returnTotalWeight;

}

voidCarlo:

:

SetCarlo(doubleWeight,doublePrice)

{

}

voidCarlo:

:

SellBox()

{

}

voidCarlo:

:

ShowBoxInfor()const

{

}

Carlo:

:

~Carlo()

{

}

//Menu.cpp

#include

#include

#include"Menu.h"

usingnamespacestd;

intMenu:

:

show()

{

}

//CarloDemo.cpp

#include

#include"Menu.h"

#include"Carlo.h"

usingnamespacestd;

voidmain()

{

}

南昌航空大学实验报告

二00七年月日

课程名称:

面向对象程序设计实验名称:

构造函数与析构函数

班级:

XXXXXXX学生姓名:

XXXXXX学号:

指导教师评定:

XX签名:

XXXXX

1、实验目的

·理解类与对象的区别。

·学习掌握定义构造函数与析构函数的方法。

·学习把握默认构造函数的意义。

·了解类成员初始化,掌握构造与析构类成员的方式。

2、实验内容

(1)

创建一个Employee类,该类中用字符数组存放Employee的信息,如姓名、地址、市、省、及邮政编码;每个成员函数的定义放在类定义之外;成员函数包括改变姓名数据成员等;构造函数完成成员数据的初始化;用Display()函数将完整的对象数据打印出来;其中数据成员是保护的,成员函数是公共的。

#include

#include

#include

usingnamespacestd;

classEmployee

{

public:

Employee(charn[20],chara[50],chars[20],charsh[20],charp[6]);

voidChangeName(charch_name[20]);

voidDisplay();

protected:

charname[20];

charaddress[50];

charshi[20];

charsheng[20];

charpost[6];

};

(2)设计一个表示矩形的类Rect,其矩形成员长float*Length,宽float*Width为指针变量,设计相应成员函数,实现下列功能:

①构造函数设置长和宽(默认为1)。

②复制构造函数用老对象生成新对象。

③set()函数设置长和宽(默认为0)。

④计算并返回长方形的周长。

⑤计算并返回长方形的面积。

⑥析构函数释放动态分配的长和宽。

编制主程序应用指针建立对象测试类。

#include

classRect{

float*Length,*Width;

public:

Rect(floata=1,floatb=1);

Rect(Rect&);

voidset(floata=0,floatb=0);

floatperi();

floatarea();

~Rect(){deleteLength;deleteWidth;}

};

南昌航空大学实验报告

二00七年月日

课程名称:

面向对象程序设计实验名称:

继承与多态性

班级:

XXXXXXX学生姓名:

XXXXXX学号:

指导教师评定:

XX签名:

XXXXX

1、实验目的

了解类的两种使用方式

学习从现有类派生出新类的方式

了解在派生类中如何使用基类的成员

了解基类成员在派生类中的访问控制

了解虚函数对多态性的支持

2、实验内容

题目:

应用多态设计学生类

生成表示学生的类XS,提供成员函数dispXM()、dispXB()和dispNL()分别用来显示姓名、性别和年龄,并将他们全部定义为纯虚函数;生成CZS类表示初中生,包含数据成员xm、xb和nl表示学生的姓名、性别和年龄,提供成员函数dispXM()、dispXB()和dispNL()分别用来显示姓名、性别和年龄;再生成类GZS表示高中生和类DXS表示大学生,同样包含相同含义的数据成员xm、xb和nl,也包括成员函数dispXM()、dispXB()和dispNL()。

实验要求

①设计和实现基类XS。

②设计和实现派生类CZS、GZS、DXS。

③分别生成CZS、GZS、DXS类的对象。

④将CZS、GZS、DXS类对象的地址赋给XS类的指针变量。

⑤分别用XS类的指针和引用访问dispXM()、dispXB()和dispNL()函数。

⑥观察程序结果。

#include

#include

usingnamespacestd;

//设计抽象类(XS)表示学生类,定义其中dispXM(),dispXB(),dispNL()三个函数为纯虚函数

classXS{

public:

virtualvoiddispXM()=0;

virtualvoiddispXB()=0;

virtualvoiddispNL()=0;

};

/*定义CZS类,使其继承XS类,包含三个数据成员xm(4个以内汉字,默认名为"张三"),

xb(int型,1表示男,0表示女,默认为1),nl(int型,默认为14);定义构造函数,

初始化各数据成员.另:

实现基类的三个纯虚函数,显示各数据成员.

*/

classCZS:

publicXS{

public:

CZS(char*m="张三",intb=1,intn=14);

voiddispXM();

voiddispXB();

voiddispNL();

protected:

charxm[9];

intxb,nl;

};

//仿照上面的写法,定义高中生类(GZS)和大学生类(DXS)

classGZS:

publicXS{

public:

GZS(char*m="张三",intb=1,intn=17);

voiddispXM();

voiddispXB();

voiddispNL();

protected:

charxm[9];

intxb,nl;

};

classDXS:

publicXS{

public:

DXS(char*m="张三",intb=1,intn=20);

voiddispXM();

voiddispXB();

voiddispNL();

protected:

charxm[9];

intxb,nl;

};

//主函数

voidmain()

{

CZSczs("赵一",1,12);

GZSgzs("钱二",0,15);

DXSdxs("孙三",1,18);

XS*p;//定义抽象基类的指针变量p

p=&czs;//将初中生对象czs的地址赋给p

displayP(p);

p=&gzs;//将高中生对象czs的地址赋给p

displayP(p);

p=&dxs;//将大学生对象czs的地址赋给p

displayP(p);

cout<<"\n----------------------------------------\n";

XS&r1=czs;//定义抽象基类的引用变量r1为czs的别名

displayR(r1);

XS&r2=gzs;//定义抽象基类的引用变量r2为czs的别名

displayR(r2);

XS&r3=dxs;//定义抽象基类的引用变量r3为czs的别名

displayR(r3);

cout<<"\n----------------------------------------\n";

}

南昌航空大学实验报告

二00七年月日

课程名称:

面向对象程序设计实验名称:

运算符重载

班级:

XXXXXXX学生姓名:

XXXXXX学号:

指导教师评定:

XX签名:

XXXXX

1、实验目的

·学习掌握重定义与类有关的运算符。

·把握重载运算符的时机。

·学习掌握把一个类对象转换为另一个类对象。

·学习掌握重载为成员与友元的区别及其带参数的情况。

·学习掌握值返回与引用返回的区别及应用时机。

2、实验内容

(1)

生成一个表示复数的类FS。

复数的实部sb和虚部xb作为其数据成员。

提供成员函数disp()显示复数(格式:

-3+5i或6-2i),重载“+”、“-”为FS类的成员函数,用来计算两个复数的和、差。

思路导航:

①定义类,设计构造函数和显示函数print();

②重载运算符“+”、“-”为类FS的成员函数。

③实例化FS类的2个对象,并利用重载的运算符对其进行计算。

另外,根据上述定义,试将上述的运算符重载成员函数改写成友元函数。

#include

usingnamespacestd;

classFS{

doublesb,xb;

public:

FS(doublea=0,doubleb=0);

FS&operator+(FS&);

FS&operator-(FS&);

voidprint();

};

voidmain()//主函数

{

FSa(-8,3),b(7,-4);

FSc1;c1=a+b;

a.print();cout<<"+";b.print();cout<<"=";c1.print();

cout<

FSc2;c2=a-b;

a.print();cout<<"-";b.print();cout<<"=";c2.print();

cout<

}

//运算符重载为友元函数

#include

usingnamespacestd;

classFS{

doublesb,xb;

public:

FS(doublea=0,doubleb=0);

friendFSoperator+(FS&,FS&);

friendFSoperator-(FS&,FS&);

voidprint();

};

voidmain()//主函数

{

FSa(8,3),b(7,-14);

FSc1;c1=a+b;

a.print();cout<<"+";b.print();cout<<"=";c1.print();

cout<

FSc2;c2=a-b;

a.print();cout<<"-";b.print();cout<<"=";c2.print();

cout<

}

(2)

编写一个时间类,实现时间的加、减、读和输出:

//class.h

classTime

{

public:

Time(){}

voidSetTime();

voidDisplay();

Timeoperator+(Time&a);

Timeoperator-(Time&a);

private:

inthour,minute,second;

};

//function.cpp

#include

#include"class.h"

voidTime:

:

SetTime()

{

}

voidTime:

:

Display()

{

cout<

"<

"<

}

TimeTime:

:

operator+(Time&a)

{

}

TimeTime:

:

operator-(Time&a)

{

}

//overload.cpp

#include

#include"class.h"

usingnamespacestd;

voidmain()

{

Timea,b,c;

cout<<"请输入A的时间:

"<

a.SetTime();

cout<<"请输入B的时间:

"<

b.SetTime();

cout<<"A的时间为:

";

a.Display();

cout<<"B的时间为:

";

b.Display();

cout<<"c=a+b=";

c=a+b;

c.Display();

cout<

c=a-b;

c.Display();

}

南昌航空大学实验报告

二00七年月日

课程名称:

面向对象程序设计实验名称:

动态链接库的制作与调用

班级:

XXXXXXX学生姓名:

XXXXXX学号:

指导教师评定:

XX签名:

XXXXX

一用所学的内容编写一个动态链接库的文件

1、实验目的

(1)了解和掌握类和指向函数的指针的使用。

(2)了解和掌握宏的使用,

(3)掌握动态链接库文件创建的过程。

2、实验要求

熟练掌握动态链接库文件的创建

3、实验步骤与内容

题目:

创建一个动态链接库,实现画一棵树。

1).启动VisualC++6.0或者C++Builder5.0

.在WINDOWS98或WINDOWS2000环境下,找到VisualC++6.0或者C++Builder5.0图标,双击之。

为了不使VisualC++6.0或者C++Builder5.0的默认搜索路径与WINDOWS其他软件相冲突,清修改VisualC++6.0或者C++Builder5.0图标的属性。

在属性|程序|批处理一栏中填上你自己的批处理程序名。

以便启动时,首先运行你的批处理程序。

然后在该批处理程序中,写上path=...路径。

2).设置用户程序子目录

设置用户程序子目录的目的是,将所有编程时产生的中间文件和最终执行程序文件全部

放在自己的目录中,以便管理。

3).创建和输入程序

VisualC++6.0启动后,要先建立一个project工程文件。

方法为:

·选择File|new菜单项,将弹出New对话框。

·单击Projects选项卡

·在Location中填用户子目录路径

·在Projectname中填入工程名(如MyDll)

·在列表中选择MFCAppWizard(dll),表示你编制的应用程序将生成动态链接库文件(.dll)

·按照提示创建一个自己想要的工程

✧定位到mydll.h文件处,添加动态链接库的函数原型声明,下面为mydll.h的内容:

//MyDll.h:

mainheaderfilefortheMYDLLDLL

#include"resource.h"//mainsymbols

/////////////////////////////////////////////////////////////////////////////

//CMyDllApp

//SeeMyDll.cppfortheimplementationofthisclass

//

intDrawTree(CPaintDC*dc,intxStart,intyStart,doublelength,doubleangle,intnum);

classCMyDllApp:

publicCWinApp

{

public:

CMyDllApp();

//Overrides

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX_VIRTUAL(CMyDllApp)

public:

virtualBOOLInitInstance();

//}}AFX_VIRTUAL

//{{AFX_MSG(

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

当前位置:首页 > 高等教育 > 理学

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

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