题目: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);
}
}
可以改成相关数据自行输入。