Java_类的学习与使用(Lab 5_Exercise 4)

论坛 期权论坛 脚本     
匿名技术用户   2021-1-7 06:31   85   0

题目:


解答:

public class Circle2D {
 double x=0,y=0,radius=1;   //定义类中的方法所使用的变量
 
 public Circle2D () {   //无参构造函数,即不输入参数时,默认的实例圆心在(0,0),半径为1
  
 }
 
 public Circle2D (double x,double y,double radius) {   //有参构造函数,用于生成具有相应参数的实例
  this.x=x;
  this.y=y;
  this.radius=radius;
 }

 public double getX() {   //用于访问x值的方法
  return x;
 }

 public double getY() {   //用于访问y值的方法
  return y;
 }

 public double getRadius() {   //用于访问radius的方法
  return radius;
 }
 
 public double getArea() {   //计算并返回面积值
  double area=0;
  
  area=Math.PI*Math.pow(radius,2);
  
  return area;
 }
 
 public double getPerimeter() {   //计算并返回周长
  double perimeter=0;
  
  perimeter=2*Math.PI*radius;
  
  return perimeter;
 }
 
 public boolean contains(double x,double y) {   //判断(x,y)是否在对应实例圆的内部
  double d=0;
  
  d=Math.sqrt(x*x+y*y);
  
  if(d<radius)return true;
  else return false;
 }
 
 public boolean contains(Circle2D circle) {   //参数circle为Circle2D类所对应的某个实例
  double x1=circle.getX() ,y1=circle.getY(),radius1=circle.getRadius();   //得到circle实例的参数 
  double x0=x,y0=y,radius0=radius;
  double d=0;
  
  d=Math.sqrt(Math.pow((x1-x0),2)+Math.pow((y1-y0),2));
  
  if(d<radius0-radius1) return true;   //判断目前的实例圆是否内涵于circle对应的实例圆
  else return false;
 }
 
 public boolean overlaps(Circle2D circle) {   //判断目前的实例圆是否与circle对应的实例圆相交
  double x1=circle.getX() ,y1=circle.getY(),radius1=circle.getRadius(); 
  double x0=x,y0=y,radius0=radius;
  double d=0;
  
  d=Math.sqrt(Math.pow((x1-x0),2)+Math.pow((y1-y0),2));
  
  if(d>Math.abs(radius1-radius0) && d<radius1+radius0) return true;
  else return false;
 }

 public static void main(String[] args) {   //这里为了方便,直接在类中写main方法
  Circle2D c1=new Circle2D(2,2,5.5);   //新建3个实例圆
  Circle2D c2=new Circle2D(4,5,10.5);
  Circle2D c3=new Circle2D(3,5,2.3);
  
  System.out.printf("Circle1 area:%3f\n",c1.getArea());
  System.out.printf("Circle perimeter:%3f\n",c1.getPerimeter());
  System.out.printf("Does circle1 contain the point (3,3)? %b\n",c1.contains(3,3));
  System.out.printf("Does circle contain the circle centered at (4,5) and radius 10.5? %b\n",c1.contains(c2));
  System.out.printf("Does circle1 overlap the circle centered at (3,5) and radius 2.3? %b\n",c1.overlaps(c3));

 }

}

对类的理解:

1、类是对象的一个模板,封装了对象的数据以及处理方法

2、通过新建类的实例来调用类中的方法



最后,感谢各位的浏览啦,如果对代码有什么改进建议,可以在下方留言区留言ヽ(・ω・。)ノ

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP