Java组合类

题目:2.设计Circle,Rectangle,Geometry类,Circle类中有属性x,y, radius. Rectangle类中有左上顶点坐标(x,y),width,height. Geometry类将Circle,Rectangle类组合,设计getDistance函数返回圆与矩形中心间的距离。

代码如下:
circle.java

public class Circle{//圆类
	double x,y,radius;//
	Circle(){};//默认构造函数
	Circle(double x,double y,double radius){//构造函数
		this.x=x;
		this.y=y;
		this.radius=radius;
	}
	public void setX(double x){//单独修改x
		this.x=x;
	}
	public void setY(double y){//单独修改y
		this.y=y;
	}
	public void setRadius(double radius){//单独修改radius
		if(radius>0)
			this.radius=radius;
	}
	double getX(){//返回x值
		return x;
	}
	double getY(){//返回y值
		return y;
	}
	double getRadius(){//返回radius值
		return radius;
	}	
}在这里插入代码片

Rectangle.java

public class Rectangle{//长方形类

	double x,y,width,height;
	Rectangle(){};//默认构造函数
	Rectangle(double x,double y,double width,double height){//构造函数
		this.x=x;
		this.y=y;
		this.width=width;
		this.height=height;
	}
	public void setX(double x){//单独修改x
		this.x=x;
	}
	public void setY(double y){//单独修改y
		this.y=y;
	}
	public void setWidth(double width){//单独修改width
		if(width>0)
			this.width=width;
	}
	public void setHeight(double height){//单独修改height
		if(height>0)
			this.height=height;
	}
	public double getX(){//返回左上x值
		return x;
	}
	public double getY(){//返回左上y值
		return y;
	}
	public double getRX(){//返回中心x值
		return x+width/2;
	}
	public double getRY(){//返回中心y值
		return y-height/2;
	}
	public double getWidth(){//返回width值
		return width;
	}
	public double getHeight(){//返回height值
		return height;
	}	
}

Geometry.java

public class Geometry{
	Circle c;
	Rectangle r;
	Geometry(){}//默认构造函数
	Geometry(Circle c, Rectangle r){//构造函数
		this.c=c;
		this.r=r;
	}
	public void setC(double x, double y){//修改圆心坐标
		c.setX(x);
		c.setY(y);
	}
	public void setR(double x, double y){//修改矩形左上坐标
		r.setX(x);
		r.setY(y);
	}
	public void setRWH(double w, double h){//修改矩形宽长
		r.setWidth(w);
		r.setHeight(h);
	}
	double getDistance(){//计算距离
		double x1,y1,x2,y2,w,h;
		x1=c.getX();//圆心坐标
		y1=c.getY();
		x2=r.getRX();//中心坐标
		y2=r.getRY();
		return Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
	}
}

Example_2.java

public class Example_2{
	public static void main(String args[]){
		//直接赋值计算
		double reslut;
		Circle c1=new Circle(1,1,2);//圆
		Rectangle r1=new Rectangle(0,4,4,4);//矩形
		Geometry g1=new Geometry(c1,r1);
		reslut=g1.getDistance();
		System.out.println("圆形的坐标为:"+c1.getX()+"  "+c1.getY());
		System.out.println("矩形的宽和长为:"+r1.getWidth()+"  "+r1.getHeight());
		System.out.println("矩形的左上坐标为:"+r1.getX()+"  "+r1.getY()+"矩形的中心为:"+r1.getRX()+"  "+r1.getRY());
		System.out.println("距离为"+reslut);

		//修改对应值
		g1.setR(0.0,6.0);
		g1.setC(2.0,2.0);
		reslut=g1.getDistance();
		System.out.println("圆形的坐标为:"+c1.getX()+"  "+c1.getY());
		System.out.println("矩形的宽和长为:"+r1.getWidth()+"  "+r1.getHeight());
		System.out.println("矩形的左上坐标为:"+r1.getX()+"  "+r1.getY()+"矩形的中心为:"+r1.getRX()+"  "+r1.getRY());
		System.out.println("距离为"+reslut);
		
	}
}

可以改成相关数据自行输入。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值