C语言作业(4)

2019-04-22 07:57

实验5 多态性

1.实验目的和要求:

(1)理解多态性、虚拟函数、抽象类和具体类、静态绑定和动态绑定等概念 (2)学会利用虚函数来实现多态性,以便更好地来扩展和维护系统 (3)理解C++如何实现虚拟函数和动态绑定(*) 2.实验内容:

(1) 以下是一个计算正方体、球体和圆柱体的面积和体积的程序。试分析程序 并写出程序的运行结果,然后上机运行验证。 #include class container { protected:

double radius; public:

container(double radius) {

container::radius=radius; }

virtual double surface_area()=0; virtual double volume()=0; };

class cube:public container { public:

cube(double radius):container(radius){}; double surface_area() {

return radius*radius*6;

}

double volume() {

return radius*radius*radius; } };

class sphere:public container { public:

sphere(double radius):container(radius){}; double surface_area() {

return 4*3.1416*radius*radius; }

double volume() {

return 3.1416*radius*radius*radius*4/3; } };

class cylinder:public container {

double height; public:

cylinder(double radius,double height):container(radius) {

cylinder::height=height; }

double surface_area() {

return 2*3.1416*radius*(height+radius);

}

double volume() {

return 3.1416*radius*radius*height; } }; void main() {

container *p; cube obj1(10); sphere obj2(6); cylinder obj3(4,5); p=&obj1;

cout<<\输出结果:\

cout<<\正方体表面积:\cout<<\正方体体积:\p=&obj2;

cout<<\球体表面积:\cout<<\球体体积:\p=&obj3;

cout<<\圆柱体表面积:\cout<<\圆柱体体积:\}

(2)实现下图中的Shape层次结构。每个TwoDimensionalShape类应包括成员函数getArea,以计算二维图形的面积。每个ThreeDimensionalShape类包含成员函数getArea和getVolume,分别计算三维图形的表面积和体积。编写一个程序,使用层次结构中每个具体类的对象的Shape向量指针。程序要打印出向量元素所指的对象。同样,再将所有形状存入向量的循环中,要能判断每个图形到底属于TwoDimensionalShape还是属于ThreeDimenionalShape。如果某个图形是TwoDimensionalShape就显示其面积,如果某个图形是ThreeDimenionalShape,则显示其面积和体积。

Shape TwoDimensionalShape ThreeDimensionalShape Circle Triangle Square Sphere Cube

(3)编写一个程序,先设计一个链表List类,再从链表类派生出一个集合类Set类,再集合类中添加一个记录元素个数的数据项。要求可以实现对集合的插入、删除、查找和显示。 3.结合上机体会,回答下列问题

(1)多态性是如何让程序“普遍化”而非“特殊化”的?试说明程序“普遍化”的主要好处。

(2)什么是虚拟函数?请说明虚拟函数适用的环境。 (3)多态性是如何提高可扩展性的?

(4)说出静态绑定和动态绑定的区别,并试解释说明动态绑定究竟是如何实现的?

实验6 IO流上机实验

1. 实验目的和要求

(1) 理解I / O流与标准流对象的意义 (2) 掌握常用的IO 成员函数: (3) 掌握文件的基本操作

(4) 理解二进制文件与文本文件的区别 (5) 熟练掌握文件的顺序读写方法 (6) 熟练掌握文件的随机读写方法

2. 实验内容:

(1) 由希腊著名数学家埃拉托色尼提出求解素数的“筛选法”,

1)阅读程序改正其中的错误,使其能输出100以内的所有素数。 2)改写该程序,将1~ Num以内的所有素数按清晰的格式写入文件中。

3)从文件中读出n~m(1 #include using namespace std;

int main() {

const int MAX= 100; bool isPrime[MAX];

for(int i=0; i

isPrime[0]=isPrime[1]=false; //1和0不是素数

isPrime[i]=true;


C语言作业(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:最新《济宁市建设工程质量“运河杯”奖评选办法》

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: