派生类与继承应用举例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include <iostream.h>
#include <math.h>
const double PI=3.1415926;
class Circle //圆类
{ protected:
double r; //半径
public:
Circle(double radius=0): r(radius) { }
public:
Cylinder(double radius=0,double height=0):Circle(radius)
{ h=height; }
double Area( ) //计算圆柱体的表面积
{ return 2*PI*r*(r+h); }
double Volume( ) //计算圆柱体的体积
}
long get_capacity(void) { return capacity; }
void display_disk(void)
{ cout<<side<<" "<<track<<" "<<sector<<" "; }
};
class hard_disk:public disk
{ private:
{ return PI*r*r*h; }
};
class Cone: public Circle //圆锥体类

{ double h; //高度
public:
Cone(double radius=0,double height=0):Circle(radius)
{ h=height; }
double Area( ) //计算圆锥体的表面积
int volumn;
public:
hard_disk(int si,int t,int s,int v):disk(si,t,s)
{ volumn=v; }
long get_harddisk(void)
{ return volumn* disk ::get_capacity( ); }
};
void main( )
以磁盘为对象设计程序。现在来分析磁盘对象,设磁 盘disk为基类,拥有体现磁盘最基本特征的4个数据成 员:扇区sector,磁道track,盘面side,存储容量 capacity。接着设定磁盘hard_disk为一个派生类,拥 有6个数据成员。除了拥有disk的4个数据成员之外,还 拥有柱面volumn及磁盘接口inteface两个数据成员。 接着设计软盘soft_disk派生类,除了拥有基类disk4 个数据成员之外,还拥有写保护write_protected数据 成员等。实际上还有光盘等派生类,这里就不再一一 列举。
{ disk d1(2,80,15);
d1.display_disk( );
hard_disk d2(2,80,15,8);
cout<<d2.get_harddisk( )<<endl;
}
程序的运行结果为:
2 80 15 9830400
数据结构
double Area( ) //计算圆的面积
{ return PI*r*r; }
double Volume( ) { return 0; }
};
class Sphere:public Circle //球体积
{ public:
Sphere(double radius=0):Circle(radius) { }
数据结构
派生类与继承应用举例
例3-6 编写一个程序计算出球、圆柱和圆锥的表面积和体积。 分析:由于计算它们都需要用到圆的半径,有时还可能用到圆的
面积,所以可以把圆定义为一个类。它包含的数据成员为半径, 由于不需要作图,所以不需要定义圆心坐标。圆的半径应定义为 保护属性,以便派生类能够继承和使用。圆类的公有函数为给半 径赋初值的构造函数,计算圆的面积函数,也可以包含计算体积 的函数,让其返回0即可,表示圆的体积为0。定义好圆类后,再 把球类、圆柱类和圆锥类定义为圆的派生类。在这些类中同样包 含有新定义的构造函数、求表面积的函数和求体积的函数。另外 在圆柱和圆锥类中应分别新定义一个表示其高度的数据成员。该 题完整的程序如下:
double Area( ) //计算球的表面积
{ return 4*PI*r*r; }
double Volume( ) //计算球的体积
{ return 4*PI*pow(r,3)/3; }
};
class Cylinder:public Circle //圆柱体类
{ double h; //高度
{ double l=sqrt(h*h+r*r); return PI*r*(r+l); }
double Volume( ) //计算圆锥体的体积
{ return PI*r*r*h/3; }
};
void main( ) { Circle r1(2);
Sphere r2(2); Cylinder r3(2,3); Cone r4(2,3); cout<<"Circle: "<<r1.Area( )<<' '<<r1.Volume( )<<endl; cout<<" Sphere: "<<r2.Area( )<<' '<<r2.Volume( )<<endl; cout<<"Cylinder:"<<r3.Area( )<<' '<<r3.Volume( )<<endl; cout<<"Cone: "<<r4.Area( )<<' '<<r4.Volume( )<<endl; } 此程序运行结果如下: Circle:12.5664 0 Sphere:50.2655 33.5103 Cylinder:62.8319 37.6991 Cone:35.2207 12.5994
#include "iostream.h"
class disk
{ private:
int side,track,sector;
long capacity;
public:
disk(int si,int t,int s)
{ side=si;track=t;
sector=s;
capacity=512*side*track*sector;
相关文档
最新文档