Java挑战题——TestCircle(类的组合)

(仅记录自己的学习之路)
1、 设计一个名为Point的类,代表一个以x坐标和y坐标表示的点。该类包括:
(1) 一个创建点(0,0)的无参构造方法;
(2) 以指定坐标构建点的构造方法;
(3) 成员变量x和y的get和set方法;
(4) 一个名为distance的静态方法,返回两个MyPoint对象之间的距离。
提示:

  • 方法头:public static double distance(Point p1, Point p2)
  • 调用Math类的sqrt方法计算平方根,方法定义如下: public static double sqrt(double a)
    //返回正确舍入的 double 值的正平方根。

(5) 一个名为distance的方法,返回从该点到MyPoint类型的指定点之间的距离;
提示:

  • 方法头: public double distance(Point p)
  • 调用上面的静态distance方法计算该点和指定点之间的距离。

2、编写一个Circle类,包括:
(1) 一个Point类型的私有成员变量p,表示圆心;
(2) 一个double类型的私有成员变量radius,表示半径;
(3) 一个无参的构造方法,创建一个圆心在原点,且半径为1的默认的圆;
(4) 一个带参数的构造方法,创建指定圆心p和半径radius的圆;
(5) 一个带参数的构造方法,创建指定圆心坐标x和y以及半径radius的圆;
(6) 两个成员变量的修改器和读取器;
(7) 一个返回圆面积的方法getArea();
(8) 一个返回圆周长的方法getPerimeter();
(9) 如果给定点(x,y)在这个圆内,那么方法contains(double x, double y)返回true,否则返回false;
(10) 如果给定点p在这个圆内,那么方法contains(Point p)返回true,否则返回false;
(11) 如果给定的圆在这个圆内,那么方法contains(Circle circle) 返回true,否则返回false;
(12) 如果给定的圆和这个圆重叠,那么方法overlaps(Circle circle) 返回true,否则返回false。

3、要求:
(1) 画出UML类图(注意,包含两个类,且要体现两个类之间关系)。
(2) 编程实现两个类,下面是测试类代码
public class TestCircle {

public static void main(String[] args) {
	Circle c1 = new Circle();
	c1.setRadius(6);
	System.out.println("点(7,8)在圆c1内吗?" + c1.contains(7,8));
	System.out.println("点(3,4)在圆c1内吗?" + c1.contains(3,4));
	
	Circle c2 = new Circle(new Point(7,3), 7);
	System.out.println("圆c2包含在圆c1吗?" + c1.contains(c2));
	System.out.println("圆c1与圆c2重叠吗?" + c1.overlaps(c2));
	
	Circle c3 = new Circle(new Point(90,100), 6);
	System.out.println("圆c1与圆c3重叠吗?" + c1.overlaps(c3));
	System.out.println("圆c3包含在圆c2吗?" + c2.contains(c3));
}

}

代码如下:
1、Point类

package TestCircle;

public class Point {
   
	private double x;
	private double y;
	public Point() {
   
		x = 0;
		y = 0;
	}
	public Point(double x, double y) {
   
		this.x = x;
		this.y = y;
	}
	public double getX() {
   
		return x;
	}
	public void setX(double x) {
   
		this.x = x;
	}
	public double getY() {
   
		return y;
	
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值