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

上传人:b****7 文档编号:10339247 上传时间:2023-02-10 格式:DOCX 页数:29 大小:25.10KB
下载 相关 举报
教学大纲《面向对象程序设计实验》.docx_第1页
第1页 / 共29页
教学大纲《面向对象程序设计实验》.docx_第2页
第2页 / 共29页
教学大纲《面向对象程序设计实验》.docx_第3页
第3页 / 共29页
教学大纲《面向对象程序设计实验》.docx_第4页
第4页 / 共29页
教学大纲《面向对象程序设计实验》.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

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

《教学大纲《面向对象程序设计实验》.docx》由会员分享,可在线阅读,更多相关《教学大纲《面向对象程序设计实验》.docx(29页珍藏版)》请在冰豆网上搜索。

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

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

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

课程名称

课程编号

课程类别

编制者

编制日期

面向对象程序设计实验

1920085

选修

车建华

2016.02

第一次实验:

VisualStudio6.0和2008开发环境、C++程序结构熟悉

1.学时:

2课时;

2.实验类型:

验证性实验

3.实验目的:

(1)熟悉VisualStudio6.0和2008两种开发环境;

(2)掌握VisualStudio6.0和2008两种开发环境的基本操作命令、

相应菜单项和快捷键;

(3)了解C++程序的基本结构;

(4)掌握C++程序的编辑、编译、调试和运行的方法;

4.实验内容:

实验题目1:

计算器程序开发

(1)程序功能简介

实现计算器的功能。

用户根据程序提示,输入数字,选择要进行的运算,可以进行加、减、乘、除、平方、求模、求方根等运算。

(2)程序设计要求

①完善计算器程序,可以对实数操作;

②完善计算器程序,可以对多个操作数进行基本四则运算;

③生成相应可执行程序,并提交实验报告和可执行程序。

(3)程序设计说明

①针对加、减、乘、除、平方、求模、求方根操作,每个设计一个

函数实现相应功能;

②设计一个函数,实现四则混合运算;

③设计测试函数。

(4)撰写实验报告

参考实验报告模板。

实验题目2:

八皇后问题

(1)程序功能简介

解决八皇后问题的程序。

(2)程序设计要求

①增加函数,每输入一组解,暂停屏幕,显示“按任意键继续!

”;

②完善程序,编程计算八皇后问题共有几种排列方案;

③增加输入,显示在第一个皇后确定后,共有几组排列;

④生成相应可执行程序,并提交实验报告和可执行程序。

(3)程序设计说明

①八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。

该问题是19世纪著名的数学家高斯1850年提出:

在8×8格的

国际象棋上摆放8个皇后,使其不能相互共计,即任意两个皇后

都不能处于同一行、同一列或同一斜线上,问有多少种摆法?

②当指示用户输入第一个皇后的位置时,行列数必须为[0,7]区间内的整数;

③只要计算出第一个皇后放在任意相同列0~7行8种位置的排列总数即为八皇后问题的全部排列方案数目。

(4)撰写实验报告

参考实验报告模板。

附加实验题目:

(1)输出100以内的所有素数;

(2)输入5个字符串,按英文字典排序,由小到大顺序输出;

(3)求1~20的阶乘之和。

第二次实验:

C++新增特性的验证

1.学时:

2课时;

2.实验类型:

验证性实验

3.实验目的:

(1)熟练C++语言相对于C语言新增的主要特性,包括C++语言的输入/输出、名字空间、作用域运算符、引用类型、const修饰符和内联函数以及带默认参数的函数等;

(2)了解上述新增特性的内部实现机理;

(3)掌握上述新增特性的编程技巧。

4.实验内容:

实验题目1:

new与delete的应用练习

(1)程序功能简介

从堆内存中获取一个整型数组,赋值后打印出来。

(2)程序设计要求

①用new来分配数组的内存空间,并有内存空间分配成功与否的检查机制;

②用delete来释放数组的内存空间;

③数组的大小由用户动态输入。

(3)程序设计说明

①先编写代码实现用户输入数组的大小;

