面向对象程序设计(C--)实验指导-精简版-befine(共12页).doc

上传人:飞****2 文档编号:19362583 上传时间:2022-06-06 格式:DOC 页数:12 大小:50KB
返回 下载 相关 举报
面向对象程序设计(C--)实验指导-精简版-befine(共12页).doc_第1页
第1页 / 共12页
面向对象程序设计(C--)实验指导-精简版-befine(共12页).doc_第2页
第2页 / 共12页
点击查看更多>>
资源描述

《面向对象程序设计(C--)实验指导-精简版-befine(共12页).doc》由会员分享,可在线阅读,更多相关《面向对象程序设计(C--)实验指导-精简版-befine(共12页).doc(12页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上面向对象程序设计(C+)实验指导一、实验环境本实验基于当前主流的面向对象开发平台,编码规范遵循主流的参考规范。二、编程语言和开发工具C+语言,开发工具不限,建议使用Visual C+ 6.0版本三、 编码规范(编码规范的要求)要求遵循良好的的程序设计习惯来设计实验和编写代码。(注:如果你将程序的很多功能全部放在一个长长的main()主函数中实现,这样的程序设计和编码风格会被扣分,请将不同的功能模块分别用函数来实现。)1在实验过程中应注意培养规范的编码风格:2标识符的命名应要求达到顾名思义的程度,一看就知道用来做什么;3提供足够的注释,注释文字清晰明了;4程序排版的要求

2、:a) 不同功能模块用空行分隔,使功能块一目了然;b) 基本上一条语句一行;同一层次的语句统一缩进对齐。四、实验见后文五、注意事项所有实验要求独立完成,同学之间可以讨论,但严禁抄袭,若发现雷同,抄袭者和被抄袭者此次实验成绩均记零分。实验一 C+基础 (2课时)实验目的和要求:1 掌握C+程序的基本格式与规范,学会编写简单的C+程序。2 理解C+程序结构的特点。3 熟悉C+程序的基本输入输出操作。4 掌握内联函数的使用方法。5 掌握函数重载的定义和使用方法。6 掌握C+内存的动态分配与释放方法。7 理解引用的概念,掌握引用的使用方法。预习内容: cin/cout的使用;new和delete的使用

3、;函数重载;const 常量。实验内容:1、用内联函数编写Fibonacci级数,使用if语句判断函数的出口,在程序中用cout语句输出提示信息,Fibonacci级数的公式为:内联函数inline int fib(int n)。2、程序Ex_Swap实现数据交换。分别用指针和引用作为函数mySwap的形参,并通过重载int、double型变量值的交换。3、设计一个函数,形参是引用类型,要求输入三个整数(cin输入,cout提示输入),按从小到大排序后输出,编程完整的程序并测试。4、程序Ex-Number实现下述功能:由17人围成一个圈,编号117,从第1号开始报数,报到3的倍数的人离开,一直

4、数下去,直到最后只剩下1个人,求此人的编号(要求用new和delete来分配、释放所需内存空间)。5、设计一个简单的计算器,能够进行加法、减法、乘法和除法功能(整数和浮点数)。格式是先输入一个数,然后输入运算符号,输入另一个数字,最后输出结果。(选做)实验二 类与对象(一)(2课时)实验目的和要求:1 掌握类、类的数据成员、类的成员函数的定义方式。2 理解类成员的访问控制方式。3 掌握对象的定义和操作对象的方法。4 理解构造函数和析构函数的定义与执行过程。5 掌握重载构造函数的方法。6 了解拷贝构造函数的方法。 预习内容类(数据成员和成员函数)的定义与访问权限设置;类的构造函数与析构函数的定义

5、与使用。 实验内容: 1、定义一个score类,其中包括私有数据成员和公有成员函数,即num学号Math高等数学成绩English英语成绩Programming程序设计成绩Inscore()输入学号和各科成绩,并计算平均成绩showscore()输出学号和各科成绩使用score类,输入某班n个学生的学号和各科成绩,然后求各个学生的平均成绩,并列表输出学生的学号、各科成绩和平均成绩。2、定义日期类型Date。要求:(1)包含年月日数据成员;提供默认构造函数、带年月日参数的构造函数、和拷贝构造函数;定义set成员函数可以设置日期;日期加一天操作;定义intput成员函数,输入日期信息,输入格式为“

6、YYYY-MM-DD”;定义print成员函数输出对象的日期。(2)编写一个可运行的完整程序,构造3个日期类型的对象,并输出相应的日期信息。 (3) 实现日期类型的对象的加减法运算。3、定义一个类Stock,记录一支股票交易的基本信息,信息包括交易日序号(表示本月的第几个交易日,用整数表示)、当日最高价、当日最低价、 当日开盘价和当日收盘价。尽量发挥想像力,为该类设计成员函数。4、在主函数中建立两个股票对象,分别存储该股票昨天和今天两天的信息,以当日收盘价计算该股票今天的涨幅。实验三 类与对象(二) (2课时)实验目的和要求:1.掌握静态成员的定义与使用。2理解对象指针的概念,学会使用指针引用

