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

下载本文档

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

文档简介

1、实验一 熟悉VC+IDE开发环境一、实验目的1、熟悉VC+6.0集成开发环境,熟练掌握VC+6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。2、掌握如何编辑、编译、连接和运行一个C+程序。3、通过运行简单的C+程序,初步了解C+源程序的结构和特点。二、实验要求1、分析下列程序运行的结果。程序一:#include int add(int x,int y=8);void main() int x=4; coutadd(x),; coutadd(x,add(add(x,add(x)endl;int add(int x,int y) return x+y;程序二:#include void mai

2、n()int *p,i; i=5;p=&i;i=*p+10;couti=iendl;程序三:#include void main(void)int i=10;int &r=i; r+;couti=i, r=rn;i=88; couti=i, r=rn;程序四:#include int f(int i) static int k=1; for(;i0;i-) k +=i; return k; void main() int i; for(i=0;i5;i+) coutf(i) ; 程序五:#include void func();int n=1; void main() static int a

3、; int b= -9; cout a:a b:b n: nendl;b+=4; func();cout a:a b:b n:nendl;n+=10; func();void func() static int a=2; int b=5; a+=2;n+=12;b+=5; cout a: a b: b n: n endl; 实验二 C+对C的扩充一、实验目的1、了解在面向对象程序设计过程中C+对C功能的扩充与增强,并善于在编写程序的过程中应用这些新功能。2、进一步熟悉编辑、编译、连接和运行C+程序的方法。3、进一步熟悉C+程序的结构和编程方法。二、实验要求1、分析下列程序运行的结果。#incl

4、ude int amount=123; void main()int amount=456; cout:amount,; coutamount,; :amount=789; cout:amount,; coutamountn; 2、编写一个程序,用来求2个或3个正整数中的最大数。用不带默认参数的函数实现。用带默认参数的函数实现。3、有5个字符串,要求对它们按由小到大顺序排列,用string方法。4、定义一个求两个数中较小值的函数模板min( ),要求在main( )函数中进行调用求两个浮点型数据和两个整型数据中较小的数。实验三 类和对象(一)一、实验目的1、掌握声明类的方法,类和类的成员的概念

5、以及定义对象的方法。2、掌握类的构造函数与析构函数的概念和使用方法。3、初步掌握用类和对象编制基于对象的程序。二、实验要求1、分析下面的程序,写出其运行时的输出结果。#include using namespace std;class Datepublic:Date(int,int,int);Date(int,int);Date(int);Date( );void display( );private:int month;int day;int year;DateDate(int m,int d,int y):month(m),day(d),year(y) DateDate(int m,int

6、 d):month(m),day(d) year=2005; DateDate(int m):month(m) day=1;year=2005;DateDate( ) month=1;day=1;year=2005;void Datedisplay( )coutmonth/day/yearendl;int main( ) Date d1(10,13,2005);Date d2(12,30);Date d3(10);Date d4;d1.display( );d2.display( );d3.display( );d4.display( );return 0;2、建立一个名为Student的类,

7、该类有以下几个私有成员变量:学生姓名、学号、性别、年龄。还有以下两个成员变量:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个主函数,声明一个学生对象,然后调用成员函数在屏幕输出学生信息。3、类Person的定义如下,请实现该类,并在主函数中创建对象obj,然后使用构造函数为obj赋予初始值(内容自定)。class Person private: string name; int age; int salary; char tel;public: Person(string xname,int xage,int xsalary,char xtel); v

8、oid display ();实验四 类和对象(二)一、实验目的1、进一步加深对类和对象的理解。2、掌握对类的对象数组、对象的指针及其使用方法。3、掌握友元的概念和使用。4、了解类模板的使用方法。二、实验要求1、分析并比较下列程序运行的结果。程序一:#include#includeclass smallonepublic:smallone(int sma) coutsm constr:sman;void fn(int n) smallone sm(n);coutin function fn with n=nendl;int main() fn(10); fn(20); return 0;程序二

9、:#include#includeclass smallonepublic:smallone(int sma) coutsm constr:sman;void fn(int n) static smallone sm(n);coutin function fn with n=nendl; int main() fn(10); fn(20); return 0;2、建立一个对象数组,内放5个学生的数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。3、声明一个类模板,利用它分别实现两个整数、浮点数和字符的比较,求出大数和小数。

10、(例3.14)实验五 运算符重载一、实验目的1、进一步了解运算符重载的概念和使用方法。2、掌握几种常用的运算符重载的方法。二、实验要求1、定义一个复数类Complex,重载运算法“+”,使之能用于复数的加法运算。将运算符重载为普通函数(非成员、非友元)、成员函数、友元函数。根据要求修改通过函数来实现复数相加的示例,分别编写程序,求两个复数之和。#include using namespace std;class Complex /定义Complex类public: Complex(float x=0,float y=0)real=x;imag=y; /构造函数 Complex complex_