②根据用户输入的数组大小去动态分配内存空间,并加以验证;

③打印输出数组内容,并释放数组内存空间。

(4)撰写实验报告

参考实验报告模板。

实验题目2:

引用类型的使用

(1)程序功能简介

编写程序,练习引用类型的各种使用方法。

(2)程序设计要求

①应用类型变量的简单使用,包括引用类型变量的定义、初始化和使用;

②引用类型变量地址的打印输出;

③引用类型变量作为函数参数进行述职交换;

④返回局部作用域内的变量,函数作为左值。

(3)程序设计说明

①参考教材例2.5(见P23);

②参考教材例2.6(见P24);

③参考教材例2.7(见P25)

④参考教材例2.9(见P26)。

(4)撰写实验报告

参考实验报告模板。

实验题目3:

字符串类和内联函数的使用

(1)程序功能简介

编写程序,练习字符串类和内联函数的使用方法。

(2)程序设计要求

①利用字符串类(string)创建对象并进行相关处理;

②完成一个函数的内联实现,并与外联实现方式进行对比。

(3)程序设计说明

①参考教材例2.10(见P28);

②参考教材例2.11(见P30)。

(4)撰写实验报告

参考实验报告模板。

第三次实验:

利用数组和单链表实现矩阵的处理

1.学时:

2课时;

2.实验类型:

设计性实验

3.实验目的:

(1)复习数组、单链表等数据结构的基础知识;

(2)设计矩阵的数组和单链表数据结构,并编程实现;

(3)掌握利用数组、单链表实现n×n矩阵的存储、转置、旋转反射、数乘等操作的方法。

4.实验内容:

实验题目1:

矩阵旋转反射和转置

(1)程序功能简介

根据矩阵处理的数据知识,编程实现矩阵旋转反射和转置程序。

(2)程序设计要求

①实现n×n矩阵的旋转反射和转置,其中n为用户输入的任意整数;

②先采用数组来表示矩阵,再采用单链表来表示矩阵,分别实现两种数据结构下的矩阵旋转反射和转置程序,并比较两种数据结构的程序实现难易程度;

③生成相应可执行程序,并提交实验报告和可执行程序。

(3)程序设计说明

①矩阵旋转反射和转置的数据原理相对简单,主要是解决矩阵的表示,可以采用数组和单链表两种方式;

②先采用数组来表示矩阵,实现相应旋转反射和转置程序;

③再采用单链表来表示矩阵,相应矩阵的旋转反射和转置操作变得简单,只要按一定的算法改变链表中节点的次序即可。

(4)撰写实验报告

参考实验报告模板。

实验题目2:

矩阵的数乘

(1)程序功能简介

根据矩阵处理的数据知识,编程实现矩阵的数乘程序。

(2)程序设计要求

①实现n×n矩阵的数乘,其中n为用户输入的任意整数;

②先采用数组来表示矩阵,再采用单链表来表示矩阵,分别实现两种数据结构下的矩阵数乘,并比较两种数据结构的程序实现难易程度;

③生成相应可执行程序,并提交实验报告和可执行程序。

(3)程序设计说明

①矩阵数乘的数据原理相对简单,主要是解决矩阵的表示,可以采用数组和单链表两种方式;

②先采用数组来表示矩阵,实现相应矩阵数乘程序;

③再采用单链表来表示矩阵,相应矩阵的数乘操作变得简单。

(4)撰写实验报告

参考实验报告模板。

第四次实验:

类、对象的创建及使用

1.学时:

2课时;

2.实验类型:

验证性实验

3.实验目的:

(1)熟悉类的声明,包括数据成员和成员函数的类型声明;

(2)熟悉类的定义,包括数据成员和成员函数的定义、初始化;

(3)掌握类的使用方法、对象的创建方式。

4.实验内容:

实验题目1:

类成员的声明和定义形式

(1)程序功能简介

编程实现一个类的构造函数和析构函数的声明和定义。

(2)程序设计要求

①注意类的数据成员和成员函数的声明和定义方式;

