面向对象程序设计实验教学大纲.docx
- 文档编号:24321945
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:20
- 大小:121.42KB
面向对象程序设计实验教学大纲.docx
《面向对象程序设计实验教学大纲.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计实验教学大纲.docx(20页珍藏版)》请在冰豆网上搜索。
面向对象程序设计实验教学大纲
《面向对象程序设计》实验教学大纲
课程总学时:
80 学分:
4
实验学时:
32 实验个数:
13个实验学分:
1分
课程性质:
专业必修课适用专业:
软件工程、计算机科学、网络工程
教材及参考书:
《C++语言程序设计(第四版)》,郑莉、董渊编著,北京:
清华大学出版社,2005
大纲执笔人:
杨军 大纲审定人:
一、实验课的性质与任务
本课程实验大纲是面向计算机专业学生开设的《C++程序设计》实验课计划指导大纲,是依据《面向对象程序设计》课程教学计划指导大纲编制。
本课程主要讲述了利用C++进行程序设计的思想和方法,既有面向过程和面向对象的程序设计的理论知识,又包括极强的实践应用能力的培养。
本实验大纲力求结合该课程教学计划大纲的相应内容,由浅入深的指导学生了解和掌握如何利用C++程序设计语言进行程序设计,提高学生的动手能力,做到理论和实践相结合,培养学生理解,分析程序,编写,调试程序的能力,使之能把程序设计应用到今后的专业学习中。
二、实验目的与要求
1.实验目的
通过本课程的学习,使学生掌握面向过程的程序设计思想和编程思路,初步掌握面向对象的程序设计思想,学会调试程序,能独立编写实用的小型程序。
2.实验要求
(1)学生应该自始至终贯彻课程中所介绍的程序设计风格,养成良好的编程习惯;
(2)应独立完成所布置习题。
为保证尽量在统一安排的上机时间内编译运行通过程序,学生应事先设计好程序。
三、实验项目及内容提要
面向对象程序设计实验课程(071016)
序号
实验编号
实验名称
学时
必做
选做
实验类型
内容提要
基本操作
验证
综合
设计
1
VisualC++开发环境入门
2
√
√
熟悉VC++开发环境
2
C++简单程序设计
4
√
√
基本算法结构
3
函数的应用
2
√
√
函数设计、模板函数
4
类与对象
6
√
√
类的设计与使用
5
C++程序的结构
2
√
√
作用域与生存期,静态成员
6
数组、指针与字符串
4
√
√
三种常见编程元素的使用
7
继承与派生
6
√
√
派生类的设计与使用
8
多态性
2
√
√
运算符重载、动态多态
9
群体类和群体数据的组织
4
√
√
群体类的设计
10
泛型程序设计与C++标准模板库
2
√
√
STL库的使用
11
流内库与输入、输出
2
√
√
常用输入输出方法
12
异常处理
2
√
异常处理机制的设计
13
Windows应用程序框架
2
√
√
VC开发Windows程序方法
四、实验内容安排:
实验一VisualC++6.0开发环境应用入门
(验证性实验2学时)
1.目的要求:
了解VisualC++6.0的特点,熟悉了解VisualC++6.0的开发环境,学习使用VisualC++6.0编写标准的C++控制台应用程序。
2.实验内容:
使用VisualC++来建立一个非图形化的标准C++程序,编译、运行教材中的例2-1。
3.主要仪器设备及软件:
PC+Windows2000+VC6.0
实验二C++简单程序设计实验
(验证性实验4学时)
1.目的要求:
会编写简单的C++程序;复习基本数据类型变量和常量的应用;复习运算符与表达式的应用;复习结构化程序设计基本控制结构的应用;复习自定义数据类型的应用;练习使用简单的输入输出;观察头文件的作用;学会使用VC6.0开发环境中的debug调试功能;
2.实验内容:
1)输入并运行教材《C++语言程序设计》中的例题2—7,即:
用do—while语句编程,求自然数1—10之和。
程序正确运行之后,去掉源程序中#include语句,重新编译,观察会有什么问题。
2)将do—while语句用for语句代替,完成相同的功能。
3)编程计算图形的面积。
程序可计算圆形、长方形、正方形的面积,运行时先提示用户选择图形的类型,然后,对圆形要求用户输入半径值,对长方形要求用户输入长和宽的值,对正方形要求用户输入边长的值,计算出面积的值后将其显示出来。
4)使用debug调试功能观察任务3程序运行中变量值的变化情况。
5)(选做)定义一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。
3.主要仪器设备及软件:
PC+Windows2000+VC6.0
实验三函数的应用实验
(设计性实验2学时)
1.目的要求:
掌握函数的定义和调用方法;练习重载函数的使用;练习使用系统函数;学习使用VC++的debug调试功能,使用stepinto追踪到函数内部。
2.实验内容:
6)编写一个函数把华氏温度转换为摄氏温度,转换公式为:
C=(F—32)*5/9。
7)编写重载函数Max1可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。
8)(选做)使用系统函数pow(x,y)计算xy的值,注意包含头文件cmath.h。
9)(选做)用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。
3.主要仪器设备及软件:
PC+Windows2000+VC6.0
实验四类与对象实验
(设计性实验4学时)
1.目的要求:
掌握类的定义和使用;掌握类对象的声明;复习具有不同访问属性的成员的访问方式;观察构造函数和析构函数的执行过程;学习类组合使用方法;使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。
2.实验内容:
10)定义一个CPU类,包含等级(Rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。
其中,rank为枚举类型CPU__Rank,定义为enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。
观察构造函数和析构函数的调用顺序。
11)定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。
cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类。
12)(选做)设计一个用于人事管理的People(人员)类。
考虑到通用性,这里只抽象出所有类型人员都具有的属性:
number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。
其中“出生日期”定义一个“日期”类内嵌子对象。
用成员函数实现对人员信息录入和显示。
要求包括:
构造函数和析构函数、拷贝构造函数、内联成员函数、类组合。
3.主要仪器设备及软件:
PC+Windows2000+VC6.0
实验五C++程序的结构实验
(设计性实验2学时)
1.目的要求:
观察程序运行中变量的作用域、生存期和可见性;学习类的静态成员的使用;学习多文件结构在C++程序中的使用。
2.实验内容:
13)运行下面的程序,观察变量X、Y的值。
//lab5_1.cpp
#include
voidfnl();
intx=1,y=2;
intmain()
{
cout<<”Begin…”< cout<<”x=”< cout<<”y=”< cout<<”Evaluatexandyinmain()…”< intx=10,y=20; cout<<”x=”< cout<<”y=”< cout<<”Stepintofnl()…”< fnl(); cout<<”Backinmain”< cout<<”x=”< cout<<”y=”< return0; } voidfnl() { inty=200; cout<<”x=”< cout<<”y=”< } 14)实现客户机(CLIENT)类。 定义字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。 在头文件client.h中定义类,在文件client.cpp中实现,在文件test.cpp中测试这个类,观察相应的成员变量取值的变化情况。 3.主要仪器设备及软件: Windows2000+VC6.0 实验六数组、指针与字符串实验 (设计性实验4学时) 1.目的要求: 学习使用数组;学习字符串数据的组织和处理;学习标准C++库的使用;掌握指针的使用方法;练习通过debug观察指针的内容及其所指的对象的内容;练习通过动态内存分配实现动态数组,并体会指针在其中的作用;分别使用字符数组和标准C++库练习处理字符串的方法。 2.实验内容: 15)编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵。 16)使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。 17)编程实现两字符串的连接。 要求使用字符数组保存字符串,不要使用系统函数。 18)使用string类定义字符串对象,重新实现上一小题。 19)(选做)定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。 Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。 实现并测试这个类。 20)(选做)定义包含5个元素的对象数组,每个元素都是Employee类型的对象。 21)(选做)修改实验4中的选做实验中的people(人员)类。 具有的属性如下: 姓名charname[11]、编号charnumber[7]、性别charsex[3]、生日birthday、身份证号charid[16]。 其中“出生日期”定义为一个“日期”类内嵌对象。 用成员函数实现对人员信息的录入和显示。 要求包括: 构造函数和析构函数、拷贝构造函数、内嵌构造函数、内联成员函数、类组合。 在测试程序中定义people类的对象数组,录入数据并显示。 3.主要仪器设备及软件: Windows2000+VC6.0 实验七继承与派生实验 (验证性实验4学时) 1.目的要求: 学习定义和使用类的继承关系,定义派生类;熟悉不同继承方式下对基类成员的访问控制;学习利用虚基类解决二义性问题。 2.实验内容: 22)定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(intn)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗? 编程试试看。 23)定义一个基类BasClass,有整型成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。 24)定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类,汽车(motorcar)类。 自行车(bicycle)类有高度(Height)等属性,汽车(motorcycle)类有座位数(SeatNum)等属性。 从bicycle和Motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。 如果不把vehicle设置为虚基类,会有什么问? 编程试试看。 25)(选做)从实验6中的people(人员)类派生出student(学生)类,添加属性: 职务charprincipalship[11]、部门chardepartment[21]。 从student类中派生出graduate(研究生)类,添加属性: 专业charsubject[21]、导师teacheradviser;从graduate类派生出其TA(助教)类,注意虚基类的使用。 重载相应的成员函数,测试这些类。 图7-1实验任务4的类图 3.主要仪器设备及软件: PC+Windows2000+VC6.0 实验八多态性实验 (设计性实验2学时) 1.目的要求: 掌握运算符重载的方法;学习使用虚函数实现动态多态性。 2.实验内容: 26)定义Point类,有坐标_x,_y两个成员变量;对Point类重载“++”(自增)、“--”(自减)运算符,实现对坐标的改变。 27)定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle到motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。 观察虚函数的作用。 28)(选做)对实验六中的people类重载“==”运算符和“=”运算符,“==”运算符判断两个people类对象的id属性是否相等;“=”运算符实现people类对象的赋值操作。 3.主要仪器设备及软件: PC+Windows2000+VC6.0 实验九群体类和群体数据组织实验(选做) (设计性实验4学时) 1.目的要求: 29)了解链表类的定义与实现,学习其使用方法;了解栈类定义与实现,学习其使用方法; 30)了解队列类的定义与实现,学习其使用方法;了解C++标准模板库STL的使用方法。 2.实验内容: 31)使用重载函数模板重新实现实验三中2小题中的函数Max1。 32)编写程序link.h,实现教材中例9-6的链表类。 在测试lab9_1.cpp中定义两个整型链表A和B,分别插入5个元素,然后把B中的元素加入A的尾部。 33)编写程序queue.h,用链表实现队列(或栈)类。 在测试程序lab9_1.cpp中定义一个整型队列(或栈)对象,插入5个整数,压入队列(或栈),再依次取出并显示出来。 34)(选做)将直接插入排序、直接选择程序、冒泡排序、顺序查找函数封装到教材中第9章的数组类模板中,作为成员函数。 实现并测试这个类。 35)(选做)定义一个对people类对象数组按编号排序的函数,一个按编号查找people对象的函数。 在测试程序中使用前面实验得到的结果定义教师数组和学生数组,分别对教师数组和学生数组进行排序和查找。 36)(选做)定义course(课程)类,有属性: 课程名charname[21]、成绩shortscore;在实验7中的student类中增加属性: 所修课程courses,为课程类对象。 在测试程序测试这个类。 学生类之间的关系如图9-1所示。 图9-1实验任务4的类图 3.主要仪器设备及软件: PC+Windows2000+VC6.0 实验十泛型程序设计与C++标准模板库实验(选做) (设计性实验2学时) 1.目的要求: 掌握对数组元素排序的方法;掌握对数组元素查找的方法;应用标准C++库(STL)实现查找与排序。 2.实验内容: 37)在C++标准模板库中,队列类(queue)的成员函数queue: : push()在队列的一端添加元素,queue: : pop()从非空的队列中删除最后一个元素,queue: : empty()判断队列是否为空,queue: : back()返回非空队列的最后一个元素,queue: : front()返回非空队列的第一个元素,queue: : size()返回队列中元素的个数,请构造一个int类型的队列,对这个队列应用上述几个函数,体会队列这种数据结构的特点和其成员函数的用法。 38)对于一个包含特定个数整型数据的数组A,对于从键盘输入的任意数,使用C++标准模板库中的find()查找在A中的位置,使用sort()来对数组进行升序或降序排列,排序前和排序后的结果使用copy()输出。 3.主要仪器设备及软件: PC+Windows2000+VC6.0 实验十一流内库与输入、输出实验 (设计性实验2学时) 1.目的要求: 熟悉流类库中常用的类及其成员函数的用法;学习标准输入输出及格式控制;学习对文件的应用方法(二进制文件、文本文件)。 2.实验内容: 39)观察以下程序的输出,注意对输出格式的控制方法。 40)编写程序,打开指定的一个文件,在每一行前加行号。 41)(选做)使用实验10中的学生类数组,输入数据并显示出来,使用I/O流把此数组的内容写入磁盘文件,再显示出文件内容。 3.主要仪器设备及软件: PC+Windows2000+VC6.0 实验十二异常处理实验 (设计性实验2学时) 1.目的要求: 正确理解C++的异常处理机制;学习异常处理的定义和执行过程。 2.实验内容: 定义一个异常类CException,有成员函数Reason(),用来显示异常的类型。 在子函数中触发异常,在主程序中处理异常,观察程序的执行过程。 3.主要仪器设备及软件: PC+Windows2000+VC6.0 实验十三Windows应用程序框架实验(选做) (基本操作实验2学时) 1.目的要求: 简单了解Windows程序设计 2.实验内容: 练习使用VC++的AppWizard(应用程序向导)生成一个最简单的Windows应用程序。 3.主要仪器设备及软件: PC+Windows2000+VC6.0 五实验报告的格式(本部分要求各学院设计成表格作为教学大纲附件) 实验完毕,应用专门的实验报告本,根据预习和实验中的现象及数据记录等,及时而认真地写出实验报告。 实验报告一般包括以下内容: 实验(序号)实验名称 (一)实验目的 (二)仪器工具及材料列出实验中所使用的主要仪器工具及材料。 (三)内容及程序应简明扼要地写出实验步骤流程。 (四)结果及分析应用文字、表格、图形等形式将数据表示出来。 根据实验要求对数据进行分析和误差处理。 (五)问题讨论结合有关理论对实验中的现象、产生的误差等进行讨论和分析,以提高自己的分析问题、解决问题的能力,并提出应注意的事项,也为以后的科学研究打下一定的基础。 六、考核方式、方法及实验成绩评定方法 1、考核方式、方法: 面向对象程序设计实验课成绩占面向对象程序设计总成绩的20%,即共20分。 考核方法为采用实验课随堂检查学生完成情况及现场提问让学生回答,根据学生完成情况及答辩情况给出分次给出平时成绩,共15分。 学生在完成实验后应将自己的实验过程,结果,经验写入实验报告并提交实验报告,实验报告成绩占5分,根据学生实验报告的书写质量打出。 2、实验成绩评定方法: 评定各级成绩时,可参考以下标准: (一)优秀(很好)18-20 能正确理解实验的目的要求,能独立、顺利而正确地完成各项实验操作,会分析和处理实验中遇到的问题,能掌握所学的各项实验技能,能较好地完成实验报告及其它各项实验作业,有一定创造精神和能力。 有良好的实验工作作风和习惯。 (二)良好(较好)15-17 能理解实验的目的和要求,能认真而正确地完成各项实验操作,能分析和处理实验中遇到的一些问题。 能掌握所学实验技能的绝大部分,对难点较大的操作完成有困难。 能一般完成实验报告和其它实验作业。 有较好的实验习惯和工作作风。 (三)中等(一般)12-14 能粗浅理解实验目的要求,能认真努力进行各项实验操作,但技巧较差。 能分析和处理实验中一些较容易的问题,掌握实验技能的大部分。 有30%掌握得不好。 能一般完成各项实验作业和报告。 处理问题缺乏条理。 工作作风较好。 能认真遵守各项规章制度。 学习努力。 (四)及格(较差)10-12 只能机械地了解实验内容,能一般性地按实验步骤完成实验操作,能完成60%所学的实验技能,有些虽作但不准确。 遇到问题常常缺乏解决的办法,在别人启发下能作些简单处理,但效果不理想。 能一般完成实验报告,能认真遵守实验室各项规章制度,工作中有小的习惯性毛病(如工作无计划,处理问题缺乏条理)。 (五)不及格(很差)0-9 盲目地操作,只掌握50%的所学实验技能。 有些实验虽能作,但一般效果不好,操作不正确。 工作忙乱无条理。 一般能遵守实验室规章制度,但常有小的错误。 实验报告较多的时候有结果,遇到问题时说不明原因,在教师指导下也较难完成各项实验作业。 或有些小聪明但不努力,不求上进。 七、实验主要应配套仪器设备及台(套)数(以一个实验教学班40人为标准) 序号 仪器设备名称 数量 备注 1 计算机 15台 2 C++开发工具软件 1套 网络版 八、主要教材及参考书 1.《C++语言程序设计习题与实验指导》,郑莉、傅仕星编著,北京: 清华大学出版社,2004 2.《C++语言程序设计(第四版)》,郑莉、董渊编著,北京: 清华大学出版社,2005
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 实验教学 大纲