面向对象程序设计实验报告计算机学院张永南昌航空大学实验报告二00七年月日课程名称:面向对象程序设计实验名称:类与结构班级: XXXXXXX 学生姓名: XXXXXX 学号:指导教师评定: XX 签名: XXXXX1、实验目的·学习掌握声明和定义类及成员。
·学习掌握访问类对象成员。
·学习掌握保护数据如何屏蔽外部访问的原理,更好的认识类的封装2、实验内容(1)定义一个满足下列要求的Date类:①用下面的格式输出日期:日/月年②可运行在日期上加一天操作③设置日期//Date.h#include <iostream>using namespace std;class 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.hclass Time{public:Time();void Print();void Set(int,int,int); protected:int min;int sec;int hour;};南昌航空大学实验报告二00七年月日课程名称:面向对象程序设计实验名称:静态成员与友元班级: XXXXXXX 学生姓名: XXXXXX 学号:指导教师评定: XX 签名: XXXXX1、实验目的·学习友元函数的定义和原理。
·学习静态数据成员和静态成员函数的使用。
·学习静态成员代替全局变量实现对象间的共享。
2、实验内容(1)有如下类的定义。
类成员函数copy用于实现两个对象的相互拷贝,请完成该函数的实现。
(有两种方法即不用this 指针和用this指针)#include <iostream.h>class Myclass{public:Myclass (int a,int b) { x=a;y=b;}void copy(Myclass & my);void print( ){ cout<<“x=”<<x<<endl;cout<<”y=”<<y<<endl;}private:int x,y;};void main(){Myclass my(10,20),t(30,40);my.print( );my. Copy(t);my.print( );}成员函数实现:#include <iostream.h>class Myclass{public:Myclass (int a,int b) { x=a;y=b;}void copy(Myclass & my);void print( ){ cout<<"x="<<x<<endl;cout<<"y="<<y<<endl;}private:int x,y;};友员函数实现:#include <iostream.h>class Myclass{public:Myclass (int a,int b) { x=a;y=b;}friend void copy(Myclass &o,Myclass y);void print( ){ cout<<"x="<<x<<endl;cout<<"y="<<y<<endl;}private:int x,y;};(2)商店经销一种货物,货物成箱购进,成箱卖出,购进和卖出时以重量为单位,各箱的重量不一样,单价不一样,因此商店需要记录下目前库存的货物的总重量和总价值。
编写一个程序,通过定义类Carlo来模拟商店货物购进和卖出的情况。
(本题目主要练习静态数据成员的使用,定义私有变量存每件货物的价格和重量,用静态数据成员存货物的总重量和总价钱,定义构造函数和析构函数,当定义新的对象完成初始化的功能和删除对象时,从总重量和总价钱中减去对象的重量和价格)//Menu.h#ifndef MENU_H#define MENU_Hclass Menu{ public:int show();};#endif;// Carlo.hclass Carlo{public: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 TotalPrice;private:double BoxWeight;double BoxPrice;};//Carlo.cpp#include <iostream>#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;}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 <iostream>#include <windows.h>#include "Menu.h"using namespace std;int Menu::show(){}//CarloDemo.cpp#include <iostream>#include "Menu.h"#include "Carlo.h"using namespace std;void main(){}南昌航空大学实验报告二00七年月日课程名称:面向对象程序设计实验名称:构造函数与析构函数班级: XXXXXXX 学生姓名: XXXXXX 学号:指导教师评定: XX 签名: XXXXX1、实验目的·理解类与对象的区别。
·学习掌握定义构造函数与析构函数的方法。
·学习把握默认构造函数的意义。
·了解类成员初始化,掌握构造与析构类成员的方式。
2、实验内容(1)创建一个Employee类,该类中用字符数组存放Employee的信息,如姓名、地址、市、省、及邮政编码;每个成员函数的定义放在类定义之外;成员函数包括改变姓名数据成员等;构造函数完成成员数据的初始化;用Display()函数将完整的对象数据打印出来;其中数据成员是保护的,成员函数是公共的。
#include <iostream>#include <string.h>#include <stdio.h>using namespace std;class Employee{public:Employee(char n[20],char a[50],char s[20],char sh[20],char p[6]);void ChangeName(char ch_name[20]);void Display();protected:char name[20];char address[50];char shi[20];char sheng[20];char post[6];};(2) 设计一个表示矩形的类Rect,其矩形成员长float * Length ,宽float * Width为指针变量,设计相应成员函数,实现下列功能:①构造函数设置长和宽(默认为1)。
②复制构造函数用老对象生成新对象。
③set()函数设置长和宽(默认为0)。
④计算并返回长方形的周长。
⑤计算并返回长方形的面积。
⑥析构函数释放动态分配的长和宽。
编制主程序应用指针建立对象测试类。
#include <iostream.h>class Rect{float *Length,*Width;public:Rect(float 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 签名: XXXXX1、实验目的了解类的两种使用方式学习从现有类派生出新类的方式了解在派生类中如何使用基类的成员了解基类成员在派生类中的访问控制了解虚函数对多态性的支持2、实验内容题目:应用多态设计学生类生成表示学生的类XS,提供成员函数dispXM()、dispXB()和dispNL()分别用来显示姓名、性别和年龄,并将他们全部定义为纯虚函数;生成CZS类表示初中生,包含数据成员xm、xb和nl 表示学生的姓名、性别和年龄,提供成员函数dispXM()、dispXB()和dispNL()分别用来显示姓名、性别和年龄;再生成类GZS表示高中生和类DXS表示大学生,同样包含相同含义的数据成员xm、xb和nl,也包括成员函数dispXM()、dispXB()和dispNL()。