C++面向对象程序设计实验指导书.docx

上传人:b****6 文档编号:9038253 上传时间:2023-02-02 格式:DOCX 页数:15 大小:57KB
下载 相关 举报
C++面向对象程序设计实验指导书.docx_第1页
第1页 / 共15页
C++面向对象程序设计实验指导书.docx_第2页
第2页 / 共15页
C++面向对象程序设计实验指导书.docx_第3页
第3页 / 共15页
C++面向对象程序设计实验指导书.docx_第4页
第4页 / 共15页
C++面向对象程序设计实验指导书.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

C++面向对象程序设计实验指导书.docx

《C++面向对象程序设计实验指导书.docx》由会员分享,可在线阅读,更多相关《C++面向对象程序设计实验指导书.docx(15页珍藏版)》请在冰豆网上搜索。

C++面向对象程序设计实验指导书.docx

C++面向对象程序设计实验指导书

《C++面向对象程序设计》课程实验指导书

编号:

课程总学时:

32实验学时:

16

课程总学分:

实验学分:

先修课程:

C语言程序设计

适用专业:

计算机科学与技术,网络工程,软件工程

一、本课程实验的主要目的与任务

《面向对象程序设计》是计算机专业学生的一门专业基础课。

C++是一种高效而又实用的程序设计语言,它既可以进行过程化程序设计,也可以进行面向对象程序设计,因此成为了编程人员最广泛使用的工具。

主要任务是介绍C++语言中的数据类型,运算,语句结构及其程序设计的基本方法。

使学生掌握一门高级程序设计语言,了解面向对象程序设计的基本概念与方法,进而学会利用C++语言学会解决一般应用问题,从而掌握面向对象程序设计的基本知识和基本技能。

 

目录

实验一熟悉VC++IDE开发环境2

实验二类和对象

(一)4

实验三类和对象

(二)6

实验四运算符重载8

实验五继承和派生9

实验六多态性和虚函数11

实验七输入输出流13

实验八利用AppWizard向导生成Windows应用程序14

 

实验一熟悉VC++IDE开发环境

一、实验目的

1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。

2、掌握如何编辑、编译、连接和运行一个C++程序。

3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。

二、实验要求

1、分析下列程序运行的结果。

程序一:

#include

intadd(intx,inty=8);

voidmain()

{intx=4;

cout<

cout<

}

intadd(intx,inty)

{returnx+y;}

程序二:

#include

voidmain()

{int*p,i;

i=5;

p=&i;

i=*p+10;

cout<<"i="<

}

程序三:

#include

voidmain(void)

{inti=10;

int&r=i;

r++;

cout<<"i="<

i=88;

cout<<"i="<

}

程序四:

#include

intf(inti)

{staticintk=1;

for(;i>0;i--)

k+=i;

returnk;

}

voidmain()

{inti;

for(i=0;i<5;i++)

cout<

}

程序五:

#include

voidfunc();

intn=1; 

voidmain()

{staticinta;   

intb=-9;     

cout<<"a:

"<

"<

"<

b+=4;

func();

cout<<"a:

"<

"<

"<

n+=10;

func();

}

voidfunc()

{ staticinta=2;  intb=5;         

a+=2;

n+=12;

b+=5;

 cout<<"a:

"<

"<

"<

}

 

实验二类和对象

(一)

一、实验目的

1、掌握声明类的方法,类和类的成员的概念以及定义对象的方法。

2、掌握类的构造函数与析构函数的概念和使用方法。

3、初步掌握用类和对象编制基于对象的程序。

二、实验要求

1、分析下面的程序,写出其运行时的输出结果。

#include

usingnamespacestd;

classDate

{public:

Date(int,int,int);

Date(int,int);

Date(int);

Date();

voiddisplay();

private:

intmonth;

intday;

intyear;

};

Date∷Date(intm,intd,inty):

month(m),day(d),year(y){}

Date∷Date(intm,intd):

month(m),day(d){year=2005;}

Date∷Date(intm):

month(m)

{day=1;

year=2005;

}

Date∷Date()

{month=1;

day=1;

year=2005;

}

voidDate∷display()

