ImageVerifierCode 换一换
格式:DOC , 页数:33 ,大小:577.50KB ,
资源ID:5826148      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/5826148.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【xrp****65】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【xrp****65】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(面向对象程序设计实验教学大纲.doc)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

面向对象程序设计实验教学大纲.doc

1、面向对象程序设计实验教学大纲课程总学时:64 学分:4 实验学时:16 实验个数: 6个 实验学分:1分课程性质:专业必修课 适用专业:计算机类专业教材及参考书:C+语言程序设计(第四版),郑莉、董渊编著,北京:清华大学出版社,2011大纲执笔人: 大纲审定人:一、实验课的性质与任务本课程实验大纲是面向计算机专业学生开设的C+程序设计实验课计划指导大纲,是依据面向对象程序设计课程教学计划指导大纲编制。本课程主要讲述了利用C+进行程序设计的思想和方法,既有面向过程和面向对象的程序设计的理论知识,又包括极强的实践应用能力的培养。本实验大纲力求结合该课程教学计划大纲的相应内容,由浅入深的指导学生了解

2、和掌握如何利用C+程序设计语言进行程序设计,提高学生的动手能力,做到理论和实践相结合,培养学生理解,分析程序,编写,调试程序的能力,使之能把程序设计应用到今后的专业学习中。二、实验目的与要求1实验目的通过本课程的学习,使学生掌握面向过程的程序设计思想和编程思路,初步掌握面向对象的程序设计思想,学会调试程序,能独立编写实用的小型程序。2实验要求(1) 学生应该自始至终贯彻课程中所介绍的程序设计风格,养成良好的编程习惯;(2) 应独立完成所布置习题。为保证尽量在统一安排的上机时间内编译运行通过程序,学生应事先设计好程序。三、实验项目及内容提要面向对象程序设计实验课程 (071016)序号实验编号实

3、验名称学时必做选做学分数实验类型内容提要 基本操作验证综合设计11类与对象4函数重载,类的设计与使用22C+程序的结构2作用域与生存期,静态成员33数组、指针与字符串4三种常见编程元素的使用44继承与派生2派生类的设计与使用55多态性2运算符重载、动态多态66模板和文件2模板,异常处理机制的设计四、实验内容安排:实验一 类与对象( 设计性实验 4学时)1. 目的要求:1) 掌握类的定义和使用;掌握类对象的声明;练习具有不同访问属性的成员的访问方式;观察构造函数和析构函数的执行过程;2) 学习类组合使用方法;3) 使用VC+的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函

4、数的执行顺序。2. 实验内容:1) 编写重载函数Max1可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。#include using namespace std;int Max1(int a,int b)/两个整形求最大值 int c; c=(ab)?a:b; coutcb)?a:b; coutcb)?(ac)?a:c):(bc)?b:c); coutdendl; coutnb)?(ac)?a:c):(bc)?b:c); coutdendl; coutnendl; return d;void main() int a=1,b=8,c=12; double a1=4.2,b1=

5、1.8,c1=6.7; cout原数为:nendl; couta=a b=b c=cendl; coutnendl; couta1=a1 b1=b1 c1=c1endl; coutnendl; cout(a,b)两个整形求最大值endl; Max1(a,b); coutnendl; cout(a,b,c)三个整形求最大值endl; Max1(a,b,c); cout(a1,b1)两个双精度数求最大值endl; Max1(a1,b1); coutnendl; cout(a1,b1,c1)三个双精度数求最大值endl; Max1(a1,b1,c1);2) 写一个函数,具有一个引用作为形参参数,在函

6、数中改变引用变量的值,观察实参变量的变化。#includeusing namespace std;swap(int &x);void main()int a; coutplease input a number: a=; scanf(%d,&a); swap(a); coutnow: ; couta=aendl;swap(int &x) coutplease input a number: x=; scanf(%d,&x); return x;3) 定义一个CPU类,包含等级(Rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,ran

7、k为枚举类型CPU_Rank,定义为enum CPU_RankP1=1,P2,P3,P4,P5,P6,P7,frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。第一种:#includeusing namespace std;class CPU public:int run();int stop();CPU(int frequency1,float voltage1)coutbuild!endl; frequency=frequency1; voltage=voltage1; coutfrequency= frequency MHzendl