11、add(Complex &c2); /声明复数相加函数 void display() coutreal+imagiendl; ; private: float real; /实部 float imag; /虚部;Complex Complex:complex_add(Complex &c2) Complex c;c.real = real +c2.real;c.imag=imag+c2.imag;return c;int main() Complex complex1(3.34f, 4.8f), complex2(12.8f, 5.2f);Complex complex; /定义3个复数对象c

12、omplex=plex_add(complex2); / 进行两个复数的加运算complex.display( ); return 0;实验六 继承和派生一、实验目的1、了解继承在面向对象程序设计中的重要作用。2、进一步理解继承与派生的概念。3、掌握通过继承派生出一个新的类的方法。4、了解虚基类的作用和用法。二、实验要求1、运行程序,分析构造函数与析构函数的调用顺序。程序一:#include class A public: A()coutA:Constructorendl;A()coutA:Destructor endl;class B:public A public: B()coutB:Co

13、nstructor endl; B()coutB:Destructorendl;void main() B b;程序二:#include class A int a;public :A(int aa=0) a=aa; A() cout”Destructor A!”aendl; ;class B: public A int b;public: B(int aa=0, int bb=0) : A(aa) b=bb; B() cout”Destructor B!”bendl; ;void main() B x(5),y(6,7);2、分别声明Teacher(教师)类和Cadre(干部)类,采用多重继

14、承方式由这两个类派生出新类Teacher_Cader类。要求:在两个基类种豆包含姓名、年龄、性别、地址、电话等数据成员。在Teacher类中还包含数据成员title(职称),在Cader 类中还包含数据成员post(职务)。在Teacher_Cader类中还包含数据成员wages(工资)。在对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。在类体中声明成员函数,在类外定义数据成员。在派生类Teacher_Cader的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再调用cout语句输出职

15、务和工资。实验七 多态性和虚函数一、实验目的1、了解多态性的概念。2、熟悉虚函数的作用及其使用方法。3、了解静态关联和动态关联的概念和用法。4、了解纯虚函数和抽象类的概念和用法。二、实验要求1、分析程序运行结果,掌握虚函数的使用。程序一:#include class ONE public: virtual void f()coutlendl;class TWO:public ONE public: TWO()cout2endl;class THREE:public TWO public: virtual void f()TWO:f(); coutf();程序二:#includeclass Ba

16、se public:virtual void fn() cout In Base Classn;class SubClass :public Base public: virtual void fn() cout fn();p=≻ p-fn();2、实现一个类A,在A中有两个私有的整型变量a和b,定义构造函数对a和b进行初始化,并实现成员函数geta()取得a的值和getb()取b的值。实现类B从A继承,覆盖geta(),使其返回a的2倍。主函数中声明类B对象,调用类B中的geta()并将结果输出。3、声明抽象基类Shape,由它派生出3个派生类:Cirle(圆形)、Rectangle(

17、矩形)、Triangle(三角形),用一个函数printArea分别输出以上三者的面积,3个图形的数据在定义对象是给定。实验八 输入输出流一、实验目的1、深入理解C+的输入输出的含义与其实现方法。2、掌握标准输入输出流的应用,包括格式输入输出。3、掌握对文件的输入输出操作。二、实验要求1、输入三角形的三边a,b,c,计算三角形的面积的公式是, 形成三角形的条件是:a+bc,b+ca,a+cb编写程序,输入a,b,c,检查a,b,c是否满足以上条件,如不满足,由cerr输出有关出错信息。2、从键盘输入一批数值,要求保留3位小数,在输出时上下行小数点对齐。用控制符控制输出格式;用流成员函数控制输出

18、格式。3、建立两个磁盘文件f1.dat和f2.dat,编程序实现以下工作:从键盘输入20个整数,分别存放在两个磁盘文件中(每个文件中放10个整数);从f1.dat读入10个数,然后存放到f2.dat文件原有数据的后面;从f2.dat中读入20个整数,将它们按从小到大的顺序存放到f2.dat(不保留原来的数据)。实验九 C+工具一、实验目的1、学会使用C+的异常处理机制进行程序的调试2、学会使用命名空间解决名字冲突。二、实验要求1、求一元二次方程式的实根,如果方程没有实根,则利用异常处理机制输出有关警告信息。2、学校的人事部门保存了有关学生的部分数据(学号、姓名、年龄、住址),教务部门也保存了学生的另外一些数据(学号、姓名、性别、成绩),两个部门分别编写了本部门的学生数据管理程序,其中都用了Student作为类名。现在要求在全校的学生数据管理程序中调用这两个部门的学生数据,分别输出两种内容的学生数据。要求用ANSI C+编程,使用命名空间。实验十 复数计算器一、实验目的掌握面向对象程序设计方法和技巧,设计一个小型的应用程序,进一步提高解决问题的能力。二、实验要求(1)所设计的复数计算

温馨提示

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

评论

0/150

提交评论