ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:25.10KB ,
资源ID:10339247      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10339247.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(教学大纲《面向对象程序设计实验》.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、教学大纲面向对象程序设计实验面向对象程序设计实验课程教学大纲课程名称课程编号课程类别编制者编制日期面向对象程序设计实验1920085选修车建华2016.02第一次实验:Visual Studio 6.0和2008开发环境、C+程序结构熟悉1.学时:2课时;2.实验类型:验证性实验3.实验目的:(1)熟悉Visual Studio 6.0和2008两种开发环境;(2)掌握Visual Studio 6.0和2008两种开发环境的基本操作命令、相应菜单项和快捷键;(3)了解C+程序的基本结构;(4)掌握C+程序的编辑、编译、调试和运行的方法;4.实验内容:实验题目1:计算器程序开发(1)程序功能简

2、介实现计算器的功能。用户根据程序提示,输入数字,选择要进行的运算,可以进行加、减、乘、除、平方、求模、求方根等运算。(2)程序设计要求 完善计算器程序,可以对实数操作; 完善计算器程序,可以对多个操作数进行基本四则运算; 生成相应可执行程序,并提交实验报告和可执行程序。(3)程序设计说明 针对加、减、乘、除、平方、求模、求方根操作,每个设计一个函数实现相应功能; 设计一个函数,实现四则混合运算; 设计测试函数。(4)撰写实验报告参考实验报告模板。实验题目2:八皇后问题(1)程序功能简介解决八皇后问题的程序。(2)程序设计要求 增加函数,每输入一组解,暂停屏幕,显示“按任意键继续!”; 完善程序

3、,编程计算八皇后问题共有几种排列方案; 增加输入,显示在第一个皇后确定后,共有几组排列; 生成相应可执行程序,并提交实验报告和可执行程序。(3)程序设计说明 八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。该问题是19世纪著名的数学家高斯1850年提出:在88格的国际象棋上摆放8个皇后,使其不能相互共计,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法? 当指示用户输入第一个皇后的位置时,行列数必须为0,7区间内的整数; 只要计算出第一个皇后放在任意相同列07行8种位置的排列总数即为八皇后问题的全部排列方案数目。(4)撰写实验报告参考实验报告模板。附加实验题目:(1)

4、输出100以内的所有素数;(2)输入5个字符串,按英文字典排序,由小到大顺序输出;(3)求120的阶乘之和。第二次实验:C+新增特性的验证1.学时:2课时;2.实验类型:验证性实验3.实验目的:(1)熟练C+语言相对于C语言新增的主要特性,包括C+语言的输入/输出、名字空间、作用域运算符、引用类型、const修饰符和内联函数以及带默认参数的函数等;(2)了解上述新增特性的内部实现机理;(3)掌握上述新增特性的编程技巧。4.实验内容:实验题目1:new与delete的应用练习(1)程序功能简介从堆内存中获取一个整型数组,赋值后打印出来。(2)程序设计要求 用new来分配数组的内存空间,并有内存空

5、间分配成功与否的检查机制; 用delete来释放数组的内存空间; 数组的大小由用户动态输入。(3)程序设计说明 先编写代码实现用户输入数组的大小; 根据用户输入的数组大小去动态分配内存空间,并加以验证; 打印输出数组内容,并释放数组内存空间。(4)撰写实验报告参考实验报告模板。实验题目2:引用类型的使用(1)程序功能简介编写程序,练习引用类型的各种使用方法。(2)程序设计要求 应用类型变量的简单使用,包括引用类型变量的定义、初始化和使用; 引用类型变量地址的打印输出; 引用类型变量作为函数参数进行述职交换; 返回局部作用域内的变量,函数作为左值。(3)程序设计说明 参考教材例2.5(见P23)

6、; 参考教材例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)复习数组、单链表等数

7、据结构的基础知识;(2)设计矩阵的数组和单链表数据结构,并编程实现;(3)掌握利用数组、单链表实现nn矩阵的存储、转置、旋转反射、数乘等操作的方法。4.实验内容:实验题目1:矩阵旋转反射和转置(1)程序功能简介根据矩阵处理的数据知识,编程实现矩阵旋转反射和转置程序。(2)程序设计要求 实现nn矩阵的旋转反射和转置,其中n为用户输入的任意整数; 先采用数组来表示矩阵,再采用单链表来表示矩阵,分别实现两种数据结构下的矩阵旋转反射和转置程序,并比较两种数据结构的程序实现难易程度; 生成相应可执行程序,并提交实验报告和可执行程序。(3)程序设计说明 矩阵旋转反射和转置的数据原理相对简单,主要是解决矩阵

