*/
* Copyright (c) 2016,烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名:text.cpp
* 作者:常轩
* 微信公众号:Worldhello
* 完成日期:2016年5月8日
* 版本号:V1.0
* 问题描述:类的派生
* 程序输入:无
* 程序输出:见运行结果
*/
#include <iostream> // 点类的实现
using namespace std;
class Point
{
public:
Point(double x=0,double y=0); //构造函数
void setPoint(double,double); //设置坐标值
double getX( ) const {return x;} //读x坐标
double getY( ) const {return y;} //读y坐标
void show();
protected: //受保护成员
double x,y;
}; //Point的构造函数
Point::Point(double a,double b)
{
x=a;
y=b;
}
//设置x和y的坐标值
void Point::setPoint(double a,double b)
{
x=a;
y=b;
} void Point::show()
{
cout<<"("<<x<<","<<y<<")"<<endl;
} int main( )
{
Point p(2.4,5.1);
p.show();
p.setPoint(1.8,3.2);
p.show();
return 0;
}

运行结果:

#include <iostream>                     //圆类的实现
using namespace std;
class Point
{
public:
Point(double x=0,double y=0); //构造函数
void setPoint(double,double); //设置坐标值
double getX( ) const
{
return x; //读x坐标
}
double getY( ) const
{
return y; //读y坐标
}
void show();
protected: //受保护成员
double x,y;
}; //Point的构造函数
Point::Point(double a,double b)
{
x=a;
y=b;
}
//设置x和y的坐标值
void Point::setPoint(double a,double b)
{
x=a;
y=b;
} void Point::show()
{
cout<<"["<<x<<","<<y<<"]"<<endl;
} class Circle:public Point //circle是Point类的公用派生类
{
public:
Circle(double x=0,double y=0,double r=0); //构造函数
void setRadius(double); //设置半径值
double getRadius( ) const; //读取半径值
double area ( ) const; //计算圆面积
void show();
protected:
double radius;
}; //定义构造函数,对圆心坐标和半径初始化
Circle::Circle(double a,double b,double r):Point(a,b),radius(r) { } //设置半径值
void Circle::setRadius(double r)
{
radius=r;
} //读取半径值
double Circle::getRadius( ) const
{
return radius;
} //计算圆面积
double Circle::area( ) const
{
return 3.14159*radius*radius;
} //输出圆的信息
void Circle::show()
{
cout<<"Center=("<<x<<", "<<y<<"), r="<<radius<<", area="<<area( )<<endl;
} int main( )
{
Circle c(3.1,5,6.7);
cout<<"original circle:\n";
c.show();
c.setPoint(3,3);
cout<<"new circle:\n";
c.show();
return 0;
}

运行结果:

#include <iostream>                  //圆柱类的实现
using namespace std;
class Point
{
public:
Point(double x=0,double y=0); //构造函数
void setPoint(double,double); //设置坐标值
double getX( ) const
{
return x; //读x坐标
}
double getY( ) const
{
return y; //读y坐标
}
void show();
protected: //受保护成员
double x,y;
}; //Point的构造函数
Point::Point(double a,double b)
{
x=a;
y=b;
}
//设置x和y的坐标值
void Point::setPoint(double a,double b)
{
x=a;
y=b;
} void Point::show()
{
cout<<"["<<x<<","<<y<<"]"<<endl;
} class Circle:public Point //circle是Point类的公用派生类
{
public:
Circle(double x=0,double y=0,double r=0); //构造函数
void setRadius(double); //设置半径值
double getRadius( ) const; //读取半径值
double area ( ) const; //计算圆面积
void show();
protected:
double radius;
}; //定义构造函数,对圆心坐标和半径初始化
Circle::Circle(double a,double b,double r):Point(a,b),radius(r) { } //设置半径值
void Circle::setRadius(double r)
{
radius=r;
} //读取半径值
double Circle::getRadius( ) const
{
return radius;
} //计算圆面积
double Circle::area( ) const
{
return 3.14159*radius*radius;
} //输出圆的信息
void Circle::show()
{
cout<<"Center=["<<x<<", "<<y<<"], r="<<radius<<", area="<<area( )<<endl;
} class Cylinder:public Circle
{
public:
Cylinder (double x=0,double y=0,double r=0,double h=0);//构造函数
void setHeight(double); //设置圆柱高
double getHeight( ) const; //读取圆柱高
double area( ) const; //计算圆柱表面积
double volume( ) const; //计算圆柱体积
void show();
protected:
double height; //圆柱高
}; //定义构造函数
Cylinder::Cylinder(double a,double b,double r,double h) :Circle(a,b,r),height(h){} //设置圆柱高
void Cylinder::setHeight(double h)
{
height=h;
} //读取圆柱高
double Cylinder::getHeight( ) const
{
return height;
} //计算圆柱表面积
double Cylinder::area( ) const
{
return 2*Circle::area( )+2*3.14159*radius*height;
} //计算圆柱体积
double Cylinder::volume() const
{
return Circle::area()*height;
} void Cylinder::show()
{
cout<<"Center=["<<x<<","<<y<<"], r="<<radius<<", h="<<height
<<"\narea="<<area( )<<", volume="<<volume( )<<endl;
} int main( )
{
Cylinder cy1(3.5,6.4,5.2,10);
cout<<"\noriginal cylinder:\nx=";
cy1.show();
cy1.setHeight(15);
cy1.setRadius(7.5);
cy1.setPoint(5,5);
cout<<"\nnew cylinder:\n";
cy1.show();
return 0;
}

