LIAOCHENGUNIVERSITY面向对象程序设计实验指导书聊城大学计算机学院2011年3月《面向对象程序设计》课程实验指导书I目录《面向对象程序设计》课程实验教学大纲.....................1实验一C++对C的扩充....................................1基本信息........................................................1实验预习........................................................1实验过程........................................................2实验数据和实验结果记录..........................................8实验结果分析....................................................8实验二类和对象.........................................8基本信息........................................................8实验预习........................................................8实验过程........................................................9实验数据和实验结果记录.........................................13实验结果分析...................................................13实验三继承和组合......................................13基本信息.......................................................13实验预习.......................................................13实验过程.......................................................14实验数据和实验结果记录.........................................19实验结果分析...................................................19实验四多态、友元、虚函数、模板.......................19基本信息.......................................................19实验预习.......................................................19实验过程.......................................................20实验数据和实验结果记录.........................................36实验结果分析...................................................36实验五课程设计........................................37基本信息.......................................................37实验预习.......................................................37实验过程.......................................................37实验数据和实验结果记录.........................................38实验结果分析...................................................38《面向对象程序设计》课程实验指导书1《面向对象程序设计》课程实验教学大纲课程名称:面向对象程序设计英文名称:ObjectOrientedProgramming设置形式:非独立设课课程模块:专业核心课实验课性质:专业基础实验课程编号:609324课程负责人:王玉亭大纲主撰人:王玉亭大纲审核人:左风朝一、学时、学分课程总学时:54实验学时:16课程学分:3二、适用专业及年级计算机科学与技术、信息管理与信息系统、电子商务、软件工程、网络工程三年级三、课程目标与基本要求《面向对象程序设计》是计算机技术专业的一门必修课程,面向对象软件开发方法是吸收了软件工程领域有益概念和有效的方法而发展起来的一种软件开发方法,它集抽象性、封装性、继承性和多态性于一体,可以帮助人们开发出模块化、数据抽象程度高的,体现信息隐蔽、可复用、易修改、易扩大等特性的程序。本课程主要介绍面向对象程序设计的方法和C++语言的基本概念以及基本Windows编程技术,其中以C++语言中的面向对象机制为主。学习者在学习过程中可以通过大量的程序实例和相关练习,逐步掌握C++的面向过程和面向对象的功能,从而掌握面向对象程序设计的基本知识和基本技能。在学习本课程中,只有通过大量的上机实验,才能使学生更好的掌握面向对象程序设计的方法,提高学生运用C++语言和面向对象思想进行编程来解决实际问题的能力。课程目标:使学生把在理论课程中所学知识融会贯通,在培养学生理论联系实际、实际动手能力的同时,着重培养学生思考问题、解决问题的能力和创造能力。面向对象程序设计实验教学中一贯提倡以学生为主体、教师为主导,充分发挥学生的主观能动性。基本要求:本课程实验要求学生通过对各部分实验的具体操作练习,能够熟练的掌握C++的基本内容,包括控制结构、基本数据类型、表达式、函数、指针和引用、类与对象的概念以及封装、继承和多态等面向对象程序设计的基础理论,在这些基础理论的基础上,掌握初步的Windows编程技术,包括消息传递机制、MFC应用程序框架、文档视图结构等。通过实验还要培养学生实事求是、踏实细致、严肃认真的科学态度和克服困难、坚韧不拔的工作作风,以及科学、良好的实验素质和习惯。四、主要仪器设备装有C++集成开发环境的微型计算机。。五、实验项目及教学安排序号实验项目名称实验基本方法和内容项目学时项目类型每组人数教学要求1C++对C的扩充使用集成开发环境开发简单C++程序;通过编写求斐波那契数列的第n项和前n项之和等简单程序,学习C++中的各种程序控制结构;通过解决Josephus问题,学习C++中各种运算符的功能、优先级和结合性;编写一个复杂的程序来学习自定义头文件的方法,学会调试多文件程序;分析五子棋游戏程序,学习指针的基本用法;编写简单程序学2基础1必修《面向对象程序设计》课程实验指导书2习动态内存的分配和释放,理解内存泄漏的危害。2类和对象分析完整的Person类的定义,学习类和对象的概念、定义和使用方法;实现一个带有头结点的单链表,学习用类和对象解决实际问题。4基础1必修3继承和组合分析完整的Person类和Employee类的定义,学习继承和派生概念;利用继承和组合的概念实现一个计算图形面积的类库。。4基础1必修4多态、友元、虚函数、模板利用抽象类设计一个计算图形面积的类库,学习动态联编的概念;分析Complex类的实现,理解重载运算符的意义;实现分数类,学习重载运算符方法,理解C++中的异常处理机制;用类模板实现一个带有头结点的单链表。4基础1必修5课程设计学习Windows程序的消息处理机制和编程模式,分析设计自动取款机模拟系统,学习面向对象编程方法的思想,练习用面向对象编程方法解决实际问题。2综合1选修六、考核方式及成绩评定根据学生实验出勤情况、实验态度、实验报告成绩、实验考核成绩等评定实验成绩。实验报告(含实验理论)占实验成绩的30%,实验技能(含实验态度)占实验成绩的30%,实验考核占实验成绩的40%。最终实验成绩占该课程考核总成绩的20%—30%。七、实验教科书、参考书1.实验教科书自编实验指导书。2.实验参考书《面向对象程序设计》课程实验指导书1实验一C++对C的扩充基本信息实验课程:面向对象程序设计设课形式:非独立课程学分:2实验项目:C++对C的扩充项目类型:基础项目学时:2实验预习实验目的和要求:1、了解在面向过程程序设计中C++对C语言的扩充与增强,并善于在编写程序过程中应用这些新的功能;2、熟悉在Eclipse集成开发环境下编辑、编译、连接和运行C++程序的方法;3、熟悉C++程序的结构和编程方法。实验内容和原理或涉及的知识点:1、验证大于等于4小于等于10000的偶数均可分解微量素数之和,并打印分解形式。2、编写程序进行模拟仿真。在码头酒馆和游船之间搭了一条长20米,宽4米的跳板,醉酒的船员和游客回艇时必须通过这个跳板。通过跳板时,有三种可能的结果:向前走,回到游船上休息,不再出来;转身回到酒馆,重新开始喝酒,不再出来;左右乱晃,落入水中淹死。果醉酒者每次走一步,一步走1米。而且他们向前走的概率是0.7,向左走、向右走和向后走的概率各为0.1。现在假设开始时他们都是站在酒馆的门口,编写程序模拟出若干个醉酒者的最终行为结果。3、编写程序解决Josephus问题。Josephus问题是说,一群小孩围坐成一圈,现在任意取一个数n,从当前编号为一的孩子开始数起,依次数到n(因为围成了一圈,所以可以不停的数下去),这时被数到n的孩子离开,然后圈子缩小一点。如此重复进行,小孩数不断减少,圈子也不断缩小。最后所剩的那个小孩就是胜利者。请找出这个胜利者。4、编写程序实现五子棋棋游戏。五子棋的规则为:双方各执一色棋子,轮流下子(将子放在棋盘的任一未下子的点上),直到有一方的棋子有5个排成一线(无论是横、竖还是斜均可),则棋局结束,该方胜利。《面向对象程序设计》课程实验指导书2实验条件:1、装有Windows操作系统的微型计算机;2、Eclipse集成开发环境和CDT插件;3、MinGW编译环境。实验设计方案:1、熟悉在Eclipse集成开发环境下编辑、编译、连接和运行C++程序的方法。2、借助流程图对程序进行“自顶向下、逐步求精”的结构化分析。3、熟悉C++中const、引用、new、delete的用法。4、利用“筛法”生成素数表。5、实现模拟仿真要利用随机值函数。实验过程1、根据实验预习阶段的实验设计方案,编写应用程序。参考代码如下。#includeiostream#includecmathconstintM=10001;//定义验证范围//函数CreatPrimeList():生成素数表voidCreatPrimeList(int*PrimeList,intn){inti,j;//将PrimeList的各元素设置为从0开始的正整数for(i=0;in;i=i+1){PrimeList[i]=i;}//分别从表中去掉已经确定的各素数的倍数(将其置为0)i=2;while(i=sqrt(n)){for(j=i+1;jn;j=j+1){if(PrimeList[j]!=0&&PrimeList[j]%PrimeList[i]==0){PrimeList[j]=0;}}//确定下一个素数的位置i=i+1;while(PrimeList[i]==0){i=i+1;}}}//函数NextPrimeNumber():求下一个素数intNextPrimeNumber(intp,int*PrimeList){p=p+1;while(PrimeList[p]==0){p=p+1;}returnPri