面向对象程序设计实验指导书_第1页
面向对象程序设计实验指导书_第2页
面向对象程序设计实验指导书_第3页
面向对象程序设计实验指导书_第4页
面向对象程序设计实验指导书_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一 类与对象一实验目的本实验的目的是使学生了解基本的面向对象程序设计方法,掌握面向对象程序的工作原理,面向对象程序的调试方法。掌握类的概念和定义方式,掌握对象的定义方式、访问方式以及与对象相关的概念及使用方法。二实验环境Visual C+ 6.0 及以上版本。 三预习要求熟悉掌握类和对象的基本概念及相关知识。根据老师布置的实验题目,提前分析题目要求所需要的类,设计好解决题目要求需要的对象个数,设计解决问题需要的主函数等。题目可以从以下题目中选择一个。1定义一个学生类Student,学生类中有3个私有数据成员:name(姓名)、cls(班级)、grade(年级);3个公有成员函数;Stude

2、nt(构造函数)、display、Student(析构函数)。使用构造函数为Student类的对象赋值(name使用动态内存分配空间),display负责显示学生的基本信息,在析构函数中释放动态分配的内存。2设计一个点类Point,编写一个求两点距离的计算器。3设计一个正整数>字符串转换器,要求先设计一个类IntToStr,将任意一个正整数转换成相应的字符串。例如正整数12345转换成字符串“12345”。4其它和本实验目的相符的题目,根据学生实际情况增加相应的题目,但题目难度不应低于以上三个题目。注意:从以上题目中选择一个作为实验题目。四实验原理1.按照题目要求分析解决问题需要的类;2

3、.进行类的设计并实现;3.分析解决问题需要定义的对象及对象间的消息传递关系;4.设计主函数实现题目要求。五实验内容利用Visual C+6.0调试事先设计好的程序,注意观察调试过程中出现的问题,并解决这些问题完成实验题目的要求。六思考题1.成员函数的工作原理;2.构造函数的调用;3.析构函数的调用。七实验报告要求要求叙述实验目的、实验所需的条件与工具、实验内容与实验的完成情况。重点记录实验中出现的问题、对出现问题原因的分析及解决办法等。实验二 继承与派生一实验目的本实验的目的是使学生了解类的继承与派生过程,掌握用类的继承的方法实现程序设计目标的方法。掌握类的继承与派生的概念、派生类的定义方式、

4、基类成员在派生类中的访问控制等。二实验环境Visual C+ 6.0 及以上版本。 三预习要求熟悉掌握类的继承和派生的相关知识。根据老师布置的实验题目,提前分析题目要求所需要的类,设计好解决题目要求需要的对象个数,设计解决问题需要的主函数等。题目可以从以下题目中选择一个。1定义一个学生类Student,类中包含3个私有数据成员:name(姓名)、sex(性别)、score(成绩)。用公有继承方式声明一个研究生类Graduate,该类中添加一个数据成员advisor(导师),并添加一个成员函数display来显示这些内容。2编写一个学生和教师数据输入和显示程序。其中,学生数据有编号、姓名、班级和

5、成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类Person;然后设计类Person的派生类:学生类Student和教师类Teacher;编写一个主函数,通过定义student、teacher的对象,完成相应功能。3其它和本实验目的相符的题目,根据学生实际情况增加相应的题目,但题目难度不应低于以上两个题目。注意:注意:从以上题目中选择一个作为实验题目。四实验原理1.按照题目要求分析解决问题需要的类;2.进行类的设计并实现;3.分析解决问题需要定义的对象及对象间的消息传递关系;4.设计主函数实现题目要求。五实验内容利用Visual C+6.0调试事先设计好的程序,注

6、意观察调试过程中出现的问题,并解决这些问题完成实验题目的要求。六思考题1. 基类和派生类的构造顺序;2. 基类和派生类的析构顺序。七实验报告要求要求叙述实验目的、实验所需的条件与工具、实验内容与实验的完成情况。重点记录实验中出现的问题、对出现问题原因的分析及解决办法等。实验三 多态性一实验目的本实验的目的是使学生了虚函数的作用,掌握多态的概念、编译时多态、运行时多态,掌握运算符重载和虚函数的用法。二实验环境Visual C+ 6.0 及以上版本。 三预习要求熟悉掌握C+多态的相关知识。根据老师布置的实验题目,提前分析题目要求所需要的类,设计好解决题目要求需要的对象个数,设计解决问题需要的主函数