②注意类的数据成员和成员函数的访问权限问题。

(3)程序设计说明

①在头文件中声明类,在程序文件中定义类的成员函数;

②参考教材例3.1(见P42)、例3.2(见P45)、例3.3(见P46)、例3.4(见P48)、例3.5(见P48)。

(4)撰写实验报告

参考实验报告模板。

实验题目2:

构造函数和析构函数的声明和定义

(1)程序功能简介

编程实现一个类的构造函数和析构函数的声明和定义。

(2)程序设计要求

①练习构造函数、带默认参数的构造函数、默认构造函数、重载构造函数和拷贝构造函数的声明和定义;

②练习析构函数的声明和定义以及调用顺序。

(3)程序设计说明

①参考教材例3.6(见P50)、例3.7(见P51)、例3.8(见P53)、例3.9(见P53)、例3.12(见P58)、例3.13(见P60)、例3.14(见P62);

②参考教材例3.15(见P50)、例3.16(见P64)、例3.17(见P65)。

(4)撰写实验报告

参考实验报告模板。

实验题目3:

指向类成员的指针

(1)程序功能简介

编程练习三种指向类成员的指针。

(2)程序设计要求

①编程练习类外指向类内的指针变量;

②编程练习类外指向类内成员函数的指针数据;

③编程练习类外指向类内静态成员的指针。

(3)程序设计说明

①参考教材例3.22(见P74)、例3.23(见P75)。

(4)撰写实验报告

参考实验报告模板。

第五次实验:

基于类、对象的程序设计

1.学时:

2课时;

2.实验类型:

设计性实验

3.实验目的:

(1)练习类的声明和定义,包括数据成员、成员函数的声明和定义;

(2)练习类的使用方法、对象的创建方式;

(3)掌握基于类和对象进行程序设计的关键步骤。

4.实验内容:

实验题目1:

矩阵旋转反射和转置

(1)程序功能简介

根据矩阵处理的数据知识,编程实现矩阵旋转反射和转置程序。

(2)程序设计要求

①实现n×n矩阵的旋转反射和转置,其中n为用户输入的任意整数;

②先采用数组来表示矩阵,再采用单链表来表示矩阵,分别实现两种数据结构下的矩阵旋转反射和转置程序,并比较两种数据结构的程序实现难易程度;

③生成相应可执行程序,并提交实验报告和可执行程序。

(3)程序设计说明

①矩阵旋转反射和转置的数据原理相对简单,主要是解决矩阵的表示,可以采用数组和单链表两种方式;

②先采用数组来表示矩阵,实现相应旋转反射和转置程序;

③再采用单链表来表示矩阵,相应矩阵的旋转反射和转置操作变得简单,只要按一定的算法改变链表中节点的次序即可。

(4)撰写实验报告

参考实验报告模板。

实验题目2:

矩阵的数乘

(1)程序功能简介

根据矩阵处理的数据知识,编程实现矩阵的数乘程序。

(2)程序设计要求

①实现n×n矩阵的数乘,其中n为用户输入的任意整数;

②先采用数组来表示矩阵,再采用单链表来表示矩阵,分别实现两种数据结构下的矩阵数乘,并比较两种数据结构的程序实现难易程度;

③生成相应可执行程序,并提交实验报告和可执行程序。

(3)程序设计说明

①矩阵数乘的数据原理相对简单,主要是解决矩阵的表示,可以采用数组和单链表两种方式;

②先采用数组来表示矩阵,实现相应矩阵数乘程序;

③再采用单链表来表示矩阵,相应矩阵的数乘操作变得简单。

(4)撰写实验报告

参考实验报告模板。

第六次实验:

友元机制的练习

1.学时:

2课时;

2.实验类型:

验证性实验

3.实验目的:

(1)了解友元函数、友元成员以及友元类的主要作用;

(2)理解友元函数、友元成员以及友元类的机制原理;

(3)掌握友元函数、友元成员以及友元类的声明、定义和使用方法。

4.实验内容:

实验题目1:

友元函数的声明、定义和使用