8、; coutvoltage= voltageendl;CPU()coutdestory!endl; private: int frequency; float voltage;enum CPU_RankP1=1,P2,P3,P4,P5,P6,P7;void main() CPU a(3500,30);第二种:#includeusing namespace std;class CPU public:int run();int stop();CPU( int frequency1,float voltage1):frequency(frequency1),voltage(voltage1)cout

9、build!endl;coutfrequency= frequency MHzendl; coutvoltage= voltageendl;CPU()coutdestory!endl; private: int frequency; float voltage;enum CPU_RankP1=1,P2,P3,P4,P5,P6,P7;void main()int frequency; float voltage; coutfrequency; coutvoltage; CPU a(frequency,voltage);4) 定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram

10、)、光驱(cdrom)等等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类,为以上的类编写构造和析构函数,观察组合类和内嵌类的构造函数和析构函数的调用顺序。#includeusing namespace std;class CPUpublic:CPU() coutcpu build!endl;CPU() coutcpu destory!endl;class RAMpublic:RAM() coutram build!endl;RAM() coutram destory!endl;class CDR

11、OMpublic:CDROM() coutcdrom build!endl;CDROM() coutcdrom destory!endl;class Computerprivate:CPU cpu;RAM ram;CDROM cdrom;public:Computer() coutComputer build!endl; Computer() coutComputer destory!endl; ;int main() Computer A;5) 为题目2)的类编写复制构造函数,在主函数中利用复制构造的方式创建新的对象,观察对象的状态。#includeusing namespace std;c

12、lass A int a;public:A(int a1=0) a=a1;A(A &p);int getA() return a; A:A(A &p) a=p.a; void main() A a(2); cout原本结果:a.getA()endl; A b(a); cout复制结果:b.getA()endl;6) 思考并回答以下概念:函数重载,引用,类,对象,数据成员,函数成员,访问属性,构造函数,析构函数,类的组合,内嵌对象,初始化列表,复制构造函数。3. 主要仪器设备及软件:PC+Windows 2000+VC 6.0实验二 C+程序的结构( 设计性实验 2学时)1. 目的要求: 1)

13、观察程序运行中变量的作用域、生存期和可见性;2) 学习类的静态成员的使用;3) 学习多文件结构在C+程序中的使用。2. 实验内容:1) 实现客户机(CLIENT)类。定义字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。#includeusing namespace std;class CLIENT public: static void ChangeServerName()/静态函数ChangeServerName()改变服务器名称 cout the Client

14、Num:ClientNum=ClientNumendl; cout the ServerName:ServerName=ServerNameendl; coutServerName; coutnendl; coutnow the ServerName:ServerName=ServerNameendl; private: static char ServerName;/字符型静态数据成员ServerName,保存其服务器名称 static int ClientNum;/整型静态数据成员ClientNum,记录已定义的客户数量;char CLIENT:ServerName=t;int CLIEN

15、T:ClientNum=0;void main() CLIENT A; CLIENT:ChangeServerName();2) 利用多文件结构实现题目1),在头文件client.h中定义类,在文件client.cpp中实现该类,在文件test.cpp 中测试这个类,观察相应的成员变量取值的变化情况,要求ClientNum能够实时记录客户机对象的数量。 在文件client.cpp中实现该类#includeclient.h#includeusing namespace std;char CLIENT:ServerName=t;int CLIENT:ClientNum=0;void CLIENT:

16、inputServerName() /静态函数ChangeServerName()改变服务器名称 coutServerName; / coutnow the ServerName:ServerName=ServerNameendl; ClientNum+; coutnow the ClientNum:ClientNum=ClientNumendl; CLIENT:CLIENT() ClientNum-; coutnow the ClientNum:ClientNum=ClientNumendl; 在文件test.cpp 中测试这个类#includeclient.h#includeusing n

17、amespace std;void main() coutbegain!endl; CLIENT A; CLIENT:inputServerName(); CLIENT B; CLIENT:inputServerName(); coutend!endl; 在头文件client.h中定义类class CLIENT public: static void inputServerName(); CLIENT(); private: static char ServerName;/字符型静态数据成员ServerName,保存其服务器名称 static int ClientNum;/整型静态数据成员Cl

