1、实验一 类与对象一实验目的本实验的目的是使学生了解基本的面向对象程序设计方法,掌握面向对象程序的工作原理,面向对象程序的调试方法。掌握类的概念和定义方式,掌握对象的定义方式、访问方式以及与对象相关的概念及使用方法。二实验环境Visual C+ 6.0 及以上版本。 三预习要求熟悉掌握类和对象的基本概念及相关知识。根据老师布置的实验题目,提前分析题目要求所需要的类,设计好解决题目要求需要的对象个数,设计解决问题需要的主函数等。题目可以从以下题目中选择一个。1定义一个学生类 Student,学生类中有 3 个私有数据成员:name(姓名)、cls(班级)、grade(年级);3 个公有成员函数;S
2、tudent(构造函数)、display、Student(析构函数)。使用构造函数为 Student 类的对象赋值(name 使用动态内存分配空间),display 负责显示学生的基本信息,在析构函数中释放动态分配的内存。2设计一个点类 Point,编写一个求两点距离的计算器。3设计一个正整数字符串转换器,要求先设计一个类 IntToStr,将任意一个正整数转换成相应的字符串。例如正整数 12345 转换成字符串“12345” 。4其它和本实验目的相符的题目,根据学生实际情况增加相应的题目,但题目难度不应低于以上三个题目。注意:从以上题目中选择一个作为实验题目。四实验原理1.按照题目要求分析解
3、决问题需要的类;2.进行类的设计并实现;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.设计主函数实现题目要求。五实验内容利用
6、 Visual C+6.0 调试事先设计好的程序,注意观察调试过程中出现的问题,并解决这些问题完成实验题目的要求。六思考题1. 基类和派生类的构造顺序;2. 基类和派生类的析构顺序。七实验报告要求要求叙述实验目的、实验所需的条件与工具、实验内容与实验的完成情况。重点记录实验中出现的问题、对出现问题原因的分析及解决办法等。实验三 多态性一实验目的本实验的目的是使学生了虚函数的作用,掌握多态的概念、编译时多态、运行时多态,掌握运算符重载和虚函数的用法。二实验环境Visual C+ 6.0 及以上版本。 三预习要求熟悉掌握 C+多态的相关知识。根据老师布置的实验题目,提前分析题目要求所需要的类,设计
7、好解决题目要求需要的对象个数,设计解决问题需要的主函数等。题目可以从以下题目中选择一个。1定义一个实数类 Real,类中包括一个数据成员 real,构造函数、display()函数以及重载的+、-、*、/运算符。用公有继承方式声明一个复数类 Complex,该类包括两个数据成员 real,image,并重载 Real 类的函数和+、-、*、/运算符。编写一个复数四则运算计算器。2.Shape 是一个几何图形的基类,它至少有求自身周长函数 Circumference()和求自身面积函数 Area()。从 Shape 类派生出 Circle 类、Ellipse 类、Triangle 类和 Rect
8、angle 类,分别继承基类 Shape 的 Circumference()和 Area(),并增加新的成员。编写主函数,定义各派生类对象,求多派生类对象的周长之和、面积之和。3其它和本实验目的相符的题目,根据学生实际情况增加相应的题目,但题目难度不应低于以上两个题目。注意:注意:从以上题目中选择一个作为实验题目。四实验原理1.按照题目要求分析解决问题需要的类;2.进行类的设计并实现;3.分析解决问题需要定义的对象及对象间的消息传递关系;4.设计主函数实现题目要求。五实验内容利用 Visual C+6.0 调试事先设计好的程序,注意观察调试过程中出现的问题,并解决这些问题完成实验题目的要求。六
9、思考题1. 基类指针指向派生类对象与派生类指针指向基类对象的区别;2. 虚函数的作用。七实验报告要求要求叙述实验目的、实验所需的条件与工具、实验内容与实验的完成情况。重点记录实验中出现的问题、对出现问题原因的分析及解决办法等。实验四 面向对象综合应用一实验目的掌握面向对象程序设计方法在实际中的应用。二实验环境Visual C+ 6.0 及以上版本。 三预习要求熟悉掌握 C+多态的相关知识。根据老师布置的实验题目,提前分析题目要求所需要的类,设计好解决题目要求需要的对象个数,设计解决问题需要的主函数等。题目可以从以下题目中选择一个。1以现实生活中的电梯为原型,进行需求调查,了解电梯的各个功能。抽
10、象出电梯类,设计电梯类的成员函数和数据成员,完成电梯类的完整定义及实现。编写应用程序,使用电梯类,比较仿真程序与现实中电梯运行状况的异同。2以现实生活中的 DVD 为原型,进行需求调查,了解 DVD 的各个功能。抽象出 DVD类 DVD,设计 DVD 类的成员函数和数据成员,完成 DVD 类的完整定义及实现。编写应用程序,使用 DVD 类,比较仿真程序与现实中 DVD 运行状况的异同。3以现实生活中的 MP3 为原型,进行需求调查,了解 MP3 的各个功能。抽象出 MP3类 MP3,设计 MP3 类的成员函数和数据成员,完成 MP3 类的完整定义及实现。编写应用程序,使用 MP3 类,比较仿真
11、程序与现实中 MP3 运行状况的异同。4其它和本实验目的相符的题目,根据学生实际情况增加相应的题目,但题目难度不应低于以上两个题目。注意:注意:从以上题目中选择一个作为实验题目。四实验原理1.按照题目要求分析解决问题需要的类;2.进行类的设计并实现;3.分析解决问题需要定义的对象及对象间的消息传递关系;4.设计主函数实现题目要求。五实验内容利用 Visual C+6.0 调试事先设计好的程序,注意观察调试过程中出现的问题,并解决这些问题完成实验题目的要求。六设计方案下面给出题目 1(电梯仿真)的 3 中设计方案,从方案 1 到方案 3 越来越详细,学生可以从方案 1 开始,如果觉得有难度,再参
12、考方案 2,以此类推。方案 11功能要求(需求分析)以现实生活中的电梯为原型,进行需求调查,了解电梯的各个功能。2类设计根据第一步中获得的电梯运行情况,抽象电梯类(CElevator) ,设计 CElevator 的成员函数和数据成员,完成 CElevator 类的完整定义及实现。3应用编写应用程序,使用电梯类,比较仿真程序与现实中电梯运行状况的异同。4其它说明 如果采用“Windows 控制台应用程序”设计仿真程序,其运行状况必定会和现实有所差异,因为现实中多种情况是并发发生的,如电梯内、电梯外各楼层会有人同时按按钮。而控制台程序一个时刻只能一件事情发生。因此需要对电梯运行情况进行合理简化。
13、 如果采用“MFC 应用程序”等具有并发或多线程的程序设计模式,将会和现实情况比较类似,但还会有所不同,也要进行合理简化。方案二1功能要求(需求分析)以现实生活中的电梯为原型,进行需求调查,了解电梯的各个功能。2类设计根据第一步中获得的电梯运行情况,抽象电梯类(CElevator) ,设计 CElevator 类的成员函数和数据成员,完成 CElevator 类的完整定义及实现。(1)成员函数 构造函数 CElevator(int uLayers, int lLayers);/参数个数自定 电梯外部候梯按钮操作 PressOuterButton,函数自行定义 电梯内部数字按键操作 PressI
14、nnerDigitalButton,函数自行定义 电梯内部开合控制操作 PressOpen_CloseButton,函数自行定义 电梯内部报警操作 PressAlert,函数自行定义 电梯运行 run,函数自行定义(2)数据成员 电梯最高能到达的楼层,UpperLayers; /电梯最高能到达的楼层 电梯最低能到达的楼层 LowerLayers; /电梯最低能到达的楼层 电梯状态 States5; /运行或停止;当前所在楼层;运行方向;开合;是否故障 DigitalButtonMostLayers;/ 整形数组,记录电梯内 i 楼层是否被按下 OuterDownButtonMostLayers
15、;/整形数组,记录电梯外 i 楼层向下按钮是否被按下 OuterUpButtonMostLayers;/整形数组,记录电梯外 i 楼层向上按钮是否被按下 MostLayers 为常数3应用编写应用程序,使用电梯类,比较仿真程序与现实中电梯运行状况的异同。4其它说明 如果采用“Windows 控制台应用程序”设计仿真程序,其运行状况必定会和现实有所差异,因为现实中多种情况是并发发生的,如电梯内、电梯外各楼层会有人同时按按钮。而控制台程序一个时刻只能一件事情发生。因此需要对电梯运行情况进行合理简化。 如果采用“MFC 应用程序”等具有并发或多线程的程序设计模式,将会和现实情况比较类似,但还会有所不
16、同,也要进行合理简化。方案三1功能要求(需求分析)以现实生活中的电梯为原型,进行需求调查,了解电梯的各个功能。2类设计根据第一步中获得的电梯运行情况,抽象电梯类(CElevator) ,设计 CElevator 类的成员函数和数据成员,完成 CElevator 类的完整定义及实现。(1)类定义如下const int MostLayers = 100;class CElevatorpublic:CElevator();/构造函数CElevator(int uLayers, int lLayers);/构造函数CElevator(CElevator /拷贝构造函数void PressOuterBu
17、tton(int direction, int floor);/电梯外部各楼层操作按钮void PressInnerDigitalButton(int floor);/电梯内部数字按钮void PressOpen_CloseButton(int operate);/电梯内部开合控制按钮void PressAlert();/电梯内部报警按钮void run();/电梯运行CElevator();/析构函数protected:void OpenElevator();/打开电梯void CloseElevator();/关闭电梯void UserOperate();/由于程序单线程运行,因此将用户的
18、所有操作集中在每一层停止的时候完成。const int UpperLayers; /电梯最高能到达的楼层const int LowerLayers; /电梯最低能到达的楼层int States5; /电梯当前状态,States0表示运行或停止,0停止,1运行,初值0;States1表示当前所在楼层,初值1;States2表示运行方向,向上0,向下1,初值0;States3表示开合,0开,0合,初值1;States4表示是否故障,0正常,1故障,初值1int DigitalButtonMostLayers;/整形数组,i为楼层且i!=0,i0,iLowerLayers-1表示电梯内地上i楼层按钮
19、是否被按下,0未按,1按下int OuterDownButtonMostLayers;/整形数组,i为楼层且i!=0,i0,iLowerLayers-1表示电梯外i层向下按钮是否被按下,0未按,1按下int OuterUpButtonMostLayers;/整形数组,i为楼层且i!=0,i0,iLowerLayers-1表示电梯外i层向上按钮是否被按下,0未按,1按下;(2)类实现:根据上面类的定义,写出CElevator的实现。3应用编写应用程序,使用电梯类,比较仿真程序与现实中电梯运行状况的异同。4其它说明 如果采用“Windows 控制台应用程序”设计仿真程序,其运行状况必定会和现实有所差异,因为现实中多种情况是并发发生的,如电梯内、电梯外各楼层会有人同时按按钮。而控制台程序一个时刻只能一件事情发生。因此需要对电梯运行情况进行合理简化。 如果采用“MFC 应用程序”等具有并发或多线程的程序设计模式,将会和现实情况比较类似,但还会有所不同,也要进行合理简化。七思考题1. 仿真程序的设计;2. 仿真程序与现实情况的对比分许。八实验报告要求要求叙述实验目的、实验所需的条件与工具、实验内容与实验的完成情况。重点记录实验中出现的问题、对出现问题原因的分析及解决办法等。