Wyf 实现一个圆类实现一个圆类实验类型:验证性 实验目的:掌握 Java 语言类的定义、数据域封装、构造方法 实验内容: 一、定义一个名为 Circle 的圆类,位于 shape 包中要求如下: (1) 该类需要描述圆在二维坐标系中的位置,圆心的横、纵坐标值均取整数; 描述圆的 半径,取双精度类型 (2) 无参构造方法将圆心坐标设为坐标圆点,半径设为 1.0;有参构造方法需 要根据参 数值设置圆心坐标和半径值 (3) 提供一个计算圆面积的方法 double getArea() (4) 提供一个判断当前圆对象与参数圆对象是否相交的方法(相交方式见下图): boolean isIntersected(Circle another) (5) 提供一个判断当前圆对象是否包含参数圆对象的方法(包含方式见下图): boolean contains(Circle another) (6) 提供一个判断当前圆对象与参数圆对象的大小关系的方法(判断依据是半径, 半径 之差的绝对值小于 0.0001 认为相等;返回负数表示当前圆对象小,0 表示相 等,正数表示 当前圆对象) int compareTo(Circle another) (7) 提供返回当前圆的字符串的方法,格式为:[Circle(x,y)-raduis] String toString() 二、定义一个包含 main 方法的类 TestCircle,位于 shape 包中。
要求如下: (1) main 方法中调用以下方法 (2) 编写静态方法 createArray,生成位置和大小均随机的 10 个圆对象,置于 数组中 (3) 编写静态方法 sort 对这 10 个圆对象进行升序排序,并输出 (4) 编写静态方法 computeArea 计算这 10 个圆中互不相交和包含的圆的面积 之和 提交要求:打包为可以执行的 JAR 文档,其中要包含源程序文件 代码;代码; packagepackage shape;shape;/**/*** ** * @author@author 华南华南*/*/ publicpublic classclass CircleCircle {private{private intint x;x; privateprivate intint y;y; privateprivate doubledouble radius;radius; publicpublic Circle(){Circle(){ this(0,0,1.0);this(0,0,1.0); } } publicpublic Circle(intCircle(int x,intx,int y,doubley,double radius){radius){this.x=x;this.x=x;this.y=y;this.y=y;this.radius=radius;this.radius=radius;} }/**/*** * @return@return thethe x x*/*/publicpublic intint getX()getX() { {returnreturn x;x;} }/**/*** * @param@param x x thethe x x toto setset*/*/publicpublic voidvoid setX(intsetX(int x)x) { {this.xthis.x = = x;x;} }/**/*** * @return@return thethe y y*/*/publicpublic intint getY()getY() { {returnreturn y;y;} }/**/*** * @param@param y y thethe y y toto setset*/*/publicpublic voidvoid setY(intsetY(int y)y) { {this.ythis.y = = y;y;} }/**/*** * @return@return thethe radiusradius*/*/publicpublic doubledouble getRadius()getRadius() { {returnreturn radius;radius;} }/**/*** * @param@param radiusradius thethe radiusradius toto setset*/*/publicpublic voidvoid setRadius(doublesetRadius(double radius)radius) { {this.radiusthis.radius = = radius;radius;} }publicpublic doubledouble getArea(){getArea(){returnreturn radius*radius*Math.PI;}radius*radius*Math.PI;}publicpublic booleanboolean isIntersected(CircleisIntersected(Circle another){another){doubledouble a;a;doubledouble b;b;doubledouble d;d;a=Math.abs(radius-another.radius);a=Math.abs(radius-another.radius);b=radius+another.radius;b=radius+another.radius;d=Math.sqrt((x-another.x)*(x-another.x)+(y-another.y)*(y-d=Math.sqrt((x-another.x)*(x-another.x)+(y-another.y)*(y- another.y));another.y));if(a=0.001)if(e=0.001) returnreturn i=-1;i=-1;elseelse if(e>0i=1;elseelse if(e==0||a<0.001)if(e==0||a<0.001) returnreturn i=0;i=0;returnreturn i;i;} } @Override@Overridepublicpublic StringString toString(){toString(){returnreturn “Circle(“+x+“,“+y+“)“+“-“+radius;“Circle(“+x+“,“+y+“)“+“-“+radius;} } } }packagepackage shape;shape;publicpublic classclass TestCircleTestCircle { {/**/*** * @param@param argsargs*/*/ publicpublic staticstatic voidvoid main(String[]main(String[] args)args) { { CircleCircle [][] circle;circle; circle=createArray();circle=createArray(); System.out.println(“System.out.println(“这这 1010 个圆从大到小排列个圆从大到小排列:“);:“); sort(circle);sort(circle); System.out.println(“System.out.println(“这这 1010 个圆中互不相交和包含的圆的面积个圆中互不相交和包含的圆的面积:“);:“); System.out.println(computeArea(circle));System.out.println(computeArea(circle)); //// TODOTODO Auto-generatedAuto-generated methodmethod stubstub} } publicpublic staticstatic Circle[]Circle[] createArray(){createArray(){intint x,y;doublex,y;double radius;radius;CircleCircle [][] circle=newcircle=new Circle[10];Circle[10];for(intfor(int i=0;i