第十一周上机实践项目4——类族的设计(3)

(3)再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高),,以及求圆柱表面积的成员函数area和求圆柱体积的成员函数volume,实现需要的成员函数,并设计main函数完成测试。

代码

#include<iostream>
#include<Cmath>
using namespace std;
class Point
{
protected:
    double x,y;
public:
    Point(double xx,double yy):x(xx),y(yy){}
    double getx()
    {
        return x;
    }
    double gety()
    {
        return y;
    }
    void show1();
};
void Point::show1()
{
    cout<<"底面圆心坐标:"<<"("<<x<<","<<y<<")"<<endl;
}
class Circle:public Point
{
protected:
    double r,area;
public:
    Circle(double xx,double yy,double rr):Point(xx,yy),r(rr){}
    double getarea();
    void show2();
    double getr()
    {
        return r;
    }
};
double Circle::getarea()
{
    area=r*r*3.14;
    return area;
}
void Circle::show2()
{
    show1();
    cout<<"底面积:"<<getarea()<<endl;
}
class Cylinder:public Circle
{
protected:
    double h,volume;
public:
    Cylinder(double xx,double yy,double rr,double hh):Circle(xx,yy,rr),h(hh){}
    double getvolume();
    friend ostream &operator<<(ostream &out,Cylinder &c);
    double geth()
    {
        return h;
    }
};
double Cylinder::getvolume()
{
    volume=getarea()*h;
    return volume;
}
ostream &operator<<(ostream &out,Cylinder &c)
{
    c.show2();
    out<<"体积:"<<c.getvolume()<<endl;
    return out;
}
int main()
{
    Cylinder c(2.2,3.3,4.4,5.5);
    cout<<"该圆柱体的属性:"<<endl;
    cout<<"底面半径:"<<c.getr()<<endl;
    cout<<"高:"<<c.geth()<<endl;
    cout<<c;
    return 0;
}

运行结果:

时间: 2024-10-09 06:34:26

第十一周上机实践项目4——类族的设计(3)的相关文章

第十一周上机实践项目4——类族的设计(2)

(2)以Point为基类,派生出一个Circle(圆)类,增加数据成员r(半径),以及求面积的成员函数area,实现其他需要的成员函数,设计main函数完成测试: 代码 #include<iostream> #include<Cmath> using namespace std; class Point { protected: double x,y; public: Point(double xx,double yy):x(xx),y(yy){} double getx() {

第十一周上机实践项目1——存储班长信息的学生类

class Stu //声明基类 { public: Stu(int n, string nam ); //基类构造函数 void display( ); //成员函数,输出基类数据成员 protected: //(*)访问权限为保护型的数据成员 int num; //学生学号 string name; //学生姓名 }; class StuDetail: public Stu //声明派生类StuDetail { public: //学生nam,学号n,a岁,家住ad,他的班长是nam1,学号

第十一周上机实践项目3——点类派生直线类

定义点类Point,并以点类为基类,派生出直线类Line,从基类中继承的点的信息表示直线的中点.请阅读下面的代码,并将缺少的部分写出来. 代码 #include<iostream> #include<Cmath> using namespace std; class Point //定义坐标点类 { public: Point():x(0),y(0) {}; Point(double x0, double y0):x(x0), y(y0) {}; void PrintPoint()

第十一周上机实践项目2——职员有薪水了(1)

(1)定义一个名为CPerson的类,有以下私有成员:姓名.身份证号.性别和年龄,成员函数:构造函数.析构函数.输出信息的函数.并在此基础上派生出CEmployee类,派生类CEmployee增加了两个新的数据成员,分别用于表示部门和薪水.要求派生类CEmployee的构造函数显示调用基类CPerson的构造函数,并为派生类CEmployee定义析构函数,定义输出信息的函数. 代码 #include <iostream> using namespace std; class CPerson {

第十一周上机实践项目2——职员有薪水了(2)

(2)字符串除了用C++扩充的string类型外,按C语言的传统,还可以用char 表示.请将类声明中的string全部改为char 后,重新写一遍程序(此时的区别是,类中有指针成员,构造和析构函数需要考虑深复制的问题了.) 代码 #include <iostream> #include <cstring> using namespace std; class CPerson { protected: char* m_szName; char* m_szId; int m_nSex

第十周第十一周上机实践项目-项目5-摩托车继承自行车和机动车

/*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:刘涛 * 完成日期:2016年5月9日 * 版本号:vc++6.0 * 问题描述: 在下面一段类的定义中,自行车类的虚基类为车辆类,机动车类的虚基类也为车辆类,摩托车类的基类为自行车类和机动车类,类之间均为公有继承,如图所示. 下载可执行文件链接motorcar.exe. (1)根据上面各类间关系的描述,补全下面程序段中空缺的代码: (2)实现程序中声

第十周第十一周上机实践项目-项目4-教师兼干部类

/*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:刘涛 * 完成日期:2016年5月9日 * 版本号:vc++6.0 * 问题描述:分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部). 要求: (1)在两个基类中都包含姓名.年龄.性别.地址.电话等数据成员. (2)在Teacher类中还包含数据成员title(职称),在

第十一周上机实践项目0——是春哥啊

请在下面程序的注释处填上适当内容,以使程序完整,并使程序的输出为: Name: 春哥 Grade: 19 代码 #include <iostream> #include <cstring> using namespace std; class Person { public: Person(char* s) { strcpy(name,s); } void display( ) { cout<<"Name: "<<name<<

十一周 项目4 类族的设计

#include <iostream> #include <cmath> using namespace std; class Point { public: Point(double x=0,double y=0); void setPoint(double,double); double getx() { return x; } double gety() { return y; } void display(); protected: double x,y; }; class