面向对象的程序设计实验教学指导书

  • 格式:doc
  • 大小:90.50 KB
  • 文档页数:20

1 《面向对象程序设计课程》

实验教学指导书

山东协和职业技术学院

计算机学院

二○○七年十二月 2 前 言

一、实验总体目标

《面向对象程序设计》课程在计算机科学与技术专业教学计划中,是一门重要的理论联系实际的专业基础课。其主要任务是使学生掌握OOP的编程思想和方法、能运用C++语言,在Visual C++的IDE环境下编写各种应用程序。实验课是本课程重要的教学环节,其目的是使学生掌握OOP的编程思想和方法,C++语言的语法特点、程序结构、主要技术及编程技巧,能在Visual C++的IDE环境下编写各种Win32应用程序,使学生学以致用,提高学生的实践动手能力以及分析问题、解决问题的能力。

二、适用专业年级

适用专业: 计算机软件

三、先修课程

计算机文化基础,C++语言程序设计

四、实验项目及课时分配

实验项目 实验要求 实验类型 每组人数 实验学时

实验一 练习设计、使用类并熟悉编程环境 必修 上机设计 4 2

实验二 多态性练习 必修 上机设计 4 4

实验三 函数的应用 必修 上机设计 4 4

实验四 类与对象 必修 上机设计 4 4

实验五 运算符的重载 必修 上机设计 4 4

实验六 综合练习造 必修 上机设计 4 2

(说明:实验要求填必修或选修;实验类型填演示性、综合性、验证性、设计性或研究创新性。)

五、实验环境

微机,Microsoft Visual 6.0

六、实验总体要求

通过该实验要求学生掌握C++程序设计语言与面向对象程序设计的基本概念和方法,具有使用C++语言的编程能力,具有采用面向对象程序设计方法解决实际问题的能力。为《数据结构》、《信息系统分析与设计》、《电子商务系统分析与设计》等后续课程打下良好基础。

七、本课程实验的重点、难点及教学方法建议

1、 按照课程有关章节内容要求,预先编写出程序; 3 2、 上机输入、编译、调试、运行程序直到得到正确结果;

3、 分析总结编程方法

4 实验一 : 练习设计、使用类并熟悉编程环境

一、实验目的:

学会定义类

学会构造类的方法

领会面向对象程序设计的方法

熟悉编程环境

二、实验内容:

(1) 设计一个用来表示直角坐标系上点的位置的Location类,然后在主程序中创建两个对象A和B,要求A在第三象限,B在第二象限,计算给定两点之间的距离并按如下格式输出结果:

A(x1,y1),B(x2,y2)

Distance=d

其中x1,y1,x2,y2为指定值,d为计算结果。

分析: 这是一个很简单的类的设计。首先我们要清楚这个类要有几个成员和成员函数。一个点起码要有X坐标和Y坐标,所以我们给其添加两个私有成员;接着要有起码的构造函数和析构函数;最后根据题目要求,我们在设计一个成员函数,用来求两点之间的距离。

程序源代码如下:

程序头文件放在Location.h中

//Location.h

//这是输入输出流所要包含的头文件

#include

//这是要进行数学计算所要包含的头文件

#include

class Location

{

//横坐标和纵坐标:

private:

int X,Y;

public:

Location( int a , int b);//构造函数

double distance (Location &);

//求两点距离的函数

~Location();//析构函数

};

//在构造函数中对类的成员进行初始化

Location::Location(int a ,int b)

{

X=a;

Y=b; }

//求两点的距离

//这里我们用的公式是,两点之间的

//距离=

//(x1,y1)和(x2,y2)为两点的坐标 5 double Location::distance(Location & loc1)

{

double length:

length=sqrt((loc1.X-Location::X)**2+

(loc1.Y-Location::Y)**2));

//注意这里的作用域符号::表示X和Y是属//于Location类的

return length; }

//由于我们在这个程序里没有用

//new来开辟内存,所以析构函数为空

Location::~Location()

{ }

再在Location.cpp文件中编写主程序

//Location.cpp

#include

#include

#include

void main()

{

//先定义Location类的两个对象A和B

//并调用构造函数对其进行初始化

Location A(-10,-20),B(-30,40);

//输出A(x,y),B(x,y)

cout<<"A("<

<<"B("<

//输出distance=?

cout<<"Distance="<

}

注意:.h文件和.cpp文件要放在同一个目录下面,如果不是放在同一个目录下面的话,那么在.cpp文件中

要在#include 语句中加上Location.h文件所在地的整个目录名,例如:#include

,这样的话,编译时才会不出错。

三、实验思考:

大家可以用指针和引用来改写这个程序,然后和原来的程序比较,看有什么区别。

把这个Location类的对象作为Rectangle类的对象的一个成员,即坐标平面上的一个矩形由一个位置和矩形的长和宽决定。设计矩形类Rectangle并输出给定点x1和y1的值及长和宽的值。

//先定义类和类的成员函数

//文件名为Rectange.h

//由于Rectangle类中要有Location类的对象

//所以必须包括Location类的声明文件

#include

#include

#include

class Rectange 6 {

private:

//定义矩形长和宽

int length, width;

//定义矩形左上点

Location upleft;

public:

//定义矩形的构造函数和析构函数

Rectange(int a,int b, int length,int width);

~Rectange();

};

Rectangle::Rectangle(int a,int b, int len,int wid)

{

//初始化Rectangle类的length和width

length=len;

width=wid;

//这里通过调用Location类的构造函数

//来初始化Rectangle类的对象upleft

upleft=new Location(a,b);

}

Rectangle::~Rectangle()

{

delete upleft;}

//在构造函数中用new开辟了内存空间upleft,

//所以在析构函数中用delete删除它

}

再在CPP文件中编写主程序代码:

//Rectangle.cpp

//包括下面三个头文件的原因在前面已讲过

#include

#include

#include

void main()

{

Rectangle A(-10,-20,60,40);

//定义了一个长为60,宽为40,左上点为(-10,-20)

//的矩形,下面将其输出

cout<<"矩形左上点为:"<<"("<

<

//A.upleft是Location的成员对象,所以A.upleft.x

//表示输出的是左上点的x坐标,A.upleft.y表示输//出的是左上点的y坐标,即-10和-20

cout<<"矩形的长为:"<

//输出为60