《面向对象程序设计实验报告(学生).docx》由会员分享,可在线阅读,更多相关《面向对象程序设计实验报告(学生).docx(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象程序设计实验报告(学生) 面向对象程序设计 实验报告 计算机学院 张永 南昌航空大学实验报告 二00七年月日 课程名称:面向对象程序设计实验名称:类与结构 班级: XXXXXXX 学生姓名: XXXXXX 学号: 指导教师评定: XX 签名: XXXXX 1、实验目的 学习掌握声明和定义类及成员。 学习掌握访问类对象成员。 学习掌握保护数据如何屏蔽外部访问的原理,更好的认识类的封装 2、实验内容 (1) 定义一个满足下列要求的Date类: 用下面的格式输出日期:日/月年 可运行在日期上加一天操作 设置日期 /Date.h #include using namespace std; cl
2、ass Date public: void Display(); void AddOneDay(); void SetDay(int y,int m,int d); protected: bool Legal(int y, int m, int d); bool IsLeapYear(int y); int year; int month; int day; ; (2) 定义一个时间类Time,能提供和设置由时、分、秒组成的时间,并编出应用程序,定义时间对象,设置时间,输出该对象提供的时间。并将类定义作为接口,用多文件结构实现之。 /Time.h class Time public: Time
3、(); void Print(); void Set(int,int,int); protected: int min; int sec; int hour; ; 南昌航空大学实验报告 二00七年月日 课程名称:面向对象程序设计实验名称:静态成员与友元 班级: XXXXXXX 学生姓名: XXXXXX 学号: 指导教师评定: XX 签名: XXXXX 1、实验目的 学习友元函数的定义和原理。 学习静态数据成员和静态成员函数的使用。 学习静态成员代替全局变量实现对象间的共享。 2、实验内容 (1)有如下类的定义。类成员函数copy用于实现两个对象的相互拷贝,请完成该函数的实现。(有两种方法即不用
4、this 指针和用this指针) include class Myclass public: Myclass (int a,int b) x=a;y=b; void copy(Myclass & my); void print( ) cout“x=”xendl; cout”y=”yendl; private: int x,y; ; void main() Myclass my(10,20),t(30,40); my.print( ); my. Copy(t); my.print( ); 成员函数实现: #include class Myclass public: Myclass (int a,
5、int b) x=a;y=b; void copy(Myclass & my); void print( ) coutx=xendl; couty=yendl; private: int x,y; ; 友员函数实现: #include class Myclass public: Myclass (int a,int b) x=a;y=b; friend void copy(Myclass &o,Myclass y); void print( ) coutx=xendl; couty=yendl; private: int x,y; ; (2)商店经销一种货物,货物成箱购进,成箱卖出,购进和卖出
6、时以重量为单位,各箱的重量不一样,单价不一样,因此商店需要记录下目前库存的货物的总重量和总价值。编写一个程序,通过定义类Carlo来模拟商店货物购进和卖出的情况。 (本题目主要练习静态数据成员的使用,定义私有变量存每件货物的价格和重量,用静态数据成员存货物的总重量和总价钱,定义构造函数和析构函数,当定义新的对象完成初始化的功能和删除对象时,从总重量和总价钱中减去对象的重量和价格) /Menu.h #ifndef MENU_H #define MENU_H class Menu public: int show(); ; #endif; / Carlo.h class Carlo public:
7、 Carlo(double Weight = 0,double Price = 0); virtual Carlo(); void SetCarlo(double = 0,double = 0); const double &GetCurrentTotalWeight() const; const double &GetCurrentTotalPrice() const; void BuyBox(); void SellBox(); void ShowBoxInfor() const; protected: static double TotalWeight; static double To
8、talPrice; private: double BoxWeight; double BoxPrice; ; /Carlo.cpp #include #include Carlo.h using namespace std; double Carlo:TotalPrice=0.0; double Carlo:TotalWeight=0.0; Carlo:Carlo(double Weight, double Price) void Carlo:BuyBox() const double &Carlo:GetCurrentTotalPrice() const return TotalPrice
9、; const double &Carlo:GetCurrentTotalWeight() const return TotalWeight; void Carlo:SetCarlo(double Weight, double Price) void Carlo:SellBox() void Carlo:ShowBoxInfor() const Carlo:Carlo() /Menu.cpp #include #include #include Menu.h using namespace std; int Menu:show() /CarloDemo.cpp #include #includ
10、e Menu.h #include Carlo.h using namespace std; void main() 南昌航空大学实验报告 二00七年月日 课程名称:面向对象程序设计实验名称:构造函数与析构函数 班级: XXXXXXX 学生姓名: XXXXXX 学号: 指导教师评定: XX 签名: XXXXX 1、实验目的 理解类与对象的区别。 学习掌握定义构造函数与析构函数的方法。 学习把握默认构造函数的意义。 了解类成员初始化,掌握构造与析构类成员的方式。 2、实验内容 (1) 创建一个Employee类,该类中用字符数组存放Employee的信息,如姓名、地址、市、省、及邮政编码;每个成
11、员函数的定义放在类定义之外;成员函数包括改变姓名数据成员等;构造函数完成成员数据的初始化;用Display()函数将完整的对象数据打印出来;其中数据成员是保护的,成员函数是公共的。 #include #include #include using namespace std; class Employee public: Employee(char n20,char a50,char s20,char sh20,char p6); void ChangeName(char ch_name20); void Display(); protected: char name20; char addr
12、ess50; char shi20; char sheng20; char post6; ; (2) 设计一个表示矩形的类Rect,其矩形成员长float * Length ,宽float * Width为指针变量,设计相应成员函数,实现下列功能: 构造函数设置长和宽(默认为1)。 复制构造函数用老对象生成新对象。 set()函数设置长和宽(默认为0)。 计算并返回长方形的周长。 计算并返回长方形的面积。 析构函数释放动态分配的长和宽。 编制主程序应用指针建立对象测试类。 #include class Rect float *Length,*Width; public: Rect(float
13、a=1,float b=1); Rect(Rect &); void set(float a=0,float b=0); float peri(); float area(); Rect()delete Length;delete Width; ; 南昌航空大学实验报告 二00七年月日 课程名称:面向对象程序设计实验名称:继承与多态性 班级: XXXXXXX 学生姓名: XXXXXX 学号: 指导教师评定: XX 签名: XXXXX 1、实验目的 了解类的两种使用方式 学习从现有类派生出新类的方式 了解在派生类中如何使用基类的成员 了解基类成员在派生类中的访问控制 了解虚函数对多态性的支持 2
14、、实验内容 题目:应用多态设计学生类 生成表示学生的类XS,提供成员函数dispXM()、dispXB()和dispNL()分别用来显示姓名、性别和年龄,并将他们全部定义为纯虚函数;生成CZS类表示初中生,包含数据成员xm、xb和nl 表示学生的姓名、性别和年龄,提供成员函数dispXM()、dispXB()和dispNL()分别用来显示姓名、性别和年龄;再生成类GZS表示高中生和类DXS表示大学生,同样包含相同含义的数据成员xm、xb和nl,也包括成员函数dispXM()、dispXB()和dispNL()。 实验要求 设计和实现基类XS。 设计和实现派生类CZS、GZS、DXS。 分别生成
15、CZS、GZS、DXS类的对象。 将CZS、GZS、DXS类对象的地址赋给XS类的指针变量。 分别用XS类的指针和引用访问dispXM()、dispXB()和dispNL()函数。 观察程序结果。 #include #include using namespace std; /设计抽象类(XS)表示学生类,定义其中dispXM(),dispXB(),dispNL()三个函数为纯虚函数class XS public: virtual void dispXM()=0; virtual void dispXB()=0; virtual void dispNL()=0; ; /*定义CZS类,使其继承
16、XS类,包含三个数据成员xm(4个以内汉字,默认名为张三), xb(int型,1表示男,0表示女,默认为1),nl(int型,默认为14);定义构造函数, 初始化各数据成员.另:实现基类的三个纯虚函数,显示各数据成员. */ class CZS:public XS public: CZS(char * m=张三,int b=1,int n=14); void dispXM(); void dispXB(); void dispNL(); protected: char xm9; int xb,nl; ; /仿照上面的写法,定义高中生类(GZS)和大学生类(DXS) class GZS:public XS public: GZS(char * m=张三,int b=1,int n=17); void dispXM(); void dispXB(); void dispNL(); protected: char xm9; int xb,nl; ; class DXS:public XS public: DXS(char * m=张三,int b=1,int n=20); void dispXM(); void dispXB(); void dispNL(); protected: char xm9; int xb,nl; ; /主函数 void main()