(1)程序功能简介

编程实现一个类的友元函数的声明、定义和使用代码。

(2)程序设计要求

①采用声明和定义分开的方式实现一个类的友元函数;

②通过调用友元函数,实现对一个类内所有访问权限的成员进行访问,验证友元机制。

(3)程序设计说明

①参考教材例4.2(见P86)、例4.3(见P86)、例4.4(见P87)。

(4)撰写实验报告

参考实验报告模板。

实验题目2:

友元成员和友元类的声明、定义和使用

(1)程序功能简介

编程实现一个类的友元成员和友元类的声明、定义和使用代码。

(2)程序设计要求

①采用声明和定义分开的方式实现一个类的友元成员和友元类;

②通过调用友元成员以及友元类的对象,实现对一个类内所有访问权限的成员进行访问,验证友元机制。

(3)程序设计说明

①参考教材例4.5(见P91)、例4.6(见P92)、例4.7(见P93)。

(4)撰写实验报告

参考实验报告模板。

第七次实验:

单继承与派生机制验证

1.学时:

2课时;

2.实验类型:

验证性实验

3.实验目的:

(1)熟悉单继承的基本机制,包括派生类的声明方式、基类成员的访问权限、派生类的功能实现等;

(2)熟悉派生类的使用方法和对象的创建方式,包括派生类、对象成员、基类三者的对象初始化顺序及构造函数的编写要求,派生类对象的应用等。

4.实验内容:

实验题目1:

类继承方式的验证

(1)程序功能简介

编程实现一个类的各种继承方式,包括公有继承、保护继承和私有继承以及相应的声明、定义、使用和基类成员访问权限的区别。

(2)程序设计要求

①编写两个类,一个类作为基类,另一个类作为子类;

②公有继承、私有继承和保护继承三种继承方式均验证到。

(3)程序设计说明

①参考教材例5.1(见P101)、例5.2(见P103)、例5.3(见P104)。

(4)撰写实验报告

参考实验报告模板。

实验题目2:

派生类的构造函数和析构函数

(1)程序功能简介

编程实现派生类和基类的构造函数和析构函数的调用、初始化顺序以及成员覆盖的验证代码。

(2)程序设计要求

①编写两个类,一个类作为基类,另一个类作为子类;

②对基类和派生类的构造函数和析构函数进行调用、初始化顺序以及成员覆盖机制均需验证。

(3)程序设计说明

①参考教材例5.4(见P106)、例5.5(见P107)、例5.6(见P108)、例5.7(见P109)。

(4)撰写实验报告

参考实验报告模板。

第八次实验:

单继承与派生程序设计

1.学时:

2课时;

2.实验类型:

设计性实验

3.实验目的:

(1)掌握单继承的基本机制,包括派生时的声明方式、基类成员的访问权限、派生类的功能实现等;

(2)掌握派生类的使用方法和对象的创建方式,包括派生类、对象成员、基类三者的对象初始化顺序及构造函数的编写要求,派生类对象的应用等。

4.实验内容:

实验1:

班级学生学期成绩管理系统

(1)程序功能简介

灵活运用类的继承、对象成员等机制,设计一个能够实现班级学生学期成绩管理的程序。

(2)程序设计说明

①个人信息类CPerson的数据成员有姓名、年龄、性别、角色等,成员函数根据需要自行设计;

②课程类CCourse的数据成员有课程名、学分、成绩,成员函数根据需要自行设计;

③学生类CStudent从CPerson派生,并增加数据成员学号、CCourse对象成员数组(大小为8)、总成绩、总学分和平均成绩;

④班级类CClass的数据成员有CStudent对象成员数组(大小由构造函数确定)、班号、班级人数等。

(3)程序设计要求

①本班级类CClass的对象成员数组需要在构造函数中用new动态分配内存空间,在析构函数中释放。

在CClass中田间成员函数Seek(),通过学号查找并输出该学生的全部信息;

②构造三个学生的数据,每个学生都有三门课程成绩,输出并显示这些数据;

