Java类和对象的使用

一、实验名称

实验二:类和对象的使用

二、实验目的

1.加深对老师授课内容的理解。
2.编写Point类和Circle类,并在对应的测试类中进行调试。
3.在程序调试过程中,发现问题并解决问题。
4.加深对Java集成开发环境的了解。

三、主要设计思想与算法

实现一个Point类,该类包含表示坐标的两个int型变量x、y,构造方法Point()和Point(int xx, int yy),返回x值和y值的int getX()和int getY()方法,设置x值和y值的void setX(int xx)和void setY(int yy)方法,计算两点间距离的double distance(Point p)方法。实现一个Circle类,该类包含表示圆心的Point型变量center,表示半径的int 型变量radius,以及构造方法Circle()、Circle(int xx,int yy,int r)、Circle(Point c,int r),返回周长和面积的double perimeter()、double area()方法,返回两个圆是否为同一个圆(返回0)、同心圆(返回1)、相交的圆(返回2)、分离的圆(返回3)、包含的圆(返回4)等关系的int relation(Circle c)等方法。
实现测试上述两个类的Test类。该类在main方法中分别创建若干个Point对象和Circle对象,并调用相关方法,输出方法的返回值,验证其正确性。

四、代码实现

Circle.java

package shiyan2;

public class Circle {
    Point center;
    int radius;
    public Circle() {
		this(new Point(),0);
	}
	public Circle(int xx,int yy,int r) {
		this(new Point(xx,yy),r);
	}
	public Circle(Point p,int r) {
		if(p!=null)
			center=p;
        else 
        	center=new Point(0,0);
		if(r>=0)
			radius=r;
		else
			radius=0;
	}
	public double area() {
		return (Math.PI*this.radius*this.radius);
	}
    public double perimeter() {
		return (Math.PI*this.radius*2);
	}
    public int getRadius() {
    	return this.radius;
    }
    public Point getCenter() {
    	return this.center;
    }
    public int relation(Circle c) {
    	if(this.center.x==c.center.x&&this.center.y==c.center.y&&this.radius==c.radius)
    		return 0;
    	else if(this.center.x==c.center.x&&this.center.y==c.center.y&&this.radius!=c.radius)
    		return 1;
    	else if(center.distance(c.center)<=(this.radius+c.radius))
    		return 2;
    	else if(center.distance(c.center)>(this.radius+c.radius))
    		return 3;
    	else if((center.distance(c.center)+c.radius)<this.radius)
    		return 4;
    	else if((this.radius<0)&&(c.radius<0))
    		return 5;
    	else 
    		return 6;
    }
}

CircleText.java

package shiyan2;

public class CircleText {
	public static void main(String[] argc)
	{
		Circle c1=new Circle(0,0,3);
		Circle c2=new Circle(1,1,3);
		System.out.println(c2.relation(c1));
	}

}

Point.java

package shiyan2;

public class Point {
    int x,y;
	public Point()
	{
		this(0,0);
	}
	
	public Point(int xx,int yy){
		this.x=xx;
		this.y=yy;
	}
	
	public int getX() {
		return x;
	}
	
	public void setX(int xx) {
		this.x = xx;
	}

	public int getY() {
		return y;
	}

	public void setY(int yy) {
		this.y = yy;
	}
	
	public double distance(Point p) {
		double a,b;
		a=(this.getX()-p.getX())*(this.getX()-p.getX());
		b=(this.getY()-p.getY())*(this.getY()-p.getY());
		double r=Math.sqrt(a+b);
		return r;
	}
}

PointText.java

package shiyan2;

public class PointText {
	public static void main(String[] argc) {
		Point p1=new Point(3,4);
		Point p2=new Point(1,2);
		System.out.println("x:"+p1.getX()+"  y:"+p1.getY());
		p1.setX(6);
		p1.setY(20);
		System.out.println("x:"+p1.getX()+"  y:"+p1.getY());
		p2.setX(5);
		p2.setY(20);
		System.out.println(p1.distance(p2));
	}
}

运行结果

  1. PointText运行结果
    返回p1,p2的横纵坐标和两点距离
    在这里插入图片描述
  2. CircleText测试结果
    在这里插入图片描述
    两圆关系相交
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二琳爱吃肉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值