没有合适的资源?快使用搜索试试~ 我知道了~
设计一个计算图形面积的类库。它的顶层是一个抽象类,并且提供三个纯虚函数:显示数据成员、返回面积和返回体积。 class Shape {public: virtual void showData()=0; virtual double reArea()=0; virtual double reVolume()=0; }; 第二层有Shape类派生TwoDimShape(二维图形)和ThreeShape(三维图形)类。他们增加了有关的数据成员,但没有成员函数的实现。 第三层派生具体的图形类。TwoDimShape类派生Circle(圆)、Elipse(椭圆)、Rectangle(矩形)和Triangle(三角形)等类。ThreeShape类派生Ball(球体)、Cylider(圆柱体)和RectangularParallelepiped(长方体)等类。
资源推荐
资源详情
资源评论
具体要求:
1.完成图形类及其派生类的定义
(1) 设计一个计算图形面积的类库。它的顶层是一个抽象类,并且提供三个纯虚函数:显示数据成员、返回面积和返回体积。
class Shape
{public:
virtual void showData()=0;
virtual double reArea()=0;
virtual double reVolume()=0;
};
第二层有Shape类派生TwoDimShape(二维图形)和ThreeShape(三维图形)类。他们增加了有关的数据成员,但没有成员函数的实现。
第三层派生具体的图形类。TwoDimShape类派生Circle(圆)、Elipse(椭圆)、Rectangle(矩形)和Triangle(三角形)等类。ThreeShape类派生Ball(球体)、Cylider(圆柱体)和RectangularParallelepiped(长方体)等类。
(2) 设计一个测试程序,全面测试你的设计,要求使用基类指针引用派生类对象的三个函数。
(3) 在按要求进行以上工作的同时,完成以下思考。
思考并验证
(1) 去掉类Shape中的第一个virtual和=0;,加上{},其余不变,输出结果会如何变化,为什么?
(2) 去掉类Shape中的第一个=0,其余不变,会产生什么问题,为什么?
(3) 如果执意不把类Shape中的showData()定义成纯虚函数或虚函数,应如何修改,使程序保持原来的效果不变?
(4)在你的程序中,多态性是如何体现的?
2.用异质链表组织上述各类图形对象。
(1) 实现单链表:将结点数据域定义为int,链表具有插入结点、删除结点、反转、遍历等功能,并测试其正确性。
(2) 将结点数据域定义修改为Shape *,用链表中的每个结点表示一个具体的图形对象,创建图形对象链表,并测试其正确性。
(3) 将所建单链表中的内容写到一个文本文件中,反转单链表并再次将其内容追加到同一文本文件中,查阅其正确性。
思考并验证
如果不采用虚函数和多态性,本题会如何?
#include<iostream>
#include<math.h>
#include<string.h>
#include<string>
#include<fstream>
using namespace std;
#define NULL 0
const double pi=3.14;
int nn;
double r;
double a,b,h;
string ss;
class Shape
{
public:
virtual void showData()=0;
virtual double reArea()=0;
virtual double reVolume()=0;
2.用异质链表组织上述各类图形对象。
(1) 实现单链表:将结点数据域定义为int,链表具有插入结点、删除结点、反转、遍历等功能,并测试其正确性。
(2) 将结点数据域定义修改为Shape *,用链表中的每个结点表示一个具体的图形对象,创建图形对象链表,并测试其正确性。
(3) 将所建单链表中的内容写到一个文本文件中,反转单链表并再次将其内容追加到同一文本文件中,查阅其正确性。
思考并验证
如果不采用虚函数和多态性,本题会如何?
#include<iostream>
#include<math.h>
#include<string.h>
#include<string>
#include<fstream>
using namespace std;
#define NULL 0
const double pi=3.14;
int nn;
double r;
double a,b,h;
string ss;
class Shape
{
public:
virtual void showData()=0;
virtual double reArea()=0;
virtual double reVolume()=0;
剩余20页未读,继续阅读
资源评论
OovEver
- 粉丝: 141
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功