【OOP】实验5 多态性
作者:3sbase | 发布时间:2016/3/19

一、实验类型

    设计型

二、实验目的与要求

1、实验目的

    练习多态性

2、实验要求

了解多态性的原理;掌握多态性的实现方法。

三、上机准备

1、实验室安装VC++6.0软件。

2、复习教材12章的内容。

3、阅读《VC++开发GIS系统——开发实例剖析》,陈建春,电子工业出版社,关于类结构的内容。

四、实验内容

定义四个类,分别为FigureTriangleSquareCircle,后三个从第一个类派生,基类定义了虚函数(或纯虚函数,体会二者的不同)ShowArea(),后三者实现具体的面积解算,编写程序,并观察运行结果,体会多态性的优点。

1、编写CFigureCTriangleCSquareCCircle四个类,类声明和定义分别放在不同的文件中。注意派生类构造函数的定义方式。

类名

数据成员和成员函数

数据成员定义及成员函数声明

CFigure

数据成员

protected:

       int X;

       int Y;

成员函数

public:

       CFigure(int InitX,int InitY);

       CFigure();

       int GetX();   

       int GetY();

       virtual void ShowArea(){ cout<<"基类!"<<endl;}

Class CTriangle:public CFigure

数据成员

 

成员函数

public:

       CTriangle(int InitX,int InitY);

       void ShowArea();

Class CSquare:public CFigure 

数据成员

 

成员函数

public:   

       CSquare(int InitX,int InitY);

       void ShowArea();

Class CCircle:public CFigure

数据成员

private:

       int Radius;

成员函数

public:

       CCircle();

       CCircle(int InitX,int InitY,int InitR);

       void ShowArea();

2、新建一个C++源文件 test.cpp,在里边键入以下的代码,分析并记录程序运行结果,说明原因。

#include"Triangle.h"

#include"Circle.h"

#include"Square.h"

void main()

{

    CFigure* p[3];

    CTriangle t(2,6); 

    CSquare s(2,5);

    CCircle c(1,2,2);

    p[0]=&t;

    p[1]=&s;

    p[2]=&c;

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

    {

        p[i]->ShowArea();

    }

}

3、修改main()函数函数体内的代码更改为下边的语句,记录运行结果,分析原因。

    CFigure p[3];

    CTriangle t(2,6);

    CSquare s(2,5);

    CCircle c(1,2,2);

    t.ShowArea();

    s.ShowArea();

    c.ShowArea();

    p[0]=t;

    p[1]=s;

    p[2]=c;

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

    {

        p[i].ShowArea();

    }

五、实验步骤

1VC++控制台应用程序的建立。

24个类的声明和定义。

3、新建test.cpp源程序进行多态性实验。

4、键入更改后的代码,分析错误的原因。

六、实验报告

1、记录实验结果,分析错误原因。