运行结果:

C++ 走向远洋——44(项目一、点—圆—圆柱类族的设计、派生类)的更多相关文章

  1. C++第11周(春)项目4 - 类族的设计

    课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目4 - 类族的设计]按下面的提示,由基类 ...

  2. 以圆类 Circle 及立体图形类 Solid 为基础设计圆锥类 Cone

    学习内容:以圆类 Circle 及立体图形类 Solid 为基础设计圆锥类 Cone 代码示例: import java.util.Scanner; class Point4{ private dou ...

  3. C++走向远洋——(项目二、存储班长信息的学生类、派生)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  4. 以圆类 Circle 及立体图形类 Solid 为基础设计圆柱类 Cylinder

    学习内容:以圆类 Circle 及立体图形类 Solid 为基础设计圆柱类 Cylinder 代码示例: import java.util.Scanner;class Point3{ private ...

  5. C++走向远洋——59(项目三、图形面积、抽象类)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  6. 第十二周项目一 教师兼干部类】 共建虚基类person

    项目1 - 教师兼干部类]分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部).要求: (1)在两个基类中都包含姓名.年 ...

  7. Asp.Net Core 2.0 项目实战(6)Redis配置、封装帮助类RedisHelper及使用实例

    本文目录 1. 摘要 2. Redis配置 3. RedisHelper 4.使用实例 5. 总结 1.  摘要 由于內存存取速度远高于磁盘读取的特性,为了程序效率提高性能,通常会把常用的不常变动的数 ...

  8. springmvc 项目完整示例01 需求与数据库表设计 简单的springmvc应用实例 web项目

    一个简单的用户登录系统 用户有账号密码,登录ip,登录时间 打开登录页面,输入用户名密码 登录日志,可以记录登陆的时间,登陆的ip 成功登陆了的话,就更新用户的最后登入时间和ip,同时记录一条登录记录 ...

  9. 以点类 Point 及平面图形类 Plane 为基础设计圆类 Circle

    学习内容:以点类 Point 及平面图形类 Plane 为基础设计圆类 Circle 代码示例: import java.util.Scanner; class Point2{ private dou ...

随机推荐

  1. Mysql计算时间最近多久

    -- DATE_SUB(CURDATE(), INTERVAL 3 MONTH)计算结果为当前时间的前推三个月,time字段可为时间型字符串 select * form t_user where ti ...

  2. 系统学习Javaweb6----JavaScript2

    感想:感觉自己还是只是学到皮毛,仍需继续努力,明天开始需要学习Android和阅读感想的书写. 学习笔记: 2.3.运算符 JavaScript运算符与java运算符基本一致. 这里我们来寻找不同点进 ...

  3. python学习笔记(24)-类与对象

    #类与对象 #python类的语法 关键字 class #class 类名 类名的规范是:数字字母下划线组成,不能以数字开头 首字母大写 驼峰命名 #类属性 放在类里面的变量值 #类方法 放在类里面的 ...

  4. Excel-DNA自定义函数的参数智能提示功能:ExcelDna.IntelliSense1.1.0.rar

    解压缩后,可以看到如下3个文件. ExcelDna.IntelliSense.xll 以及 ExcelDna.IntelliSense64.xll 是两个函数参数智能提示加载项,分别用于32和64位E ...

  5. ISIS

    R1到R6配置ip和环回口 交换机不用配置 R6多加10.0.1.1 10.0.2.1 10.0.3.1 三个环回口 需求: 1.假如你是公司A网络管理员,公司A网络如图所示,现公司A要求如下:() ...

  6. OpenCV 亚像素级的角点检测

    #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #i ...

  7. C# 怎样判断 datagridview 中的checkbox列是否被选中

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e){ for (int i  ...

  8. [LC] 246. Strobogrammatic Number

    A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside ...

  9. 详解JavaScript Document对象

    转自:http://segmentfault.com/a/1190000000660947 在浏览器中,与用户进行数据交换都是通过客户端的javascript代码来实现的,而完成这些交互工作大多数是d ...

  10. libphp5.so可能遇到的问题(转摘)

    libphp5.so可能遇到的问题(转摘) 安装完APACHE和PHP5后,经常在启动APACHE载入libphp5.so时发现问题.我把遇到的问题统计下来: 1.undefined symbol:S ...