7、等。题目可以从以下题目中选择一个。1定义一个实数类Real,类中包括一个数据成员real,构造函数、display()函数以及重载的+、-、*、/运算符。用公有继承方式声明一个复数类Complex,该类包括两个数据成员real,image,并重载Real类的函数和+、-、*、/运算符。编写一个复数四则运算计算器。2.Shape是一个几何图形的基类,它至少有求自身周长函数Circumference()和求自身面积函数Area()。从Shape类派生出Circle类、Ellipse类、Triangle类和Rectangle类,分别继承基类Shape的Circumference()和Area(),并

8、增加新的成员。编写主函数,定义各派生类对象,求多派生类对象的周长之和、面积之和。3其它和本实验目的相符的题目,根据学生实际情况增加相应的题目,但题目难度不应低于以上两个题目。注意:注意:从以上题目中选择一个作为实验题目。四实验原理1.按照题目要求分析解决问题需要的类;2.进行类的设计并实现;3.分析解决问题需要定义的对象及对象间的消息传递关系;4.设计主函数实现题目要求。五实验内容利用Visual C+6.0调试事先设计好的程序,注意观察调试过程中出现的问题,并解决这些问题完成实验题目的要求。六思考题1. 基类指针指向派生类对象与派生类指针指向基类对象的区别;2. 虚函数的作用。七实验报告要求

9、要求叙述实验目的、实验所需的条件与工具、实验内容与实验的完成情况。重点记录实验中出现的问题、对出现问题原因的分析及解决办法等。实验四 面向对象综合应用一实验目的掌握面向对象程序设计方法在实际中的应用。二实验环境Visual C+ 6.0 及以上版本。 三预习要求熟悉掌握C+多态的相关知识。根据老师布置的实验题目,提前分析题目要求所需要的类,设计好解决题目要求需要的对象个数,设计解决问题需要的主函数等。题目可以从以下题目中选择一个。1以现实生活中的电梯为原型,进行需求调查,了解电梯的各个功能。抽象出电梯类,设计电梯类的成员函数和数据成员,完成电梯类的完整定义及实现。编写应用程序,使用电梯类,比较

10、仿真程序与现实中电梯运行状况的异同。2以现实生活中的DVD为原型,进行需求调查,了解DVD的各个功能。抽象出DVD类DVD,设计DVD类的成员函数和数据成员,完成DVD类的完整定义及实现。编写应用程序,使用DVD类,比较仿真程序与现实中DVD运行状况的异同。3以现实生活中的MP3为原型,进行需求调查,了解MP3的各个功能。抽象出MP3类MP3,设计MP3类的成员函数和数据成员,完成MP3类的完整定义及实现。编写应用程序,使用MP3类,比较仿真程序与现实中MP3运行状况的异同。4其它和本实验目的相符的题目,根据学生实际情况增加相应的题目,但题目难度不应低于以上两个题目。注意:注意:从以上题目中选

11、择一个作为实验题目。四实验原理1.按照题目要求分析解决问题需要的类;2.进行类的设计并实现;3.分析解决问题需要定义的对象及对象间的消息传递关系;4.设计主函数实现题目要求。五实验内容利用Visual C+6.0调试事先设计好的程序,注意观察调试过程中出现的问题,并解决这些问题完成实验题目的要求。六设计方案下面给出题目1(电梯仿真)的3中设计方案,从方案1到方案3越来越详细,学生可以从方案1开始,如果觉得有难度,再参考方案2,以此类推。方案11功能要求(需求分析)以现实生活中的电梯为原型,进行需求调查,了解电梯的各个功能。2类设计根据第一步中获得的电梯运行情况,抽象电梯类(CElevator)

12、,设计CElevator的成员函数和数据成员,完成CElevator类的完整定义及实现。3应用编写应用程序,使用电梯类,比较仿真程序与现实中电梯运行状况的异同。4其它说明 如果采用“Windows控制台应用程序”设计仿真程序,其运行状况必定会和现实有所差异,因为现实中多种情况是并发发生的,如电梯内、电梯外各楼层会有人同时按按钮。而控制台程序一个时刻只能一件事情发生。因此需要对电梯运行情况进行合理简化。 如果采用“MFC应用程序”等具有并发或多线程的程序设计模式,将会和现实情况比较类似,但还会有所不同,也要进行合理简化。方案二1功能要求(需求分析)以现实生活中的电梯为原型,进行需求调查,了解电梯

