面向对象程序设计实验报告学生.docx
- 文档编号:7415389
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:23
- 大小:42.88KB
面向对象程序设计实验报告学生.docx
《面向对象程序设计实验报告学生.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计实验报告学生.docx(23页珍藏版)》请在冰豆网上搜索。
面向对象程序设计实验报告学生
面向对象程序设计
实验报告
计算机学院
张永
南昌航空大学实验报告
二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(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 实验 报告 学生