Point类与Circle类

先列出对象中的属性与方法,编写具体的代码时,先列出函数名,逐层写出函数体

/*
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());
	}
}
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值