7、对象。3了解this指针的工作方式。4掌握静态数据成员和静态成员函数的基本使用方法。5理解友元与友元函数的作用,掌握其使用方法。6. 掌握类的接口与实现的分离技术的使用。预习内容: 指针引用对象;静态成员的定义与使用;友元的使用方法;实验内容: 1使用实验二中的股票类Stock,定义一个对象数组存放连续5个交易日的股票信息。编写一个主函数,计算两个Stock对象(前后两日)的当日收盘价计算当日涨幅。用指针引用对象数组中的两个对象。在主函数中调用该函数计算从第2个交易日开始每天的当日涨幅。2在Stock类中定义一个静态数据成员,记录当前Stock对象的数量。3设计一个成员函数Assign_sto

8、ck为对象赋值,其中的形式参数是对另一个Stock对象的引用,使用this指针避免对自己的赋值,在主函数中显示用Assign_stock赋值的对象。4定义一个友元函数计算Stock对象的的当日开盘价是否高于当日收盘价。若是,返回真,否则,返回假。实验四 派生类与继承(一) (2课时)实验目的和要求:1.理解类的继承的概念,能够定义和使用类的继承关系。2.掌握派生类的声明与定义方法。3.理解不同的继承类型预习内容: 派生类的声明与定义;不同的继承类型的差异。实验内容:1. 下面是一个含有派生类的程序:#include class A protected:/ private: int m,n; p

9、ublic:void set(int a, int b) m=a; n=b; void show() cout m n endl; ;class B : public A int s; public: void sets() s=m*n ; void shows() cout s endl; ;void main() B obj; obj.set(2,3); obj.show(); obj.sets(); obj.shows();在这个程序中,B类的函数sets()能否访问类A中的变量m和n?为什么?如果在类A中把m和n定义为私有成员,上面的程序能否通过编译?为什么?2定义一个基类MyArra

10、y,基类中可以存放一组整数。(实验程序注意保留,下次实验要用)class MyArraypublic:MyArray(int leng); MyArray();void Input();void Display();Protected:int *alist; /指向动态申请的一组空间int length; /整数的个数;要求:(1)基类中有构造函数、析构函数、输入数据和输出数据的函数。(2)定义一个SortArray继承自MyArray,在该类中定义函数实现排序功能。(3)定义一个类ReArray继承自MyArray,在该类中定义函数实现逆转功能。(4)定义一个类AverArray继承自MyA

11、rray,在该类中定义函数Aver()求解整数的平均值。3. 建立一个建筑物类的层次体系。其中,基类building包括保护数据成员name(建筑物名称)、floors(层数)和areas(总面积),由building类派生住宅类house和办公楼类office;住宅类house包括私有数据成员rooms(房间数)和balcony(阳台数);办公楼类office包括私有数据成员offices(办公室数)和meetingrooms(会议室数)。住宅类house和办公楼类office都含有构造函数和print函数,以分别用于对数据成员的初始化和输出。在主函数中,实例化house类和office类对

12、象并且将其数据输出。实验五 派生类与继承(二) (2课时)实验目的和要求:1.熟悉公有派生和私有派生的访问特性。2. 掌握单继承与多继承3.学习虚基类在解决二义性问题中的作用。预习内容:公有派生和私有派生的访问特性实验内容:1、定义NewArray类,同时继承了上次实验SortArray、ReArray和AverArray,使得NewArray类的对象同时具有排序、逆转和求平均值的功能。在继承的过程中声明为虚基类,体会虚基类在解决二义性的作用。2、定义一个动物(Animal)基类,具有Age、Weight等数据成员,由Animal类公有派生出鱼(Fish)类、陆地动物(TerrestrialA

13、nimal)类。Fish类有鳍(Fim)属性,TerrestrialAnimal类有腿(Leg)属性。从Fish和TerrestrialAnimal公有派生出爬行动物(Reptile)类,在继承过程中,注意把Animal设置为虚基类。如果不把Animal设置为虚基类,会有什么问题?编程试试看。当一个类有多个类派生而来,每个类的父类最总都归为一个类时,这个时候创建这个最后的子类是就会产生内存中的多份拷贝,为类避免这种现象发生,就要求使用虚继承。虚继承的格式:class 子类:virtual 继承方式 父类 实验六 多态性(2课时)实验目的和要求:1、理解静态多态性和动态多态性。2、掌握虚函数的定

