设为首页  |  加入收藏
信息学院
首页|概况|党建工作|师资队伍|教学工作|学科专业|学生工作|科学研究|校企合作|招生工作|就业工作|校友分会|一流专业建设
 
当前位置: 首页>>栏目备份-勿删>>实验大纲>>正文
 
《C++面向对象程序设计》实验教学大纲
2012-10-31 15:21     (次数)

C++面向对象程序设计实验教学大纲

课程名称:

C++面向对象程序设计

课程编号:

408007

420006

436007

适用专业:

计算机科学与技术

网络工程

软件工程

总 学 分:

3

其中实验学时

30

一、实验课程性质、目的与任务

本课程是计算机各专业中的一门必修课程,主要内容包括:面向对象程序设计的方法和C++语言的基本概念。通过学习类的抽象性、封装性、继承性和多态性等概念及其运用,有助于学生开发出具有数据抽象程序高、体现信息隐藏、可复用、易修改、易扩充的模块化程序,逐步掌握C++面向对象的过程和面向对象的功能。为进一步学习后续课程和将来从事应用软件开发奠定良好的基础。

通过本实验课程的目的是使学生掌握有关C++语言的基本概念、基本语法和编程方法,理解C++语言面向对象的重要特征;促使学生理论联系实际,能够灵活运用自己所学的理论知识进行程序开发,增强学生的实践动手技能,并能够提高学生独立分析问题和解决问题的能力。

二、实验教学基本要求

C++面向对象程序设计实验是学习面向对象程序设计的重要实践环节,其目的是通过实验使学生掌握面向对象程序设计的基本原理,通过实验提高学生的程序设计能力和分析与解决实际问题的能力。

要求学生掌握C++面向对象程序设计的基本原理,并学会使用C++语言编写有关类的定义、创建对象,使用继承与多态性来编写程序。

上机实验要求:

1、准备好上机所需的程序;

2、上机输入和调试自己所编写的程序,并在程序设计在线测试平台上提交通过;

3、上机结束后,应整理出实验报告,实验报告应包括以下内容:实验项目名称;算法分析;程序清单;运行结果;对运行情况所作的分析以及本次调试程序所取得的经验,如果程序未能通过,应分析其原因。

三、实验项目与类型:

序号

实验项目

学时

实验性质

备注

验证

综合

设计

研究探索

必做

选做

1

函数

2

2

类的定义与建立对象

4

3

构造函数与析构函数

2

4

静态成员与对象成员

2

5

友元

4

6

String类

2

7

继承与派生

4

8

虚函数与抽象类

2

9

运算符重载

4

10

流类库

2

11

异常处理

2

合计

30

7

2

2

6

5

四、实验教学内容

实验一:函数

1、实验目的

(1)掌握函数的声明与调用、函数重载、函数模版的方法

(2)熟悉函数实参与形参的对应关系、带默认值的函数

(3)能够编制并测试函数

2、方法原理

(1)函数重载:多个函数使用同一个函数名。

(2)函数实参与形参一一对应,缺省时使用默认值。

3、主要实验仪器及材料

计算机、安装C++(如VC++6.0或者DEV C++ )

4、实验内容

(1)编制一个函数并实现测试,判断输入年份是否为闰年,在主程序中实现输入输出。

(2)编程求下式的值: n1+n2+n3+n4+…+n10,其中,n=l,2,3。编写函数时,设置参数n的默认值为2。

(3)使用函数重载的方法定义两个重名函数,分别求两个整数和两个实数的最大值。

(4)使用函数重载的方法定义两个重名函数,分别求两个整数和三个整数的最大值。

实验二:类的定义与建立对象

1、实验目的

(1)理解面向对象程序设计的基本方法。

(2)掌握C++类的概念和类的定义方法,理解类和对象之间的关系。

(3)熟悉掌握成员函数的定义与调用。

2、方法原理