18、ientNum,记录已定义的客户数量;3) 思考并回答以下概念: 类的静态数据成员,类的静态函数成员,多文件结构,文件包含。3. 主要仪器设备及软件:Windows 2000+VC 6.0实验三 数组、指针与字符串实验(设计性实验 4学时)1. 目的要求:1) 学习使用数组;学习字符串数据的组织和处理;学习标准C+库的使用;2) 掌握指针的使用方法;练习通过debug观察指针的内容及其所指的对象的内容;练习通过动态内存分配实现动态数组,并体会指针在其中的作用;3) 分别使用字符数组和标准C+库练习处理字符串的方法。2. 实验内容:1) 编写一个类用于处理33矩阵转置,测试转置的效果,输出转置前

19、后的矩阵。#includeusing namespace std;class Point public:Point()/构造函数里赋值 for(i=0;i3;i+)for(j=0;jaij;move()/转置 for(i=0;i3;i+)for(j=0;j3;j+)bij=aji;void show()/显示转置结果 for(i=0;i3;i+)for(j=0;j3;j+)coutbij;couttendl;private:int i;/行int j;/列 int a33;/原数组int b33;/转置数组;int main()int i,j;int x;coutassignment begi

20、n!endl; coutPlease enter the valuesendl;Point a1; a1.move(); coutresult:endl; a1.show(); return 0;2) 定义一个具有构造函数和析构函数的类,如实验一的CPU类,定义一个CPU的对象数组,观察构造函数的析构函数的调用过程。#includeusing namespace std;class CPUpublic:CPU(int xx,int yy,int tt)x=xx;y=yy;t=tt;coutt build !endl;CPU()coutt No !endl;private:int x,y,t;i

21、nt main()CPU cpu3=CPU(1,2,1),CPU(3,4,2),CPU(5,6,3);return 0;3) 利用动态内存分配的方式重新完成题目2)。#includeusing namespace std;class CPUpublic:CPU():x(0),y(0),t(0)coutbegain !endl; CPU(int xx,int yy,int tt):x(xx),y(yy),t(tt)void move(int xx,int yy,int tt)x=xx;y=yy;t=tt;coutt build !endl;CPU()coutt No !endl;private:

22、int x,y,t;int main()CPU *p=new CPU3;p0.move(1,2,1); p1.move(3,4,2); p2.move(5,6,3); coutend !endl;delete p;return 0;4) 使用系统提供的string类定义字符串对象并初始化,实现从原始字符串中提取一个子串。#include#includeusing namespace std;int main()int i,j; string A=abcdefghijklnm;string B=123456789; coutA=Aendl;couti;coutj; string a=A.subs

23、tr(i-1,j);/从位置三开始的九个字符coutaendl;coutnendl;coutB=Bendl; couti;coutj;string b=B.substr(i-1,j);/从位置七开始的两个字符coutbendl;return 0;5) 选做:定义一个Point(二维点类)的对象数组,利用该数组实现直线的线性拟合。Point.h#ifndef _POINT_H#define _POINT_Hclass Pointpublic:Point(float x=0,float y=0):x(x),y(y)float getX() const return x;float getY() c

24、onst return y;private:float x,y;#endif 3_5.cpp/*定义一个Point(二维点类)的对象数组,利用该数组实现直线的线性拟合。*/#includePoint.h#include#includeusing namespace std;float lineFit(const Point points,int nPoint)int i;float avgX=0,avgY=0;float lxx=0,lyy=0,lxy=0;for(i=0;inPoint;i+)avgX+=pointsi.getX()/nPoint;avgY+=pointsi.getY()/n