{cout<

intmain()

{Dated1(10,13,2005);

Dated2(12,30);

Dated3(10);

Dated4;

d1.display();

d2.display();

d3.display();

d4.display();

return0;

}

2、建立一个名为Student的类,该类有以下几个私有成员变量:

学生姓名、学号、性别、年龄。

还有以下两个成员变量:

一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。

编写一个主函数,声明一个学生对象,然后调用成员函数在屏幕输出学生信息。

3、类Person的定义如下,请实现该类,并在主函数中创建对象obj,然后使用构造函数为obj赋予初始值(内容自定)。

classPerson

{private:

charname[10];

intage;

intsalary;

chartel[8];

public:

Person(char*xname,intxage,intxsalary,char*xtel);

voiddisp();

};

 

实验三类和对象

(二)

一、实验目的

1、进一步加深对类和对象的理解。

2、掌握对类的对象数组、对象的指针及其使用方法。

3、掌握友元的概念和使用。

4、了解类模板的使用方法。

二、实验要求

1、分析并比较下列程序运行的结果。

程序一:

#include

#include

classsmallone

{public:

smallone(intsma)

{cout<<"smconstr:

"<

};

voidfn(intn)

{smallonesm(n);

cout<<"infunctionfnwithn="<

}

intmain()

{fn(10);

fn(20);

return0;

}

程序二:

#include

#include

classsmallone

{public:

smallone(intsma)

{cout<<"smconstr:

"<

};

voidfn(intn)

{staticsmallonesm(n);

cout<<"infunctionfnwithn="<

}

intmain()

{fn(10);

fn(20);

return0;

}

2、建立一个对象数组,内放5个学生的数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。

3、声明一个类模板,利用它分别实现两个整数、浮点数和字符的比较,求出大数和小数。

 

实验四运算符重载

一、实验目的

1、进一步了解运算符重载的概念和使用方法。

2、掌握几种常用的运算符重载的方法。

二、实验要求

1、定义一个复数类Complex,重载运算法“+”,使之能用于复数的加法运算。

将运算符重载为普通函数(非成员、非友元)、成员函数、友元函数。

根据要求修改通过函数来实现复数相加的示例,分别编写程序,求两个复数之和。

#include

usingnamespacestd;

classComplex//定义Complex类

{public:

Complex(floatx=0,floaty=0){real=x;imag=y;}//构造函数

Complexcomplex_add(Complex&c2);//声明复数相加函数

voiddisplay(){cout<

private:

floatreal;//实部

floatimag;//虚部

};

ComplexComplex:

:

complex_add(Complex&c2)

{Complexc;

c.real=real+c2.real;

c.imag=imag+c2.imag;

returnc;

}

intmain()

{Complexcomplex1(3.34f,4.8f),complex2(12.8f,5.2f);

Complexcomplex;//定义3个复数对象

complex=plex_add(complex2);//进行两个复数的加运算

complex.display();

return0;

}

 

实验五继承和派生

一、实验目的

1、了解继承在面向对象程序设计中的重要作用。

2、进一步理解继承与派生的概念。

3、掌握通过继承派生出一个新的类的方法。

4、了解虚基类的作用和用法。

二、实验要求

1、运行程序,分析构造函数与析构函数的调用顺序。

程序一:

#include

classA

{public:

A(){cout<<"A:

Constructor"<

~A(){cout<<"A:

Destructor"<

};

classB:

publicA

{public:

B(){cout<<"B:

Constructor"<

~B(){cout<<"B:

Destructor"<

};

voidmain()

{Bb;

}

程序二:

#include

classA

{inta;

public:

A(intaa=0){a=aa;}

~A(){cout<<”DestructorA!

”<

};

classB:

publicA

{intb;

public:

B(intaa=0,intbb=0):

A(aa){b=bb;}

~B(){cout<<”DestructorB!

”<

};

voidmain()

{Bx(5),y(6,7);

}

2、分别声明Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cader类。

要求:

①在两个基类种豆包含姓名、年龄、性别、地址、电话等数据成员。

②在Teacher类中还包含数据成员title(职称),在Cader类中还包含数据成员post(职务)。

在Teacher_Cader类中还包含数据成员wages(工资)。

③在对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。

④在类体中声明成员函数,在类外定义数据成员。

⑤在派生类Teacher_Cader的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再调用cout语句输出职务和工资。

实验六多态性和虚函数

一、实验目的

1、了解多态性的概念。

2、了解虚函数的作用及其使用方法。

3、了解静态关联和动态关联的概念和用法。

4、了解纯虚函数和抽象类的概念和用法。

二、实验要求

1、分析程序运行结果,掌握虚函数的使用。

程序一:

#include

classONE

{public:

virtualvoidf(){cout<<"l"<

};

classTWO:

publicONE

{public:

TWO(){cout<<"2"<

};

classTHREE:

publicTWO

{public:

virtualvoidf(){TWO:

:

f();cout<<"3";}

};

voidmain()

{ONEaa,*p;

TWObb;

THREEcc;

p=&cc;

p->f();

}

程序二:

#include

classBase

{public:

virtualvoidfn(){cout<<"InBaseClass\n";}

};

classSubClass:

publicBase

{public:

virtualvoidfn(){cout<<"InSubClass\n";}

};

voidmain()

{Basebc,*p;

SubClasssc;

p=&bc;p->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(矩形)、Triangle(三角形),用一个函数printArea分别输出以上三者的面积,3个图形的数据在定义对象是给定。

 

实验七输入输出流

一、实验目的

1、深入理解C++的输入输出的含义与其实现方法。

2、掌握标准输入输出流的应用,包括格式输入输出。

3、掌握对文件的输入输出操作。

二、实验要求

事先编写好程序,上机调试和运行程序,分析结果。

(1)输入三角形的三边a,b,c,计算三角形的面积的公式是

形成三角形的条件是:

a+b>c,b+c>a,a+c>b

编写程序,输入a,b,c,检查a,b,c是否满足以上条件,如不满足,由cerr输出有关出错信息。

(2)从键盘输入一批数值,要求保留3位小数,在输出时上下行小数点对齐。

①用控制符控制输出格式;

②用流成员函数控制输出格式。

(3)建立两个磁盘文件f1.dat和f2.dat,编程序实现以下工作:

①从键盘输入20个整数,分别存放在两个磁盘文件中(每个文件中放10个整数);

②从f1.dat读入10个数,然后存放到f2.dat文件原有数据的后面;

③从f2.dat中读入20个整数,将它们按从小到大的顺序存放到f2.dat(不保留原来的数据)。

实验八利用AppWizard向导生成Windows应用程序

一、实验目的

学习利用Appwizard向导开发Windows应用程序的过程。

术语:

AppWizard是一个工具,利用该工具,你可以创建一个建立在MFC基础上的窗口应用程序框架,然后在这个框架中加上自己的应用逻辑。

你可以选择所创建的应用类型,最常用的是多文档应用(就象你用的字编辑器MicrosoftWord一样,可以同时打开多个文档窗口的应用)、单文档应用(类似于Windows提供的notepad,一次只能打开一个文档)和对话框应用(类似于Windows的时钟程序)。

二、实验内容

1、用AppWizard建立一个单文档应用程序,在窗口中输出”Hello,World!

2、用AppWizard建立一个对话框应用程序,在对话框上摆放相应控件。

三、实验步骤

1、创建一个新项目

利用DeveloperStudio的AppWizard创建一个新的项目,步骤如下:

选择菜单File|New,系统将显示New对话框;

选择Projects标签,在显示的项目类型中选择MFCAppWizard(exe);

在右边的ProjectName编辑框中输入项目名称,如“helloMFC”,然后按OK;

MFCAppWizard将分几步询问你有关要建立的新项目的配置。

第一个对话框问你是创建哪种类型的应用(单文档、多文档还是对话框类型),选择创建单文档应用“Singledocument”,然后按Next按钮;

翻过后面的五个页面(按Next),每个页面可以让你改变项目的不同选项,这个例子暂时不设置这些选项。

最后一个MFCAppWizard屏幕告诉你AppWizard为你自动产生的类。

单击Finish键,AppWizard显示一个关于该项目的摘要,列出这些类和你所选择的特征。

如图所示:

图8-1最后一个MFCAppWizard屏幕

单击OK,系统自动产生helloMFC所需要的文件。

2、浏览helloMFC项目

当你用MFCAppWizard创建了helloMFC项目后,这个项目的工作区窗口将会打开,工作区窗口(如下图):

图8-2打开helloMFC项目后的工作区窗口

你可以先选择FileView看一下AppWizard为你创建了哪些文件,然后选择ClassView看一下定义了哪些类。

ClassView中还可以看到一个Globals文件夹,单击它前面的加号,可以看到,有一个预定义的全局变量theApp,这是你的Windows应用程序类的对象。

3、编译连接运行

按F7或者选择菜单Build|BuildhelloMFC.exe,编译连接得到可执行程序,再按Ctrl+F5或者选择Build|ExecutehelloMFC.exe运行该程序。

程序的结果如下:

图8-3编译连接运行的结果

4、用MFC处理输出

现在修改程序。

要在程序中间的窗口上显示一行文字“Hello,World”,步骤如下:

在工作区窗口中选择ClassView标签,单击helloMFCclasses前面的加号(如果已经变成减号则不做此操作)

单击类CHelloMFCView类前面的加号

双击OnDraw()函数,在右边的文档将显示窗口显示文件helloMFCView的内容,并且自动将光标定位到函数OnDraw()处。

修改OnDraw函数的定义,在最后一行加一句:

pDC->TextOut(50,50,"Hello,World");

按Ctrl+s或者选菜单File|Save来保存所作的修改

5、编译连接并运行

重新编译连接该项目,运行程序,也可以用Ctrl+F5直接运行程序,系统将询问是否重新编译该项目,回答“是(Yes)”,如果有编译错误,仔细检查你加的一句话,是否有错。

当编译连接通过后,系统会自动运行该程序。

查看结果。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 交规考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1