*/
* 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. 1.Jenkins基本安装及插件离线安装

    Jenkins基本安装 Jenkins官方地址:https://jenkins.io/zh/,下载最新版本,需要依赖对应的jdk版本才可以正常运行. dockerfile文件构建docker镜像 FR ...

  2. mysql连接报10038

    1. netstat -ntpl  # 查看端口状态,发现3306状态丢失(不理解操作,但确实解决了问题) 2. iptables -vnL   # 这里要清除防火墙中链中的规则 3. iptable ...

  3. Navicat-pymysql-sql注入问题

    一.Navicat 可视化工具的使用 1.Navicat [1]  是一套快速.可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设. 它的设计符合数据库管理员.开发人员及中小企 ...

  4. 洛谷-P3796-【模板】AC自动机(加强版)

    题目传送门 -------------------------------------- 过年在家无聊补一下这周做的几道AC自动机的模板题 sol:AC自动机,在fail边的基础上再加一个last边, ...

  5. redis day02 下

    位图:是二进制数据(0101101010)2^32 强势点: 01_login :101110(比如:第一天登录,二天没登录) 传统的字符串解决方案中 记录用户登录日期  统计堪忧 01_login_ ...

  6. 深入理解Java接口

    一.接口的特点 接口中可以有变量和方法,接口中的变量会隐式的指定为public static final变量(并且只能是public static final变量),而方法会被隐式的指定为public ...

  7. VB6实现Excel多工作簿数据合并

    以前的同事,工作需要,让我帮忙完成多个工作簿的汇总. 我就用最熟悉的VB6写了一个Form应用程序,这是因为我不知道她目前的系统和Office情况,如果太高大上了,她不会部署安装.索性就简单粗暴地来个 ...

  8. Git教程 - 远程仓库

    到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了. 可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Gi ...

  9. Struts配置文件以Spring的方式实现自定义加载

    在使用struts时,我们需要在web.xml中配置过滤器,同时我们需要配置struts的配置文件路径来加载项目中struts的相关配置信息.如果我们不配置路径的话,Struts会有一些默认的加载路径 ...

  10. The Queen's Super-circular Patio 求栏杆

    Input The first line of input contains a single integer P, (1 ≤ P ≤ 1000), which is the number of da ...