25、Point;for(i=0;inPoint;i+)lxx+=(pointsi.getX()-avgX)*(pointsi.getX()-avgX);lyy+=(pointsi.getY()-avgY)*(pointsi.getY()-avgY);lxy+=(pointsi.getX()-avgX)*(pointsi.getY()-avgY);coutThis line can be fitted by y=ax+b.endl;couta=lxy/lxx ;coutb=avgY-lxy*avgX/lxxendl;return static_cast(lxy/sqrt(lxx*lyy);int m

26、ain()Point p10=Point(6,10),Point(14,20),Point(26,30),Point(33,40),Point(46,50), Point(54,60),Point(67,70),Point(75,80),Point(84,90),Point(100,100);float r=lineFit(p,10);coutLine coefficient r=rendl;return 0;6) 选做:定义一个动态数组类。#include#includeusing namespace std;class Pointpublic:Point():x(0),y(0)coutBu

27、ild !1!endl;Point(int x,int y):x(x),y(y)coutBuild !2!endl;Point()coutDestructor !3!endl;void move(int newx,int newy)x=newx;y=newy;private:int x,y;class ArrayOfPointspublic:ArrayOfPoints(int size):size(size)points=new Pointsize;ArrayOfPoints() coutDelete !4!=0 & indexsize);return pointsindex;private:

28、Point *points;int size;int main()int count; coutcount; ArrayOfPoints points(count);points.element(0).move(5,0); points.element(1).move(15,20);return 0;7) 思考并回答:数组,指针,对象数组,动态内存分配,默认构造函数,标准类库,字符串类 string,线性拟合。3. 主要仪器设备及软件:Windows 2000+VC 6.0实验四 继承与派生(设计性实验 2学时)1. 目的要求:1) 学习定义和使用类的继承关系,定义派生类;熟悉不同继承方式下对

29、基类成员的访问控制;2) 学习利用虚基类解决二义性问题。2. 实验内容:1) 定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把 age改为公有成员变量,还会有问题吗?编程试试看。#includeusing namespace std;class Animal/private:public:int age;class dog:public Animalpublic:SetAge(int n) age=n; coutage=ageendl;int main()dog a;int n;coutn;a

30、.SetAge(n);return 0;2) 定义一个基类BaseClass,有整型成员变量Number,构造其派生类DerivedClass,定义该派生类的对象,观察构造函数和析构函数的执行情况。#includeusing namespace std;class BaseClassprivate:int Number;public: BaseClass(int number)Number=number;/coutBaseClass.Number=Numberendl;coutbuild BaseClassendl;BaseClass()coutdestroied BaseClassendl;

31、class DerivedClass:public BaseClassprivate:int a;public: DerivedClass(int aa):BaseClass(aa)a=aa;/coutDerivedClass.a=aendl; coutbuild DerivedClassendl;DerivedClass() coutdestroied DerivedClassendl; ;int main() DerivedClass derived(5);return 0;3) 定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由

32、此派生出自行车(bicycle)类,汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcycle)类有座位数(SeatNum)等属性。从bicycle和motorcycle派生出摩托车(Motorcar)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle 设置为虚基类,会有什么问?编程实验及分析原因。#includeusing namespace std;class vehicle private: int MaxSpeed; int Weight;public:void Run()cout1 vehicle Run !

33、endl;void Stop()cout1 vehicle Stop !endl; vehicle(int MaxSpeed1=0,int Weight1=0):MaxSpeed(MaxSpeed1),Weight(Weight1)cout1 vehicle start !endl;vehicle()cout1 vehicle end !endl;class bicycle:virtual public vehicle private:int Height;public: bicycle(int Height1=0):Height(Height1)cout2 bicycle start !en

34、dl;bicycle()cout2 bicycle end !endl;class motorcycle:virtual public vehicleprivate:int SeatNum; public: motorcycle(int SeatNum1=0):SeatNum(SeatNum1)cout3 bicycle start !endl;motorcycle()cout3 motorcycle end !endl;class Motorcar:public bicycle,public motorcycle public: Motorcar()cout4 Motorcar start !endl;Motorcar()cout4 Motorcar end !endl;int main()Motorcar Motorcar1;return 0;若没有设为虚基类,截图为:4) 思考并回答:继承,派生,子类对基类成员的访问权限,继承方式,继承时的构造函数和析构函数的调用顺序,虚基类3. 主要仪器设备及软件:PC+Windows 2000+VC 6.0实验五 多态和运算符重载( 设计性实验 2学时)1. 目的要求:掌握

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服