《面向对象程序设计》实验指导书
来源: 发布时间:2006-5-29 17:01:26 点击:
 

C++语言上机操作基本与要求:
(1)计算机的硬件配置
   目前个人电脑的配置一般都很高,P2或者是P3的CPU,内存基本上都是128兆或者以上,符合C++
的最低要求。最低的配置只要286或者386以上的主机,32兆内存即可满足要求。
(2)计算机的软件配置
1、操作系统Windows95及以上。
2、Borland C++ 3.1或者5.0;或者是Visual C++5.0获6.0。建议大家用Borland C++3.1,因为VC的操作很复杂,需要编程者对它有足够的了解,用起来不如BC方便。编程时只需要打开桌面上BC3.1快捷方式即
可进行编程、编译、运行和调试程序了。


   实验一  练习设计、使用类并熟悉编程环境
实验目的:    学会定义类
学会构造类的方法
领会面向对象程序设计的方法
熟悉编程环境
实验内容:
(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  <iostream.h>
//这是要进行数学计算所要包含的头文件
#include  <math.h>  
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)为两点的坐标
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  <Location.h>
#include  <iostream.h>
#include  <math.h>  
void main()
{
//先定义Location类的两个对象A和B
//并调用构造函数对其进行初始化
Location A(-10,-20),B(-30,40);
//输出A(x,y),B(x,y)
cout<<"A("<<A.X<<","<<A.Y<<"),"
<<"B("<<B.X<<","<<B.Y<<")"<<endl;
//输出distance=?
cout<<"Distance="<<A.distance(B)<<endl;
}

注意:.h文件和.cpp文件要放在同一个目录下面,如果不是放在同一个目录下面的话,那么在.cpp文件中
要在#include <Location.h>语句中加上Location.h文件所在地的整个目录名,例如:#include
<d:\Borland\user\location\Location.h>,这样的话,编译时才会不出错。
实验思考:大家可以用指针和引用来改写这个程序,然后和原来的程序比较,看有什么区别。
(2) 把这个Location类的对象作为Rectangle类的对象的一个成员,即坐标平面上的一个矩形由一个位置
和矩形的长和宽决定。设计矩形类Rectangle并输出给定点x1和y1的值及长和宽的值。
//先定义类和类的成员函数
//文件名为Rectange.h
//由于Rectangle类中要有Location类的对象
//所以必须包括Location类的声明文件
#include <Location.h>
#include<iostream.h>
#include<math.h>
class Rectange
{
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  <Rectangle.h>
#include  <iostream.h>
#include  <math.h>  
void main()
{
Rectangle  A(-10,-20,60,40);
//定义了一个长为60,宽为40,左上点为(-10,-20)
//的矩形,下面将其输出
cout<<"矩形左上点为:"<<"("<<A.upleft.x<<","
<<A.upleft.y<<")"<<endl;
//A.upleft是Location的成员对象,所以A.upleft.x
//表示输出的是左上点的x坐标,A.upleft.y表示输//出的是左上点的y坐标,即-10和-20
cout<<"矩形的长为:"<<A.length<<endl;
//输出为60
cout<<"矩形的宽为:"<<A.width<<endl;
//输出为40
}
(3) 熟悉C++环境。
大家在编织程序的过程中,要尽量的熟悉Borland C++的编程环境,了解BC中关于路径的设置,对于
主菜单的各个命令要熟悉它的操作过程,编完程序后可以对程序进行小的修改,用来了解程序的流程,以
及各个命令的功能。

实验二   多态性练习

实验目的:  掌握由继承和虚函数获得多态性的方法;
学会利用成员函数访问类的对象的私有成员;
进一步掌握类的设计,熟悉C++编程。
实验内容:
(1) 用虚函数设计一个描述正方形的类Square,并具有计算面积的成员函数GetArea()。从Square类
派生一个矩形类Rectangle,Rectangle也使用GetArea()函数计算面积。                         
分析:  这是一个类继承问题。先设计一个正方形类,定义一个protected对象edge作为正方形的边长;然
后把成员函数GetArea()设计成虚函数,因为派生类Rectangle也要用到GetArea()来求矩形的面积;然后是
构造函数和析构函数。接着设计矩形派生类Rectangle,并公有继承基类Square,矩形派生类的成员函数
GetArea()用来求矩形面积。其中代码的分析在源程序给出。
头文件SquareRectangle.h源代码如下:
//SquareRectangle.h
#include<iostream.h>
#include<math.h>
class Square
{
protected:
      int edge;
//edge为protected对象,所以派生类公有继承基类
//Square时,edge也为派生类的protected对象,派
//生类可直接调用。
public:
virtual  double GetArea();
//定义为虚函数,所以派生类调用它时

本新闻共3页,当前在第1页  1  2  3