20xx-教学大纲-《面向对象程序设计实验》22

《面向对象程序设计实验》课程教学大纲

20xx教学大纲面向对象程序设计实验22

第十次实验:

继承与派生

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小时制等;

⑥ 测试所有类的成员函数、时间类和日期类的初始化、具体值的设置、比较大小等功能。

(3)程序设计说明

① 定义一个描述日期的类,构造函数完成年、月、日的初始化,包含重新设置日期、获取日期、比较日期大小和进行日期加减的成员函数。该类定义形式可以参考:

class CDate{

int Year,Month,Day; //分别存放年、月、日

static int format; //用于确定采用哪种格式显示日期

enum WeekName{Monday, Tuesday, Wensday, Thursday, Friday,

Saturday, Sunday};

enum{January, February, Mars, April, May, June, July, August,

September, October, November, December};

public:

CDate();

CDate(const CDate & d);

CDate(int y=0, int m=0,int d=0)

{

Year= y; Month = m; Day = d;

}

//void SetDate(int ,int ,int );

//void GetDate(char *);

inline void SetYear(int y);

inline void SetMonth(int m);

inline void SetDay(int d);

inline void GetYear(int y);

inline void GetMonth(int m);

inline void GetDay(int d);

void ShowDate();

char* GetWeekNameofDate(const CDate & d);

char* GetMonthNameofDate(const CDate & d);

bool IsLeapYear(int year);

bool operator <(const CDate & d) const;

bool operator <=(const CDate & d) const;

bool operator >(const CDate & d) const;

bool operator >=(const CDate & d) const;

bool operator ==(const CDate & d) const;

bool operator !=(const CDate & d) const;

const CDate operator +(const CDate & d);

const CDate operator -(const CDate & d);

void operator ++();

void operator --();

friend ostream& operator <<(ostream& out, const CDate & d); friend istream& operator >>(istream& in, const CDate & d);

};

② 定义一个描述时间的类,构造函数完成小时、分钟的初始化,包含重新设置时间、获取时间、比较时间大小和进行时间加减的成员函数。该类定义形式可以参考:

class CTime{

int Hour,Minute,Second; //分别存放时、分、秒

static int format //用于确定采用哪种制式显示时间 public:

CTime();

CTime (const CDate & d);

CTime (int h=0, int m=0,int s=0)

{

Hour=h; Minute=m; Second=s;

}

//void SetTime(int ,int ,int );

//void GetTime(char *);

inline void SetHour(int h);

inline void SetMinute(int m);

inline void SetSecond(int s);

inline void GetHour(int h);

inline void GetMinute(int m);

inline void GetSecond(int s);

void ShowTime();

bool operator <(const CTime & t) const;

bool operator <=(const CTime & t) const;

bool operator >(const CTime & t) const;

bool operator >=(const CTime & t) const;

bool operator ==(const CTime & t) const;

bool operator !=(const CTime & t) const;

const CTime operator +(const CTime & t);

const CTime operator -(const CTime & t);

void operator ++();

void operator --();

friend ostream& operator <<(ostream& out, const CTime & t); friend istream& operator >>(istream& in, const CTime & t);

};

③ 观察上述两个类的设计结构,对于一些相同的功能函数,能否利用第三个类实现两个类共同功能代码的复用,即设计一个管理类CManager,将CDate和CTime两个类的相关代码提取到CManager类中。

(4)撰写实验报告

参考实验报告模板。

 

第二篇:08级《C++面向对象程序设计》实验教学大纲

《C++面向对象程序设计》实验教学大纲

一、大纲说明

课程编号:052106

课程名称(中文):C++面向对象程序设计

课程名称(英文):C++ Object Oriented Programming

适用专业:计算机科学与技术、网络工程、软件工程

课程属性:学科基础课

课程性质:非独立设课

课程学时:20

课程学分:3.5

先修课程:C语言程序设计

二、实验课教学内容和要求
实验一、Visual Studio.NET 2003或Visual C++ 6.0开发环境应用入门

实验目的和教学要求

1)了解Visual Studio.NET 2003或Visual C++ 6.0的特点;

2)熟悉Visual Studio.NET 2003或Visual C++ 6.0的开发环境;

