您好,欢迎访问三七文档
《面向对象程序设计》实验教学大纲课程总学时:64学分:4实验学时:16实验个数:6个实验学分:1分课程性质:专业必修课适用专业:计算机类专业教材及参考书:《C++语言程序设计(第四版)》,郑莉、董渊编著,北京:清华大学出版社,2011大纲执笔人:杨军大纲审定人:一、实验课的性质与任务本课程实验大纲是面向计算机专业学生开设的《C++程序设计》实验课计划指导大纲,是依据《面向对象程序设计》课程教学计划指导大纲编制。本课程主要讲述了利用C++进行程序设计的思想和方法,既有面向过程和面向对象的程序设计的理论知识,又包括极强的实践应用能力的培养。本实验大纲力求结合该课程教学计划大纲的相应内容,由浅入深的指导学生了解和掌握如何利用C++程序设计语言进行程序设计,提高学生的动手能力,做到理论和实践相结合,培养学生理解,分析程序,编写,调试程序的能力,使之能把程序设计应用到今后的专业学习中。二、实验目的与要求1.实验目的通过本课程的学习,使学生掌握面向过程的程序设计思想和编程思路,初步掌握面向对象的程序设计思想,学会调试程序,能独立编写实用的小型程序。2.实验要求(1)学生应该自始至终贯彻课程中所介绍的程序设计风格,养成良好的编程习惯;(2)应独立完成所布置习题。为保证尽量在统一安排的上机时间内编译运行通过程序,学生应事先设计好程序。三、实验项目及内容提要面向对象程序设计实验课程(071016)序号实验编号实验名称学时必做选做学分数实验类型内容提要基本操作验证综合设计11类与对象4√√函数重载,类的设计与使用22C++程序的结构2√√作用域与生存期,静态成员33数组、指针与字符串4√√三种常见编程元素的使用44继承与派生2√√派生类的设计与使用55多态性2√√运算符重载、动态多态66模板和文件2√√模板,异常处理机制的设计四、实验内容安排:实验一类与对象(设计性实验4学时)1.目的要求:1)掌握类的定义和使用;掌握类对象的声明;练习具有不同访问属性的成员的访问方式;观察构造函数和析构函数的执行过程;2)学习类组合使用方法;3)使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。2.实验内容:1)编写重载函数Max1可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。#includeiostreamusingnamespacestd;intMax1(intx,inty);intMax1(intx,inty,intz);doubleMax1(doublex,doubley);doubleMax1(doublex,doubley,doublez);intmain(){cout最大值是:Max1(44,23)endl;cout最大值是:Max1(44,23,88)endl;cout最大值是:Max1(3.2,3.14)endl;cout最大值是:Max1(3.2,3.14,4.23)endl;return0;}intMax1(intx,inty){intm;m=xy?x:y;returnm;}intMax1(intx,inty,intz){intm;m=xy?x:y;m=mz?m:z;returnm;}doubleMax1(doublex,doubley){doublem;m=xy?x:y;returnm;}doubleMax1(doublex,doubley,doublez){doublem;m=xy?x:y;m=mz?m:z;returnm;}2)写一个函数,具有一个引用作为形参参数,在函数中改变引用变量的值,观察实参变量的变化。#includeiostreamusingnamespacestd;voidming(int&x){x=1;}intmain(){intx;ming(x);coutxendl;return0;}3)定义一个CPU类,包含等级(Rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU__Rank,定义为enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。#includeiostreamusingnamespacestd;enumCPU_Rank{P1,P2,P3,P4,P5,P6,P7};classCPU{private:CPU_Rankrank;intfrequency;doublevoltage;public:CPU(CPU_Rankrank1,intfrequency1,doublevoltage1);~CPU();run();stop();};CPU::CPU(CPU_Rankrank1,intfrequency1,doublevoltage1){coutgouzaoisthefirstendl;}CPU::run(){coutruniscreatedendl;}CPU::stop(){coutstopiscreatedendl;}CPU::~CPU(){coutxiugouisthefirstendl;}intmain(){CPUa(P5,0,0);a.run();a.stop();return0;}4)定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类,为以上的类编写构造和析构函数,观察组合类和内嵌类的构造函数和析构函数的调用顺序。#includeiostreamusingnamespacestd;enumCPU_Rank{P1,P2,P3,P4,P5,P6,P7};classCPU{private:CPU_Rankrank;intfrequency;doublevoltage;public:CPU(CPU_Rankrank1,intfrequency1,doublevoltage1);~CPU();};CPU::CPU(CPU_Rankrank1,intfrequency1,doublevoltage1){coutCPUgouzaoisthefirstendl;}CPU::~CPU(){coutCPUxiugouisthefirstendl;}classRAM{private:intx;public:RAM(intxx);~RAM();};RAM::RAM(intxx){coutRAMgouzaoendl;}RAM::~RAM(){coutRAMxiugouendl;}classCDROM{private:inty;public:CDROM(intyy);~CDROM();};CDROM::CDROM(intyy){coutCDROMgouzaoendl;}CDROM::~CDROM(){coutCDROMxiugouendl;}classcomputer{private:CPUcpu;RAMram;CDROMcdrom;public:run();stop();computer(CPU&cpu1,RAM&ram1,CDROM&cdrom1);~computer();};computer::computer(CPU&cpu1,RAM&ram1,CDROM&cdrom1):cpu(cpu1),ram(ram1),cdrom(cdrom1){coutcomputergouzaoendl;}computer::~computer(){coutcomputerxigouendl;}intmain(){CPUa(P5,0,0);RAMb(4);CDROMc(5);computerd(a,b,c);return0;}5)在为题目2)的类编写复制构造函数,在主函数中利用复制构造的方式创建新的对象,观察对象的状态。#includeiostreamusingnamespacestd;classPoint{private:intx,y;public:Point(intxx,intyy);Point(Point&p);intgetx(){returnx;}intgety(){returny;}};Point::Point(intxx,intyy){x=xx;y=yy;}Point::Point(Point&p){x=p.x;y=p.y;}intmain(){Pointa(4,5);Pointb=a;coutb.getx()endl;return0;}6)思考并回答以下概念:函数重载,引用,类,对象,数据成员,函数成员,访问属性,构造函数,析构函数,类的组合,内嵌对象,初始化列表,复制构造函数。3.主要仪器设备及软件:PC+Windows2000+VC6.0实验二C++程序的结构(设计性实验2学时)1.目的要求:1)观察程序运行中变量的作用域、生存期和可见性;2)学习类的静态成员的使用;3)学习多文件结构在C++程序中的使用。2.实验内容:1)实现客户机(CLIENT)类。定义字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。#includeiostreamusingnamespacestd;classCLIENT{private:staticcharSeverName[10];staticintClientnum;public:CLIENT();~CLIENT();staticvoidChangeServername();voidshow();};intCLIENT::Clientnum=0;charCLIENT::SeverName[10]=;CLIENT::CLIENT(){coutClient构造函数被调用endl;Clientnum++;}CLIENT::~CLIENT(){coutClient析构函数被调用endl;Clientnum--;}voidCLIENT::ChangeServername(){cout请输入服务器的名字:endl;cinSeverName;}voidCLIENT::show(){cout该用户机的服务器端名字是:endl;coutSeverNameendl;cout用户数量有:endl;coutClientnumendl;}voidmain(){CLIENT::ChangeServername();CLIENTa;a.show();CLIENT::ChangeServername();CLIENTb;b.show();CLIENT::ChangeServername();CLIENTc;c.show();}2)利用多文件结构实现题目1),在头文件client.h中定义类,在文件client.cpp中实现该类,在文件test.cpp中测试这个类,观察相应的成员变量取值的变化情况,要求ClientNum能够实时记录客户机对象的数量。//client.cpp#includeiostream#includeclient.husingnamespacestd;intCLIENT::Clientnum=0;charCLIENT::SeverName[10]=;CLIENT::CLIENT(){coutClient构造函数被调用endl;Clientnum++;}CLIENT::~CLIENT(){coutClient析构函数被调用endl;Clientnum--
本文标题:c++实验大纲
链接地址:https://www.777doc.com/doc-4285600 .html