14、义与使用方法。预习内容:静态多态性和动态多态性;虚函数的定义与使用方法。实验内容:1、 (1)定义一个类Animal,该类中可以存放动物的名字,并有一个Identify函数用于显示动物的种类。(2)定义两个类Cat和Dog,都继承自Animal,并重载Identify函数,不但要显示动物的种类,还要显示动物的名字。(3)定义Tiger类,继承自Cat,重载Identify函数,显示动物的种类和名字。2、 定义一个动物园类Zoo,管理动物,根据下面的提示编写动物类及相关函数。class zoopublic:zoo(unsigned int max); /构造函数,max为最多圈养的动物数zoo(

15、)delete residents; /析构函数unsigned int Accept(Animal *d); /接收动物void ListAnimals(); /显示动物园所有的动物private:unsigned int maxanimals; /动物园最多能圈养的动物数unsigned int numanimals; /动物园当前圈养的动物数Animal *residents; /指向动物园圈养的动物对象的指针数组3、 编写程序Ex_Shape:定义一个类CShape,包含两个虚函数Area(用来计算面积)和SetData(用来设计形状大小)。然后派生出矩形CRect类、圆CCircle

16、类,分别求其面积。最后定义一个CArea类,计算这几个形状的面积之和,各形状的数据通过CArea类的构造函数或成员函数来设置。实验七 函数模板与类模板(2课时)实验目的和要求:1.掌握函数模板及其声明方法。2.掌握模板函数及其生成方法。3.学习类模板的声明与使用方法。预习内容:模板函数及其生成方法实验内容:1.定义函数模板实现数组的冒泡排序,并在主函数中调用模板函数测试该算法。2. (选做)定义类模板实现栈的基本操作,栈的数据结构用带表头结点的单向链表实现。3. (选做)利用栈的类模板实现将输入的整数转换成八进制并输出。实验八 异常处理(2课时)实验目的和要求:1.正确理解C+的异常处理机制。

17、2.学习异常处理的定义和执行过程。预习内容:异常处理的定义和执行过程实验内容:1. 编写一个程序对一个任意维数组进行键盘赋值,并能够处理数组下标的溢出异常,观察程序执行流程。2.编写一个只能容纳10个整数的队列,当入队元素超出队列容量时,就抛出一个队列已满的异常;如果队列已空还要从中取出元素,就抛出一个队列已空的异常。实验九(综合实验):虚拟新生信息管理系统(8学时)实验目的和要求:1) 巩固和加深学生对C+课程的基本知识的理解和掌握;2) 掌握C+编程和程序调试的基本技能;3) 利用C+进行简单软件设计的基本思路和方法; 4) 训练学生综合运用面向对象程序设计的能力;5) 提高运用C+解决实

18、际问题的能力;6) 掌握书写程序设计说明文档的能力。预习内容:动态内存分配,类与对象的定义,类的静态成员,类的继承方式,派生类对象与基类对象的关系等面向对象程序设计知识。实验内容:设计简易新生信息管理系统(1) 已知技术参数或设计前提1、大学有若干个学院,每个学院有很多新生。有作为自然人的基本信息(如性别、年龄等等),有作为学生的基本信息(学号,成绩等)。2、每个学生都有记录的高考成绩(大学生);或者考研成绩。3、每个同学都有自己的名字(包括同名)、学号,每个人都是固定的,且学号唯一,学号格式按照我校现有格式记录。4、学校每学期都有期中期末考试,记录学生成绩是一个较大的工程。5、在校学生可凭借

19、本人学号和密码查询本人考试成绩及排名。6、专业人员可凭密码查询学生所有信息,包括作为基类对象的信息。(2) 设计内容及要求为简化设计,该系统只针对一年级新生,建立新生信息系统。尽可能的用面向对象程序设计的思想和方法,开发想象力,自己设计合理的数据和操作。按照继承体系来设计学生信息。基类为person,person派生Student,Student派生Graduates和UnderGraduates. 可以不按照此体系,但是必须采用某种合理的继承结构。(3) 采用win32 控制台应用程序的形式开发程序启动后提示画面如下(仅作参考,请自己发挥):1、 录入成绩? Enter 1;2、 修改成绩?

20、. ;3、 删除成绩?. ;4、 查询成绩?;请选择;操作完成后,退回到提示画面等待输入。实验技术性要求1) 实现学生数据录入、修改、删除以及按平均分、单科、总分排名次(2门课程) ;2) 数据录入、修改、删除的工作只能由专门人员负责;3) 在学校专门人员录入、修改成绩等完成以后,学生便可查找自己的信息;4) 查找成绩时需要输人本人学号及口令(预设);5) 学生本人可以修改口令;6) 适当加入异常的处理;7) 基类和派生类功能相似的函数注意设为虚函数。实验报告要求1) 课程设计名称、班级号、学号和学生姓名;2) 课程设计目的和要求;3) 课程设计任务内容;4) 详细设计说明;5) 软件使用说明;6) 课程设计心得与体会;7) 附录1:部分程序清单(带有较详细的注释)。专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com