(1)类定义:客观世界中的事物往往需要从属性与行为两个方面进行描述,在C++中,分别用数据成员与函数成员来表现,并且将它们封装在一起,形成类。

(2)建立对象:使用类定义的变量。

3、主要实验仪器及材料

计算机、安装C++(如VC++6.0或者DEV C++ )

4、实验内容

(1)定义学生类student,类中包括数据成员和成员函数;建立对象并调用成员函数。

(2)下面是一个类的测试程序,编写能使用如下测试程序的类Test:

int main()

{ int a,b;

Test x;

while(cin>>a>>b)

{ x.intx(a,b);

x.printx();

}

return 0;

}

输入两个整数a和b,计算a-b。

实验三:构造函数与析构函数

1、实验目的

(1)熟悉掌握构造函数的定义与使用。

(2)熟悉掌握析构函数的定义与使用。

(3)掌握复制构造函数的定义与使用。

2、方法原理

(1)构造函数:构造函数具有特定名字——与类名相同;构造函数不能标以返回类型,它的返回值是隐含的;构造函数在机器执行对象声明语句时被自动调用,去初始化被声明的对象;构造函数允许按参数却省调用形式定义;构造函数名可以重载;当没有为一个类定义任何构造函数的情况下,C++编译器总要为它自动建立一个无参的构造函数。

(2)析构函数:对象撤销时被自动调用,释放构造函数分配的空间。函数名为~类名,不指定返回类型,不指定参数。

(3)复制构造函数:只有一个参数,使用所在类的对象的引用,用于一个对象初始化另一个对象。

3、主要实验仪器及材料

计算机、安装C++(如VC++6.0或者DEV C++ )

4、实验内容

(1)定义并测试一个类名为rectangle的矩形类,数据成员为矩形的长和宽,定义2个成员函数分别计算矩形的面积与周长,要求定义构造函数、析构函数和拷贝构造函数。

(2)定义学生类student,类中包含学生的基本信息:学号、姓名、性别、年级等数据成员,student类中有多个构造函数:带默认值的构造函数、带参数构造函数,以及显示学生信息、修改学生信息等成员函数。建立对象并调用相应的成员函数。

实验四:静态成员与对象成员

1、实验目的

(1)理解静态成员在数据共享中的作用,掌握静态成员的定义与使用方法。

(2)理解类的组合与对象成员的概念,掌握对象成员的使用方法。

(3)掌握组合类构造函数的定义与调用。

2、方法原理

(1)静态成员:静态成员使用关键字staic定义,它属于类而不属于某个对象,可以用类名来引用。

(2)子对象:使用另外一个类定义的对象作为数据成员。

3、主要实验仪器及材料

计算机、安装C++(如VC++6.0或者DEV C++ )

4、实验内容

(1)声明一个Cat类,拥有静态数据成员HowManyCats,用以记录Cat的个体数目;拥有静态成员函数GetHowMany(),用以存取HowManyCats。设计程序并测试这个类,体会静态数据成员好静态成员函数的用法。

(2)定义学生类student,类中包含学生的基本信息:学号、分数等。输入多个学生的学号与分数,使用类的静态成员计算所有学生的平均分。

实验五:友元

1、实验目的

(1)理解友元的概念。

(2)掌握友元的定义与使用。

2、方法原理

(1)友元:外部函数可以例外地访问类的任何私有成员。在类定义外定义,使用类对象引用作参数,可以访问对象的公开、私有成员。

(2)友元关系是单向的、不具有交换性、不具有传递性。

(3)三种友元形式:外部的函数作友元、另一个类的成员函数作友元和友元类。

3、主要实验仪器及材料

计算机、安装C++(如VC++6.0或者DEV C++ )

4、实验内容

(1)编写一个程序:输入几个学生的姓名、英语和计算机成绩,然后按照总分从高到低排序。要求定义一个student类,用友元函数实现排序。

(2)定义一个二维平面中的点(point)类,类中的数据成员为点的坐标,然后定义友元函数distance()用来计算两点之间的距离。