8、的表示,可以采用数组和单链表两种方式; 先采用数组来表示矩阵,实现相应旋转反射和转置程序; 再采用单链表来表示矩阵,相应矩阵的旋转反射和转置操作变得简单,只要按一定的算法改变链表中节点的次序即可。(4)撰写实验报告参考实验报告模板。实验题目2:矩阵的数乘(1)程序功能简介根据矩阵处理的数据知识,编程实现矩阵的数乘程序。(2)程序设计要求 实现nn矩阵的数乘,其中n为用户输入的任意整数; 先采用数组来表示矩阵,再采用单链表来表示矩阵,分别实现两种数据结构下的矩阵数乘,并比较两种数据结构的程序实现难易程度;生成相应可执行程序,并提交实验报告和可执行程序。(3)程序设计说明 矩阵数乘的数据原理相对简

9、单,主要是解决矩阵的表示,可以采用数组和单链表两种方式; 先采用数组来表示矩阵,实现相应矩阵数乘程序; 再采用单链表来表示矩阵,相应矩阵的数乘操作变得简单。(4)撰写实验报告参考实验报告模板。第四次实验:类、对象的创建及使用1.学时:2课时;2.实验类型:验证性实验3.实验目的:(1)熟悉类的声明,包括数据成员和成员函数的类型声明;(2)熟悉类的定义,包括数据成员和成员函数的定义、初始化;(3)掌握类的使用方法、对象的创建方式。4.实验内容:实验题目1:类成员的声明和定义形式(1)程序功能简介编程实现一个类的构造函数和析构函数的声明和定义。(2)程序设计要求 注意类的数据成员和成员函数的声明和

