先列出对象中的属性与方法,编写具体的代码时,先列出函数名,逐层写出函数体
/*
Point
int x
int y
Point()
Point(x,y)
double getDistance(double x,double y)
double getDistance(Point p)
Circle
Point o //圆心
double radius //半径
Circle() //默认圆心在原点,半径1
Circle(double x,double y,double radius)//创建圆心在(x,y)且半径为radius的圆
boolean contains(double x,double y) //点是否在圆内
boolean contains(Circle other) //判断该圆是否包含other圆
boolean overlaps(Circle other) //判断该圆是否和other圆相交
double getArea()
double getPerimeter()
setter getter
*/
class Point{//定义点的横纵坐标,默认无参构造函数圆心(0,0)
private double x;
private double y;
Point(){
this(0,0);
}
Point(double x,double y){//圆心(x,y)
this.x=x;
this.y=y;
}
public double getDistance(double x,double y){
//将当前传入的x和y与Point类中本身的x和y(圆心)比较
return Math.sqrt(Math.pow(x-this.x, 2)+Math.pow(y-this.y, 2));
}
public double getDistance(Point o) {
//将当前传入的点(圆心)与Point类中本身的点(圆心)比较
return Math.sqrt(Math.pow(o.x-this.x, 2)+Math.pow(o.y-this.y, 2));
}
public double getX() {
return x;
}
public void setX(double x) {
this.x = x;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}
}
class Circle{
private Point o;
private double radius;
Circle(){
// o=new Point();
// radius=1;
this(0,0,1);
}
Circle(double x,double y,double radius){//创建指定圆心和半径的圆
o=new Point(x,y);
this.radius=radius;
}
public boolean contain(double x,double y){//此时的坐标是用户传进来的
// Point p=new Point(x,y);//用户传入的点,求与原点的距离
// o.getDistance(p.getX(), p.getY());麻烦
return o.getDistance(x, y)<=radius;
}
public boolean contains(Circle other){
//求两圆圆心距离,半径之差,圆心距离小于半径之差则包含
return o.getDistance(other.o)<=this.radius-other.radius;
}
public boolean overlaps(Circle circle){
//圆心距离大于半径之差且小于半径之和
double distance=o.getDistance(circle.o);
return distance>=this.radius-circle.radius&&distance<=this.radius+circle.radius;
}
//求面积
public double getArea(){
return Math.PI*Math.pow(radius, 2);
}
//求周长
public double getPerimeter(){
return 2*Math.PI*radius;
}
public Point getO() {
return o;
}
public void setO(Point o) {
this.o = o;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
}
public class Demo8_5 {
public static void main(String[] args) {
Circle c1=new Circle(0,0,4);
Circle c2=new Circle(2,2,2);
Circle c3=new Circle();
System.out.println(c1.contains(c2));
System.out.println(c1.overlaps(c2));
System.out.println(c1.contains(c3));
System.out.println(c1.overlaps(c3));
System.out.println(c1.getArea());
System.out.println(c1.getPerimeter());
}
}