(3)定义一个时间类,包括私有成员时、分、秒,再定义一个友元函数,计算2个时间点相差的秒数。

实验六:String

1、实验目的

(1)掌握一般字符串处理库函数的方法。

(2)理解String类的特点与作用。

(3)了解动态内存分配的特点,掌握new和delete运算符的基本用法。

2、方法原理

(1)定义字符串:声明字符串:string 字符串名; 声明字符串并且初始化:string 字符串名("字符串内容");

(2)字符串的成员函数:赋值函数assign()、长度函数length()、连接函数append()、比较函数compare()、求子串函数substr()、交换函数swap()、查找函数find()

3、主要实验仪器及材料

计算机、安装C++(如VC++6.0或者DEV C++ )

4、实验内容

(1)利用string类判断输入的字符串是否为回文。

(2)#include

#include

using namespace std;

void main( )

{

string s1("hello"),s2,s3,s4;

s2=s1;

s3.assign(s1);

cout< <"s1="<

char a[]="china",b[6];

s1=a;

cout< <"s1="<

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

b[i]=s2[i];

b[5]='\0';

cout<<" 字符数组"<

s4=s2+" "+s1;

s3=s2.append(s1);

cout< <"s2="<

else

cout< <"s3与s4比较的部分不相等";

string sz=s2.substr(5,5);

cout< <"子字符串sz="<

s1.swap(s4);

cout<<" s1="<

int len=s1.length();

char *pt=new char[len+1];

s1.copy(pt,len,0);

pt[len]='\0';

cout<

s2=pt;

cout<

}

实验七:继承与派生

1、实验目的

(1)理解类层次的概念及实现类层次的方法,掌握派生的类别与方式。

(2)掌握派生类中如何使用基类的成员、基类成员在派生类中的访问控制。

(3)理解派生类中构造函数与析构函数的定义方法和执行顺序。

2、方法原理

(1)派生类的声明

class派生类名:派生方式基类名

{ private:

新增私有成员声明语句表列

public:

新增公开成员声明语句表列

};

(2)派生类的构造函数

派生类的构造函数要直接调用基类的构造函数。构造函数与释放函数是不能继承的,对派生类必须重新定义构造函数与释放函数。

3、主要实验仪器及材料

计算机、安装C++(如VC++6.0或者DEV C++ )

4、实验内容

(1)编写程序,声明一个哺乳动物Mammal类,再由此派生出Dog(狗)类。要求类中都必须有包含输出信息的构造函数与析构函数。声明一个Dog类的对象,运行程序,观察基类与派生类的构造函数与析构函数的调用顺序。

(2)定义point类,定义点类为基类,其数据成员x和y为私有成员。再定义圆类继承点类,该点为圆的圆心,新增数据成员圆的半径。在圆类中定义成员函数,其形式参数为一个点的对象,判断该点是在圆内部、圆外还是圆上。

实验八:虚基类与抽象类

1、实验目的

(1)了解基类和派生类的成员函数之间的虚函数关系。

(2)理解动态联编、静态联编、多态性、抽象类的概念。

(3)掌握如何使用基类指针、引用调用虚函数实现动态联编。

2、方法原理

(1) 虚函数的定义

virtual函数类型函数名(形参表)

{ 函数体 }

(2)纯虚函数的申明

virtual函数类型函数名(形参表)=0;

3、主要实验仪器及材料

计算机、安装C++(如VC++6.0或者DEV C++ )

4、实验内容

(1)编写程序声明一个Shape基类,再派生出矩形Rectangle和圆Circle类,二者都有GetArea()函数计算对象的面积。

(2)应用抽象类,求圆、圆内接正方形和圆外切正方形的面积和周长。

实验九:运算符重载

1、实验目的

(1)理解运算符重载的概念。

(2)熟练掌握运算符重载的方法,包括成员函数和友元函数重载。

2、方法原理