10、定义方式; 注意类的数据成员和成员函数的访问权限问题。(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(见P

11、51)、例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.

12、学时:2课时;2.实验类型:设计性实验3.实验目的:(1)练习类的声明和定义,包括数据成员、成员函数的声明和定义;(2)练习类的使用方法、对象的创建方式;(3)掌握基于类和对象进行程序设计的关键步骤。4.实验内容:实验题目1:矩阵旋转反射和转置(1)程序功能简介根据矩阵处理的数据知识,编程实现矩阵旋转反射和转置程序。(2)程序设计要求 实现nn矩阵的旋转反射和转置,其中n为用户输入的任意整数; 先采用数组来表示矩阵,再采用单链表来表示矩阵,分别实现两种数据结构下的矩阵旋转反射和转置程序,并比较两种数据结构的程序实现难易程度; 生成相应可执行程序,并提交实验报告和可执行程序。(3)程序设计说明

13、矩阵旋转反射和转置的数据原理相对简单,主要是解决矩阵的表示,可以采用数组和单链表两种方式; 先采用数组来表示矩阵,实现相应旋转反射和转置程序; 再采用单链表来表示矩阵,相应矩阵的旋转反射和转置操作变得简单,只要按一定的算法改变链表中节点的次序即可。(4)撰写实验报告参考实验报告模板。实验题目2:矩阵的数乘(1)程序功能简介根据矩阵处理的数据知识,编程实现矩阵的数乘程序。(2)程序设计要求 实现nn矩阵的数乘,其中n为用户输入的任意整数; 先采用数组来表示矩阵,再采用单链表来表示矩阵,分别实现两种数据结构下的矩阵数乘,并比较两种数据结构的程序实现难易程度;生成相应可执行程序,并提交实验报告和可执

14、行程序。(3)程序设计说明 矩阵数乘的数据原理相对简单,主要是解决矩阵的表示,可以采用数组和单链表两种方式; 先采用数组来表示矩阵,实现相应矩阵数乘程序; 再采用单链表来表示矩阵,相应矩阵的数乘操作变得简单。(4)撰写实验报告参考实验报告模板。第六次实验:友元机制的练习1.学时:2课时;2.实验类型:验证性实验3.实验目的:(1)了解友元函数、友元成员以及友元类的主要作用;(2)理解友元函数、友元成员以及友元类的机制原理;(3)掌握友元函数、友元成员以及友元类的声明、定义和使用方法。4.实验内容:实验题目1:友元函数的声明、定义和使用(1)程序功能简介编程实现一个类的友元函数的声明、定义和使用

15、代码。(2)程序设计要求 采用声明和定义分开的方式实现一个类的友元函数; 通过调用友元函数,实现对一个类内所有访问权限的成员进行访问,验证友元机制。(3)程序设计说明 参考教材例4.2(见P86)、例4.3(见P86)、例4.4(见P87)。(4)撰写实验报告参考实验报告模板。实验题目2:友元成员和友元类的声明、定义和使用(1)程序功能简介编程实现一个类的友元成员和友元类的声明、定义和使用代码。(2)程序设计要求 采用声明和定义分开的方式实现一个类的友元成员和友元类; 通过调用友元成员以及友元类的对象,实现对一个类内所有访问权限的成员进行访问,验证友元机制。(3)程序设计说明 参考教材例4.5

16、(见P91)、例4.6(见P92)、例4.7(见P93)。(4)撰写实验报告参考实验报告模板。第七次实验:单继承与派生机制验证1.学时:2课时;2.实验类型:验证性实验3.实验目的:(1)熟悉单继承的基本机制,包括派生类的声明方式、基类成员的访问权限、派生类的功能实现等;(2)熟悉派生类的使用方法和对象的创建方式,包括派生类、对象成员、基类三者的对象初始化顺序及构造函数的编写要求,派生类对象的应用等。4.实验内容:实验题目1:类继承方式的验证(1)程序功能简介编程实现一个类的各种继承方式,包括公有继承、保护继承和私有继承以及相应的声明、定义、使用和基类成员访问权限的区别。(2)程序设计要求 编

17、写两个类,一个类作为基类,另一个类作为子类; 公有继承、私有继承和保护继承三种继承方式均验证到。(3)程序设计说明 参考教材例5.1(见P101)、例5.2(见P103)、例5.3(见P104)。(4)撰写实验报告参考实验报告模板。实验题目2:派生类的构造函数和析构函数(1)程序功能简介编程实现派生类和基类的构造函数和析构函数的调用、初始化顺序以及成员覆盖的验证代码。(2)程序设计要求 编写两个类,一个类作为基类,另一个类作为子类; 对基类和派生类的构造函数和析构函数进行调用、初始化顺序以及成员覆盖机制均需验证。(3)程序设计说明 参考教材例5.4(见P106)、例5.5(见P107)、例5.

18、6(见P108)、例5.7(见P109)。(4)撰写实验报告参考实验报告模板。第八次实验:单继承与派生程序设计1.学时:2课时;2.实验类型:设计性实验3.实验目的:(1)掌握单继承的基本机制,包括派生时的声明方式、基类成员的访问权限、派生类的功能实现等;(2)掌握派生类的使用方法和对象的创建方式,包括派生类、对象成员、基类三者的对象初始化顺序及构造函数的编写要求,派生类对象的应用等。4.实验内容:实验1:班级学生学期成绩管理系统(1)程序功能简介灵活运用类的继承、对象成员等机制,设计一个能够实现班级学生学期成绩管理的程序。(2)程序设计说明 个人信息类CPerson的数据成员有姓名、年龄、性

19、别、角色等,成员函数根据需要自行设计; 课程类CCourse的数据成员有课程名、学分、成绩,成员函数根据需要自行设计; 学生类CStudent从CPerson派生,并增加数据成员学号、CCourse对象成员数组(大小为8)、总成绩、总学分和平均成绩; 班级类CClass的数据成员有CStudent对象成员数组(大小由构造函数确定)、班号、班级人数等。(3)程序设计要求 本班级类CClass的对象成员数组需要在构造函数中用new动态分配内存空间,在析构函数中释放。在CClass中田间成员函数Seek(),通过学号查找并输出该学生的全部信息; 构造三个学生的数据,每个学生都有三门课程成绩,输出并显

20、示这些数据; 根据类的需要添加适当的其它成员,编写完整的程序并测试。(4)撰写实验报告参考实验报告模板。第九次实验:多继承与虚基类机制验证1.学时:2课时;2.实验类型:验证性实验3.实验目的:(1)了解多继承和虚基类的基本概念以及产生二义性的原因;(2)理解作用域规则、支配规则和赋值兼容规则的内涵;(3)掌握多继承和派生类、初始化基类成员、定义虚基类的方法。4.实验内容:实验题目1:多继承与虚基类的程序验证(1)程序功能简介编程实现类的多继承、虚基类的机制验证,重现多继承所产生的两种二义性情形及其解决方案。(2)程序设计要求 至少编写四个类,一个类作为公共基类,两个类作为该公共基类的子类,第

21、四个类作为上述两个子类的共同派生类; 在公共基类和中间两个子类中,添加同名的成员,并在子类中进行访问,体现多继承所产生的二义性问题。(3)程序设计说明 参考教材例5.9(见P116)、例5.10(见P116)、例5.11(见P117)。(4)撰写实验报告参考实验报告模板。实验题目2:函数模板和类模板的使用(1)程序功能简介编程实现函数模板和类模板,使之能够体现函数模板和类模板的功能机制。(2)程序设计要求 编写出函数模板和类模板框架,包括声明和定义方式; 根据所创建的函数模板和类模板,实例化出相应的模板函数和模板类,编写测试函数进行验证。(3)程序设计说明 参考教材例5.12(见P120)、例

22、5.13(见P121)。(4)撰写实验报告参考实验报告模板。第十次实验:多继承与虚基类程序设计1.学时:2课时;2.实验类型:设计性实验3.实验目的(1)掌握多重继承和派生类的方法;(2)掌握初始化基类成员的方法;(3)掌握定义虚基类的方法。4.实验内容与步骤实验题目1:(1)程序功能简介定义一个日期(年、月、日)的类和一个时间(时、分、秒)的类,并由这两个类派生出日期和时间类。主函数完成基类和派生类的测试工作。(2)程序设计说明 定义一个描述日期的类,构造函数完成年、月、日的初始化,包含一个重新设置日期的成员函数,一个获取日期的成员函数。该类可定义为:class Dateint Year,M

23、onth,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转换为对应的十进制的字符串),转换的

