【问题描述】

(1)在前一周作业题(椭圆类——2)的基础上,增加一个Point类(点类),

包括私有成员横纵坐标x和y(均为int型),以及参数带默认值的构造函数Point(x=0,y=0);

(2)给Point类增加拷贝(复制)构造函数Point(Point& p);

(3)增加析构函数~Point();输出"Point xigou"以及待析构的点的横纵坐标。

(4)增加取横纵坐标值的函数int GetX(); int GetY();

(5)删除Ellipse类原来的四个数据成员,重新修改为 Point a,b;

(6)修改Ellipse原来的构造函数Ellipse(int x1,int y1,int x2,int y2);

注意使用冒号语法对组合成员进行构造,并在构造函数里输出“gouzao 1”和x1,y1,x2,y2的值。

(7)增加一个Ellipse类的构造函数Ellipse(Point &p1,Point &p2);

并在构造函数里输出“gouzao 2”和x1,y1,x2,y2的值。

(8)修改Ellipse的析构函数的输出内容为“Ellipse xigou”以及待析构对象的外切矩形右下角的横纵坐标。

(9)去掉Ellipse类的拷贝构造函数、Fun函数,并修改剩余函数里的错误。

【输入形式】

主函数:输入四个坐标点,用其初始化一个Ellipse对象e1。

输入两对坐标点,用其初始化2个Point对象p1和p2。

用p1和p2初始化一个新的Ellipse对象e2。

最后调用e1和e2的Show函数分别显示坐标,调用e1和e2的Area函数计算并输出。

【输出形式】

程序运行结果

【样例输入】

-3 1 3 -1

-3 2

3 -2

【样例输出】

gouzao 1 -3 1 3 -1

gouzao 2 -3 2 3 -2

-3 1 3 -1

-3 2 3 -2

9.4245

18.849

Ellipse xigou 3 -2

Point xigou 3 -2

Point xigou -3 2

Point xigou 3 -2

Point xigou -3 2

Ellipse xigou 3 -1

Point xigou 3 -1

Point xigou -3 1

#include

#include

#include

using namespace std;

class Point

{

private:

int p_x,p_y;

public:

//基本函数

Point(int x=0,int y=0);//参数带默认值的构造函数

Point(Point& p);//拷贝(复制)构造函数

~Point();//析构函数

//功能函数

int GetX(){return p_x;}//取横坐标值

int GetY(){return p_y;}//取纵坐标值

};

Point::Point(int x,int y)//参数带默认值的构造函数

{

p_x = x; p_y = y;

}

Point::Point(Point& p)//拷贝(复制)构造函数

{

p_x = p.p_x; p_y = p.p_y;

}

Point::~Point()//析构函数

{

cout << "Point xigou " << p_x << " " << p_y << endl;

}

class Ellipse

{

private:

Point a,b;

public:

//基础函数

Ellipse(int xx1,int yy1,int xx2,int yy2);//构造函数

Ellipse(Point &p1,Point &p2);//构造函数

~Ellipse();//析构函数

//功能函数

double Area();//计算椭圆面积

int GetX1(){return a.GetX();}

int GetY1(){return a.GetY();}

int GetX2(){return b.GetX();}

int GetY2(){return b.GetY();}

void Show();//显示椭圆的外切矩形的顶点坐标

};

Ellipse::Ellipse(int xx1,int yy1,int xx2,int yy2):a(xx1,yy1),b(xx2,yy2)

{

cout << "gouzao 1 " << a.GetX() << " " << a.GetY() << " " << b.GetX() << " " << b.GetY() << endl;

}

Ellipse::Ellipse(Point &p1,Point &p2):a(p1),b(p2)//构造函数

{

cout << "gouzao 2 " << a.GetX() << " " << a.GetY() << " " << b.GetX() << " " << b.GetY() << endl;

}

Ellipse::~Ellipse()//析构函数

{

cout << "Ellipse xigou " << b.GetX() << " " << b.GetY() << endl;

}

double Ellipse::Area()

{

return (double)( 3.1415 * fabs(b.GetX()-a.GetX()) * fabs(b.GetY()-a.GetY()) / 4 );

}

void Ellipse::Show()//显示椭圆的外切矩形的顶点坐标

{

cout << a.GetX() << " " << a.GetY() << " " << b.GetX() << " " << b.GetY() << endl;

}

int main()

{

int x1,y1,x2,y2,x3,y3,x4,y4;

cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x4 >> y4;

Ellipse e1(x1,y1,x2,y2);

Point p1(x3,y3);

Point p2(x4,y4);

Ellipse e2(p1,p2);

e1.Show();

e2.Show();

cout << fixed << setprecision(4) << e1.Area() << endl;

cout << fixed << setprecision(3) << e2.Area() << endl;

return 0;

}