3)学习用Visual Studio.NET 2003或Visual C++ 6.0编写标准的C++控制台程序。

实验二、C++简单程序设计

实验目的和教学要求

1)学会编写简单的C++程序;

2)复习基本数据类型变量和常量的应用;

3)复习运算符与表达式的应用;

4)复习结构化程序设计基本控制结构的运用;

5)复习自定义数据类型的应用;

6)练习使用简单的输入输出;

7)观察头文件的作用;

8)学会使用Visual Studio.NET 2003或Visual C++ 6.0开发环境中的Debug调试功能;单步执行、设置断点、观察变量值。

实验三、函数的应用

实验目的和教学要求

1)掌握函数的说明、定义和调用方法;

2)练习重载函数的使用;

3)练习使用系统函数;

4)学习使用Visual Studio.NET 2003或Visual C++ 6.0的Debug调试功能,使用Step Into追踪到函数内部。

实验四、类与对象

实验目的和教学要求

1)掌握类的声明和使用;

2)掌握类的声明和对象的声明;

3)复习具有不同访问属性的成员的访问方式;

4)观察构造函数析构函数的执行过程;

5)学习类的组合使用方法;

6)使用Visual Studio.NET 2003或Visual C++ 6.0的Debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。

实验五、C++程序的结构

实验目的和教学要求

1)观察程序运行中变量的作用域、生存期和可见性;

2)学习类的静态成员的使用;

3)学习多文件结构在C++程序中的使用。

实验六、数组、指针与字符串

实验目的和教学要求

1)学习使用数组数据对象;

2)学习字符串数据的组织和处理;

3)学习标准C++库的使用;

4)掌握指针的使用方法;

5)练习通过Debug观察指针的内容及其所指的对象的内容;

6)练习通过动态内存分配实现动态数组,并体会指针在其中的作用;

7)分别使用字符数组和标准C++库练习处理字符串的方法。

实验七、继承与派生

实验目的和教学要求

1)学习声明和使用类的继承关系,声明派生类;

2)熟悉不同继承方式下对基类成员的访问控制;

3)学习虚函数解决二义性问题。

实验八、多态性

实验目的和教学要求

1)掌握运算符重载的方法;

2)学习使用虚函数实现动态多态性。

实验九、群体类

实验目的和教学要求

1)了解结点类的声明与实现,学习其使用方法;

2)了解链表类的声明与实现,学习其使用方法;

3)了解栈类的声明与实现,学习其使用方法;

4)了解队列类的声明与实现,学习其使用方法;

5)掌握对数组元素排序的方法;

6)掌握对数组元素查找的方法。

实验十、标准模板库的应用

实验目的和教学要求

1)了解C++标准模板库STL的容器类的使用方法;

2)应用标准C++模板库(STL)通用算法和函数对象实现查找与排序。

实验十一、流类库与输入/输出

实验目的和教学要求

1)熟悉流类库中常用的类及其成员函数的用法;

2)学习标准输入输出及格式控制;

3)学习对文件的应用方法(二进制文件、文本文件)。

实验十二、异常处理

实验目的和教学要求

1)正确理解C++的异常处理机制;

2)学习异常处理的声明和执行过程。

实验十三、创建Windows应用程序

实验目的和教学要求

简单了解Windows程序设计。

三、主要仪器设备

微型计算机、Turbo C++ 3.0或 Borland C++ 3.1 或 Microsoft Visual C++ 6.0或Visual Studio.NET 2003。

四、实验方式与要求

方式:上机;

要求:学生上机前应初步编好程序,在上机时进行调试,实验完成后提交实验报告。

五、考核办法

实验部分不单独考试,但在课程考核的笔试中实验内容应占考试内容的10-20%,平时实验成绩占课程总评的10-20%。

六、学时分配

本课程计划学时数为64学时,其中理论课44学时,实验课20学时。

实验教学学时分配表

七、教材

实验教材

1、郑莉 等,《C++语言程序设计(第3版)学生用书》,清华大学出版社

2、郑莉 等,《C++语言程序设计习题与实验指导》(含光盘),清华大学出版社

制订:肖锦辉

审核:薛晓萍

批准:麦  山

20##年 8 月 28 日

相关推荐