③根据类的需要添加适当的其它成员,编写完整的程序并测试。

(4)撰写实验报告

参考实验报告模板。

第九次实验:

多继承与虚基类机制验证

1.学时:

2课时;

2.实验类型:

验证性实验

3.实验目的:

(1)了解多继承和虚基类的基本概念以及产生二义性的原因;

(2)理解作用域规则、支配规则和赋值兼容规则的内涵;

(3)掌握多继承和派生类、初始化基类成员、定义虚基类的方法。

4.实验内容:

实验题目1:

多继承与虚基类的程序验证

(1)程序功能简介

编程实现类的多继承、虚基类的机制验证,重现多继承所产生的两种二义性情形及其解决方案。

(2)程序设计要求

①至少编写四个类,一个类作为公共基类,两个类作为该公共基类的子类,第四个类作为上述两个子类的共同派生类;

②在公共基类和中间两个子类中,添加同名的成员,并在子类中进行访问,体现多继承所产生的二义性问题。

(3)程序设计说明

①参考教材例5.9(见P116)、例5.10(见P116)、例5.11(见P117)。

(4)撰写实验报告

参考实验报告模板。

实验题目2:

函数模板和类模板的使用

(1)程序功能简介

编程实现函数模板和类模板,使之能够体现函数模板和类模板的功能机制。

(2)程序设计要求

①编写出函数模板和类模板框架,包括声明和定义方式;

②根据所创建的函数模板和类模板,实例化出相应的模板函数和模板类,编写测试函数进行验证。

(3)程序设计说明

①参考教材例5.12(见P120)、例5.13(见P121)。

(4)撰写实验报告

参考实验报告模板。

第十次实验:

多继承与虚基类程序设计

1.学时:

2课时;

2.实验类型:

设计性实验

3.实验目的

(1)掌握多重继承和派生类的方法;

(2)掌握初始化基类成员的方法;

(3)掌握定义虚基类的方法。

4.实验内容与步骤

实验题目1:

(1)程序功能简介

定义一个日期(年、月、日)的类和一个时间(时、分、秒)的类,并由这两个类派生出日期和时间类。

主函数完成基类和派生类的测试工作。

(2)程序设计说明

①定义一个描述日期的类,构造函数完成年、月、日的初始化,包含一个重新设置日期的成员函数,一个获取日期的成员函数。

该类可定义为:

classDate{

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

public:

Date(inty=0,intm=0,intd=0)

{

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

}

voidSetDate(int,int,int);

voidGetDate(char*);

};

②函数SetDate完成数据成员的赋初值。

函数GetDate要将整数年、月、日变换成字符串后,存放到参数所指向的字符串中。

把一个整数变换成字符串可通过库函数:

char*_itoa(inta,char*s,intb);

来实现,参数a为要变换的整数,b为数制的基数(如10,表示将a转换为对应的十进制的字符串),转换的结果存放到s所指向的字符串中。

函数返回变换后字符串的首指针。

该成员函数可以是:

voidDate:

:

GetDate(char*s)

{

chart[20];

_itoa(Year,s,10);//将年变换为字符串表示

strcat(s,"/");//年、月、日之间用“/”隔开

_itoa(Month,t,10);//将月变换为字符串表示

strcat(s,t);//将年、月字符串拼接

trcat(s,"/");

_itoa(Day,t,10);

strcat(s,t);//将年、月、日拼接成一个字符串

}

③定义描述时间的类与描述日期的类类同,然后用这二个类作为基类,公有派生出描述日期和时间的类。

(3)程序设计要求

将类DateTime改为由基类Date和Time私有派生,程序能否正确编译和执行,为什么?

(4)撰写实验报告

参考实验报告模板。

实验题目2:

(1)程序功能简介

设计一个描述儿童、成人和老人的类,儿童分为学龄前和学龄期儿童,成人有工作,老人已退休。

提取共性作为基类,并派生出满足要求的各个类及每一个类上的操作。

设计一个完整的程序,并完成测试程序的正确性。

(2)程序设计说明

描述一个人的基本特性包括:

姓名,出生日期,出生地。

把这些基本特性定义为一个基类Base。

不论学龄前还是学龄期儿童都要有监护人。

为此在类Base的基础上派生出类AllChil,再把类AllChil作为基类派出学龄前和学龄期儿童的类。

把类Base作为基类,分别派生出成人类和老人类。

(3)程序设计要求

完成程序的正确性测试工作。

(4)撰写实验报告

参考实验报告模板。

附加实验题目:

设计程序从学生类中派生出硕士研究生和博士研究生类。

第十一次实验:

多态与重载之运算符重载和虚函数实验验证

1.学时:

2课时;

2.实验类型:

验证性实验

3.实验目的

(1)了解C++类多态性的本质;

(2)理解C++编译时多态性的实现方式-函数和运算符重载;

(3)理解C++运行时多态性的实现方式-虚函数;

(4)掌握常见运算符重载和虚函数的实现方法。

4.实验内容与步骤

实验题目1:

常见运算符的重载

(1)程序功能简介

编写程序,利用成员函数或友元函数实现常见运算符的重载。

(2)程序设计要求

①选择成员函数或友元函数两种方式中合适的方法,实现+、-、!

、[]、前缀++/--、后缀++/--、->、=、,等运算符的重载;

②编写主函数代码测试所重载的运算符。

(3)程序设计说明

参考教材例6.1(见P136)、例6.2(见P137)、例6.3(见P141)、例6.4(见P142)、例6.5(见P144)、例6.6(见P145)、例6.7(见P147)、例6.8(见P148)、例6.9(见P149)、例6.10(见P151)、例6.11(见P151)、例6.12(见P153)、例6.13(见P154);

(4)撰写实验报告

参考实验报告模板。

实验题目2:

虚函数、纯虚函数和抽象类的声明、定义和使用

(1)程序功能简介

编写程序实现虚函数、纯虚函数和抽象类的声明、定义和使用。

(2)程序设计要求

①实现虚函数、纯虚函数和抽象类的声明和定义;

②编写主函数代码测试所实现的虚函数、纯虚函数和抽象类。

(3)程序设计说明

参考教材例6.14(见P155)、例6.15(见P158)、例6.16(见P159)、例6.18(见P165)、例6.19(见P166)、6.14(见P155)、例6.15(见P158)、例6.16(见P159)、例6.18(见P165)、例6.19(见P166)、例6.20(见P168)。

(4)撰写实验报告

参考实验报告模板。

实验题目3:

虚析构函数的使用

(1)程序功能简介

编写程序实现虚析构函数的声明、定义和使用。

(2)程序设计要求

①实现虚析构函数的声明和定义;

②编写主函数代码测试所实现的虚析构函数。

(3)程序设计说明

参考教材例6.21(见P170)。

(4)撰写实验报告

参考实验报告模板。

第十二次实验:

多态与重载之运算符重载程序设计

1.学时:

2课时;

2.实验类型:

设计性实验

3.实验目的

(1)理解C++类多态性的本质;

(2)掌握运算符重载的实现方法;

(3)积累复杂程序设计、编写、调试和测试的经验。

4.实验内容与步骤

实验题目1:

时间和日期

(1)程序功能简介

定义一个日期(年、月、日)的类和一个时间(时、分、秒)的类,并由这两个类派生出日期时间类;可以设置时间和日期并得到是星期几,可以比较日期、时间的大小,可以进行两个日期(或天数)、时间(小时或分钟)的相加和相减;主函数完成基类和派生类的测试工作。

(2)程序设计要求

①在日期类CDate中添加成员函数重载运算符+,如得到新日期,应考虑闰年处理;

②在日期类CDate中添加成员函数重载运算符-,如得到新日期,应考虑闰年处理;

③在时间类CTime中添加成员函数重载运算符+,应考虑时间对象加上分钟后可能得到新日期;

④在时间类CTime中添加成员函数重载运算符-,应考虑时间对象加上分钟后可能得到新日期;

⑤时间类和日期类的多种格式输入和输出

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1