13、的各个功能。2类设计根据第一步中获得的电梯运行情况,抽象电梯类(CElevator),设计CElevator类的成员函数和数据成员,完成CElevator类的完整定义及实现。(1)成员函数 构造函数CElevator(int uLayers, int lLayers);/参数个数自定 电梯外部候梯按钮操作PressOuterButton,函数自行定义 电梯内部数字按键操作PressInnerDigitalButton,函数自行定义 电梯内部开合控制操作PressOpen_CloseButton,函数自行定义 电梯内部报警操作PressAlert,函数自行定义 电梯运行run,函数自行定义(2)

14、数据成员 电梯最高能到达的楼层,UpperLayers; /电梯最高能到达的楼层 电梯最低能到达的楼层LowerLayers; /电梯最低能到达的楼层 电梯状态States5; /运行或停止;当前所在楼层;运行方向;开合;是否故障 DigitalButtonMostLayers;/整形数组,记录电梯内i楼层是否被按下 OuterDownButtonMostLayers;/整形数组,记录电梯外i楼层向下按钮是否被按下 OuterUpButtonMostLayers;/整形数组,记录电梯外i楼层向上按钮是否被按下 MostLayers为常数3应用编写应用程序,使用电梯类,比较仿真程序与现实中电梯运

15、行状况的异同。4其它说明 如果采用“Windows控制台应用程序”设计仿真程序,其运行状况必定会和现实有所差异,因为现实中多种情况是并发发生的,如电梯内、电梯外各楼层会有人同时按按钮。而控制台程序一个时刻只能一件事情发生。因此需要对电梯运行情况进行合理简化。 如果采用“MFC应用程序”等具有并发或多线程的程序设计模式,将会和现实情况比较类似,但还会有所不同,也要进行合理简化。方案三1功能要求(需求分析)以现实生活中的电梯为原型,进行需求调查,了解电梯的各个功能。2类设计根据第一步中获得的电梯运行情况,抽象电梯类(CElevator),设计CElevator类的成员函数和数据成员,完成CElev

16、ator类的完整定义及实现。(1)类定义如下const int MostLayers = 100;class CElevatorpublic:CElevator();/构造函数CElevator(int uLayers, int lLayers);/构造函数CElevator(CElevator &myElevator);/拷贝构造函数 void PressOuterButton(int direction, int floor);/电梯外部各楼层操作按钮void PressInnerDigitalButton(int floor);/电梯内部数字按钮void PressOpen_Cl

17、oseButton(int operate);/电梯内部开合控制按钮void PressAlert();/电梯内部报警按钮void run();/电梯运行CElevator();/析构函数protected:void OpenElevator();/打开电梯void CloseElevator();/关闭电梯void UserOperate();/由于程序单线程运行,因此将用户的所有操作集中在每一层停止的时候完成。const int UpperLayers; /电梯最高能到达的楼层const int LowerLayers; /电梯最低能到达的楼层int States5; /电梯当前状态,St

18、ates0表示运行或停止,0停止,1运行,初值0;States1表示当前所在楼层,初值1;States2表示运行方向,向上0,向下1,初值0;States3表示开合,0开,0合,初值1;States4表示是否故障,0正常,1故障,初值1int DigitalButtonMostLayers;/整形数组,i为楼层且i!=0,i<0时下标iLowerLayers表示电梯内地下i楼层按钮是否被按下,i>0,iLowerLayers-1表示电梯内地上i楼层按钮是否被按下,0未按,1按下int OuterDownButtonMostLayers;/整形数组,i为楼层且i!=0,i<0时下标iLowerLayers表示电梯外i层向下按钮是否被按下,i>0,iLowerLayers-1表示电梯外i层向下按钮是否被按下,0未按,1按下int OuterUpButtonMostLayers;/整形数组,i为楼层且i!=0,i<0时下标iLowerLayers表示电梯外i层向上按钮是否被按下,i>0,iLowerLayers-1表示电梯外i层向上按钮是否被按下,0未按,1按下;(2)类实现:根据上面类的定义,写出CElevator的实现。3应用编写应用程序,使用电梯类,比较仿真程序与现

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论