java创作一个椭圆类_椭圆类——3 (类的复杂设计)相关推荐

  1. 在一个java源文件中只能定义_10在Java的一个源文件中可以定义多个类。

    [单选题]一组常量和抽象方法的集合可以定义成一个 ( ) [判断题]3.当定义一个类时没定义构造方法,则系统自动产生一个构方法. [填空题]JAVA源程序中,跨越多行的注释只需在开始和结尾处用____ ...

  2. java内部枚举类_内部类和枚举类

    内部类: 内部类的定义 : 在一个类的内部又定义了一个类,里面的这个类就是内部类. 内部类可以定义在外部类的成员位置(与成员变量的位置相同)或局部位置(意思是,把类写在外部类的方法里面). 什么时候使 ...

  3. java打印一个空心六边形_六边形架构 Java 实现

    六边形架构是一种设计风格,经过分层实现核心逻辑与外部对象隔离.其核心逻辑是业务模块,外部元素是整合点,好比数据库.外部 API.界面等.它将软件分为内部与外部,内部包含了核心业务逻辑与领域层(所谓分层 ...

  4. robotac属于a类还是b类_工程项目分类A类、B类、C类、D类项目是指什么?注意:不是资料的A、B、C类报建资料...

    展开全部 A类属e69da5e6ba903231313335323631343130323136353331333431356639于监督站表: B类属于工程报验类, C类属于一些工程技术平常施工, ...

  5. C++A类继承B C类_基金定投买a类还是c类好,c类基金为什么不适合定投

    基金定投似乎成为了基金市场的最主要投资方式之一,吸引了大批投资者.但并不是所有类型基金都适合定投,今天我们以A类基金和C类基金为例子,来看看基金定投买a类还是c类好,c类基金为什么不适合定投. 基金定 ...

  6. java自动定义一个map类_自定义实现Map类 高效版

    package text; import java.util.*; /* *自定义Map的升级版 *提高查询的效率 *数组套列表套对象 * */ public class SxtMap002{ Lin ...

  7. java mbean获取堆信息_实时取得虚拟机类信息、内存信息、MXBean的使用方法

    import java.lang.management.ClassLoadingMXBean; import java.lang.management.ManagementFactory; impor ...

  8. 手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏07游戏输入管理

    项目源码 项目源码 输入管理 package managers;import java.awt.event.KeyEvent; import java.awt.event.KeyListener;pu ...

  9. 手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏01游戏窗口

    项目源码 项目源码 游戏配置信息类 Config.java 没什么解释的. package config;public class Config {public final static String ...

  10. 手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏06加载游戏背景

    游戏背景 Background.java package world;import sprite.Sprite;import java.awt.*;public class Background {p ...

最新文章

  1. 小插件 打开Android程序动画,android-单击小部件后如何启动活动?
  2. AI 三大教父齐聚深度学习峰会,讨论尖端研究进展
  3. mysql 查看建表dll_关于C# Mysql.Data.dll 查询数据库表的一些小问题
  4. python windows时间同步工具
  5. java怎么修改会员信息_JavaWeb用户信息管理系统-修改用户操作的实现
  6. 2018危机与机遇丨PMCAFF年度精选合集
  7. 按键精灵bmp图片怎么导出_发光字怎么制作,招牌LED发光字工艺
  8. 容器安全 - 通过SECCOMP过滤在容器中的风险操作
  9. 介绍数据库中的wal技术_简介事务ACID的实现机制
  10. oracle分析函数over(Partition by...)及开窗函数详解
  11. cocos2d-x2.2.5走四棋儿源代码“开源”
  12. Java 生成条形码 订单条形码
  13. SCAU程序设计在线实训平台_实验_高级语言程序设计_教材习题_第七章
  14. sys fs的原理和使用
  15. 我的世界 服务器文件ess,求助服务器ess插件报错怎么解
  16. 食物语电脑版服务器一直维护,《食物语》进不去解决办法(图文)
  17. android 混淆debug版本,在Android Studio中的混淆debug與release
  18. [ErrorCode]: UnknownHost [RequestId]: Unknown com.aliyun.oss.ClientException: srb-dev-1.LTAI5tF8g6WQ
  19. SpringBoot访问静态资源(图片)
  20. L版本12小时制状态栏时间不显示AM/PM mtk

热门文章

  1. 图神经网络详解(四)
  2. YOLOv3训练自己的数据详细步骤
  3. 终止上市后,依图瞄准自动驾驶赛道|钛媒体独家
  4. 用Arduino和蓝牙模块做一个开门装置
  5. matlab画基因表达热图,科学网—使用pheatmap软件绘制基因表达热图 - 陈振玺的博文...
  6. ui设计移动端字体适配_移动端界面设计之尺寸篇
  7. 【比赛游记】NOI2019打铁记
  8. U盘chk文件该怎样用EasyRecovery恢复
  9. 如何将分表汇总到总表_如何把多个Excel表格合并到一起,分表变,总表也自动更新?...
  10. 语音模块:pyttsx变声项目