| 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(); //定义为虚函数,所以派生类调用它时 |