《面向对象程序设计实验》课程教学大纲
课程名称 面向对象程序设计实验 课程编号 课程类别 选修 编制者 车建华 编制日期 2015.02 第十次实验: 继承与派生
1.学时:2课时; 2.实验类型:设计性实验 3.实验目的
(1)掌握多继承和派生类的方法; (2)掌握初始化基类成员的方法; (3)掌握定义虚基类的方法。 4.实验内容与步骤 实验一:
(1)程序功能简介
定义一个日期(年、月、日)的类和一个时间(时、分、秒)的类,并由这两个类派生出日期和时间类。主函数完成基类和派生类的测试工作。
(2)程序设计说明
① 定义一个描述日期的类,构造函数完成年、月、日的初始化,包含一个重新设置日期的成员函数,一个获取日期的成员函数。该类可定义为: class Date{
int Year,Month,Day; //分别存放年、月、日 public:
Date(int y=0, int m=0,int d=0) {
Year= y; Month = m; Day = d; }
void SetDate(int ,int ,int ); void GetDate(char *);
};
② 函数SetDate完成数据成员的赋初值。函数GetDate要将整数年、月、日变换成字符串后,存放到参数所指向的字符串中。把一个整数变换成字符串可通过库函数:
char * _itoa(int a , char *s, int b);
来实现,参数a为要变换的整数,b为数制的基数(如10,表示将a转换为对应的十进制的字符串),转换的结果存放到s所指向的字符串中。函数返回变换后字符串的首指针。该成员函数可以是: void Date::GetDate(char *s) {
char t[20]; _itoa(Year,s,10); strcat(s,\ strcat(s,t); trcat(s,\_itoa(Day,t,10); strcat(s,t); }
③ 定义描述时间的类与描述日期的类类同,然后用这二个类作为基类,公有派生出描述日期和时间的类。 (3)程序设计要求
将类DateTime改为由基类Date和Time私有派生,程序能否正确编译和执行,为什么? (4)撰写实验报告
参考实验报告模板。 2.上机实验题二 (1)程序功能简介
设计一个描述儿童、成人和老人的类,儿童分为学龄前和学龄期儿童,成人有工作,老人已退休。提取共性作为基类,并派生出满足要求的各个类及每一个类上的操作。设计一个完整的程序,并完成测试程序的正确性。 (2)程序设计说明
描述一个人的基本特性包括:姓名,出生日期,出生地。把这些基本特性定义为一个基类Base。不论学龄前还是学龄期儿童都要有监护人。为此在类Base的基础上派生出类AllChil,再把类AllChil作为基
//将年、月、日拼接成一个字符串
//将年变换为字符串表示 //年、月、日之间用“/”隔开 //将月变换为字符串表示 //将年、月字符串拼接
_itoa(Month,t,10);
类派出学龄前和学龄期儿童的类。把类Base作为基类,分别派生出成人类和老人类。 (3)程序设计要求
完成程序的正确性测试工作。 (4)撰写实验报告
参考实验报告模板。 实验三:项目选做
设计程序从学生类中派生出硕士研究生和博士研究生类。
第十二次实验: 多态与重载
1.学时:2课时; 2.实验类型:设计性实验 3.实验目的
(1)理解C++类多态性的本质; (2)掌握运算符重载的实现方法;
(3)积累复杂程序设计、编写、调试和测试的经验。 4.实验内容与步骤 实验一:时间和日期 (1)程序功能简介
定义一个日期(年、月、日)的类和一个时间(时、分、秒)的类,并由这两个类派生出日期时间类;可以设置时间和日期并得到是星期几,可以比较日期、时间的大小,可以进行两个日期(或天数)、时间(小时或分钟)的相加和相减;主函数完成基类和派生类的测试工作。 (2)程序设计要求
① 在日期类CDate中添加成员函数重载运算符+,如得到新日期,应考虑闰年处理;
② 在日期类CDate中添加成员函数重载运算符-,如得到新日期,应考虑闰年处理;
③ 在时间类CTime中添加成员函数重载运算符+,应考虑时间对象加上分钟后可能得到新日期;
④ 在时间类CTime中添加成员函数重载运算符-,应考虑时间对象加上分钟后可能得到新日期;
⑤ 时间类和日期类的多种格式输入和输出,比如12、24小时制等;