*/
* 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. AI大火之下智能手机行业能适应这一风口吗?

    今年智能手机行业的变化,实在是让人摸不到头脑.一方面是智能手机厂商依然在拿出各种具有噱头的产品,仿佛整个市场还依然热火朝天.但在另一方面,智能手机出货量却出现大幅下滑.据中国信息通信研究院发布的数据显 ...

  2. Mybatis Generator逆向工程的使用

    一.在 idea 中使用 mybatis generator 逆向工程 1.在IDEA上创建maven工程. 2.在pom.xml中配置MyBatis逆向工程插件 <!--MyBatis自动生成 ...

  3. 大厂面试题:今天复试百度PHP工程师

    今天下午来到北京百度科技园进行复试PHP工程师岗位. 面试官问了很多问题,我大概整理回忆下: 1.Redis秒杀实现? redis队列解决抢购高并发的原理: 在程序跟数据库之前呢我们可以利用redis ...

  4. 分享几个4412开发板新录制的视频,不是VIP也能看

    如果能点个赞就更好啦 iTOP4412开发板介绍https://www.bilibili.com/video/av74453392 iTOP4412开发板系统编程前言https://www.bilib ...

  5. AdminSwagger2Configuration

    package org.linlinjava.litemall.admin.config; import org.springframework.context.annotation.Bean; im ...

  6. docker常用的命令-在自己心情低落的时候,告诫自己不要把负能量带给别人。

    daocker基础命令:https://www.cnblogs.com/xiaowenshu/p/10474746.html 一.Docker常用命令 安装部署好Dokcer后,执行的命令是docke ...

  7. The Chosen One+高精度

    题目描述 Welcome to the 2017 ACM-ICPC Asia Nanning Regional Contest. Here is a breaking news. Now you ha ...

  8. 区别 new function(){} 和 function(){}()

    只要 new 表达式之后的 constructor 返回(return)一个引用对象(数组,对象,函数等),都将覆盖new创建的匿名对象,如果返回(return)一个原始类型(无 return 时其实 ...

  9. 77)PHP,将session数据写到不用的存储介质中

    首先我的siession数据可以写到:文件中    session数据区  或者数据库中, 那么怎么将文件中的session数据或者session数据区的数据写到  数据库中,,又或者任意挑选两个不同 ...

  10. centos xshell wireshark

    centos安装wireshark yum install wireshark yum install wireshark-gnome 本地windows安装Xming Xming X Server ...