24、结果存放到s所指向的字符串中。函数返回变换后字符串的首指针。该成员函数可以是:void Date:GetDate(char *s)char t20;_itoa(Year,s,10); /将年变换为字符串表示strcat(s,/); /年、月、日之间用“/”隔开_itoa(Month,t,10); /将月变换为字符串表示strcat(s,t); /将年、月字符串拼接trcat(s,/);_itoa(Day,t,10);strcat(s,t); /将年、月、日拼接成一个字符串 定义描述时间的类与描述日期的类类同,然后用这二个类作为基类,公有派生出描述日期和时间的类。(3)程序设计要求将类DateT

25、ime改为由基类Date和Time私有派生,程序能否正确编译和执行,为什么?(4)撰写实验报告参考实验报告模板。实验题目2:(1)程序功能简介设计一个描述儿童、成人和老人的类,儿童分为学龄前和学龄期儿童,成人有工作,老人已退休。提取共性作为基类,并派生出满足要求的各个类及每一个类上的操作。设计一个完整的程序,并完成测试程序的正确性。(2)程序设计说明描述一个人的基本特性包括:姓名,出生日期,出生地。把这些基本特性定义为一个基类Base。不论学龄前还是学龄期儿童都要有监护人。为此在类Base的基础上派生出类AllChil,再把类AllChil作为基类派出学龄前和学龄期儿童的类。把类Base作为基

26、类,分别派生出成人类和老人类。(3)程序设计要求完成程序的正确性测试工作。(4)撰写实验报告参考实验报告模板。附加实验题目:设计程序从学生类中派生出硕士研究生和博士研究生类。第十一次实验:多态与重载之运算符重载和虚函数实验验证1.学时:2课时;2.实验类型:验证性实验3.实验目的(1)了解C+类多态性的本质;(2)理解C+编译时多态性的实现方式-函数和运算符重载;(3)理解C+运行时多态性的实现方式-虚函数;(4)掌握常见运算符重载和虚函数的实现方法。4.实验内容与步骤实验题目1:常见运算符的重载(1)程序功能简介编写程序,利用成员函数或友元函数实现常见运算符的重载。(2)程序设计要求 选择成

27、员函数或友元函数两种方式中合适的方法,实现+、-、!、前缀+/-、后缀+/-、-、=、,等运算符的重载; 编写主函数代码测试所重载的运算符。(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)程序功能简介编写程

28、序实现虚函数、纯虚函数和抽象类的声明、定义和使用。(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)程序功能简介编写程序实现虚析构函数的声明、定义和使用。

29、(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