(1)重载规则:不可以重载非C++的运算符;可以采用成员函数方式或友元方式;

(2)成员函数方式

运算结果类型 operator 运算符(形式参数)

{ 函数体 }

(3)友元函数方式

friend 结果类型 operator 运算符(对象参数,参数)

{ 函数体 }

双目(返回类型类名∷operator双目运算符(类名&引用))

3、主要实验仪器及材料

计算机、安装C++(如VC++6.0或者DEV C++ )

4、实验内容

(1)定义日期类,重载“++”和“--”运算符,使之能处理两个日期类对象自增和自减运算,并且自增和自减又分为前缀和后缀运算。

(2)定义复数类,重载复数的加“+”和“*”运算符,完成复数的加法与乘法。

实验十:流类库

1、实验目的

(1)理解I/O流的概念、输入/输出流类的层次概念。

(2)熟练掌握格式化输入/输出、磁盘文件的输入/输出方法。

2、方法原理

(1)I/O流的概念:C++中把数据之间的传输操作称为流。使用流以后,程序用流统一对各种计算机设备和文件进行操作,使程序与设备、程序与文件无关。

(2)磁盘文件的输入与输出:对文件进行I/O操作时,要首先进行打开操作,使流与文件发生联系,建立联系后的文件才允许数据流入与流出。输入或者输出结束后,使用关闭操作使文件与流断开联系。

(3)输出流cout与输入流cin

输出流对象输出数据的语句格式为:

cout< <数据1<<数据2<<……<<数据n;

数据的输入通常采用cin流对象来完成,其格式为:

cin>>变量名1>>变量名2>>……>>变量名n; 入流cin

3、主要实验仪器及材料

计算机、安装C++(如VC++6.0或者DEV C++ )

4、实验内容

(1)编写程序,显示一个文本文件的内容。

(2)编写程序,分别采用一次复制一个字符和一次复制一行的方法,实现将一个文本文件复制到另一个文本文件中。

实验十一:异常处理

1、实验目的

(1)理解异常处理机制。

(2)掌握异常处理的使用方法。

(3)了解异常处理中的构造与析构函数。

2、方法原理

(1)throw语句:当程序发现了自己不能处理的异常,就可以使用throw语句将这个异常抛掷给调用者。

(2)try语句:将可能发生异常的程序段放在try语句中。

(3)catch语句:每个catch后的语句是异常处理程序,捕获由throw抛掷的异常。

3、主要实验仪器及材料

计算机、安装C++(如VC++6.0或者DEV C++ )

4、实验内容

(1)利用C++的异常处理,编写程序求一元二次方程的根,当方程无实数根时,输出“方程无实根”。

(2)采用C++异常处理的方法,编写程序防止数组下标越界。

五、考核方法

1.教师对学生实验过程完成情况进行详细登记,记入实验成绩中。

2.学生完成实验后按要求撰写实验报告,根据实验报告确定每次实验的等级。

3.实验成绩按20%比例计入课程期评总成绩中。

六、实验指导书及主要参考书目

[1] 自编C++实验指导书

[2] 瞿绍军 主编,C++程序设计教程习题答案和实验指导.华中科技大学出版社,2010

[3] 邓飞 主编,C++程序设计题解与实验指导.北京:中国人民大学出版社,2009

[4] 刘卫国 主编,C++程序设计实践教程.北京:中国铁道出版社,2008

[5] 李军民 主编,C++程序设计语言经典题解与实验指导.西安:西安电子科技大学出版社,2003

大纲撰写人:袁辉勇

大纲审阅人: 罗如为

教学副主任: 易叶青

2012.6

上一条:《C语言程序设计》实验教学大纲
下一条:《C# .NET设计模式》实验大纲
关闭窗口
 

行政办: 百全楼110 | 教务办: 百全楼213 | 邮编: 417000 | 电话/传真: 0738-8377309
@2003-2015 版权所有: leyu乐鱼·(中国)官方网站信息学院