JAVA重点编程

这篇博客详细介绍了JAVA编程中关于Point、Circle和R_Circle类的实现,包括构造方法、成员方法如移动、距离计算、相等比较等,并通过测试用例展示了它们的功能。此外,还涉及了类的继承和对象的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 编程序

本题需要创建和定义的源程序文件及类如下:

源程序文件:Point.java,类:Point。

根据要求修改实验5第2题中定义的Point类。

(1) 去掉set方法。

(2) 添加如下构造方法:

public Point();                                                                 //将点的坐标值置为(0, 0)

public Point(intx,int y);               

public Point(Point p);

(3) 添加以下成员方法:

public void move(intx, int y);                                         //当前点移至指定位置

public double distance(Point p);                       // 计算当前点与参数点之间的距离

(4) 修改main方法的相关代码以进行相应的测试。主要测试构造方法和新添加的成员方法。

 

public class Point {

       private int x,y;

       public final static intEAST = 1;          // 类的有名常量,用以表示的点移动方向

       public final static intSOUTH =2;

       public final static intWEST = 3;

       public final static intNORTH =4;

       //public void set(int x,int y){this.x=x;this.y=y;}              

       // 设置点的坐标值

       public Point(){

              this(0,0);

       }// 将点的坐标值置为(0, 0)

       public Point(int x,int y){

              x=this.x;

              y=this.y;

       }

       public Point(Point p){

              this( p.x,p.y );

       }

       public void move(int x, inty){

              this.x=x;this.y=y;

       }// 当前点移至指定位置

       public doubledistance(Point p){

              returnMath.sqrt((this.x-0)*(this.x-0)+(this.y-0)*(this.y-0));

       }// 计算当前点与参数点之间的距离

       public void move(intorientation){

              if(orientation==EAST)

                     x++;

              if(orientation==SOUTH)

                     y--;

              if(orientation==WEST)

                     x--;

              if(orientation==NORTH)

                     y++;

       }           

       // 按指定的方向将当前点移动1个像素

       public double distance(intx, int y){

              returnMath.sqrt((this.x-x)*(this.x-x)+(this.y-y)*(this.y-y));

       }           

       // 计算当前点与指定点之间的距离

       public boolean equals(Pointp){

              if(x==p.getX()&&y==p.getY())

                     return true;

              else return false;

       }

       // 测试当前点与参数点p的坐标值是否相等

       public int getX(){

              return x;

       }                         

       // 返回当前点的X坐标

       public int getY(){

              return y;

       }                         

       // 返回当前点的Y坐标

       public String toString(){

              return"("+x+","+y+")";

       }

       // 以(x,y)格式返回当前点对象的字符串表示

       public static void main(String args[]) {

              Point o=new Point();

              o.move(10,15);

              System.out.println(o.toString());

              o.move(EAST);

              Point p=new Point();

              p.move(5,6);

              System.out.println("distance= " + o.distance(10,15));

              System.out.println(o.equals(p));

              System.out.println(o.toString());

       }

}

 

2. 编程序

本题需要创建和定义的源程序文件及类如下:

源程序文件:zuoye6.java,类:Circle、TestCircle。

根据要求修改实验2第2题中定义的Circle类和TestCircle类。

(1) Circle类具有如下接口:

class Circle {

      public Circle();                                           // 将当前圆的半径设置为1

      public Circle(int r);

      public Circle(Circle c);                                              //用c的状态设置当前圆的状态

      public double getArea();                                           // 计算圆的面积

      public double getPerimeter();                     // 计算圆的周长

      public boolean equals(Circle c);                                // 测试当前圆与参数圆的面积是否相等

      public int getRadius();                                              //返回圆的半径

      public String toString();                                            // 以格式“圆(r)”返回当前圆的字符串表示

}

(2) 修改TestCircle以进行相应的测试。主要测试构造方法、equals方法和toString方法。

class Circle {

  private int radius;

  public Circle(){

     this.radius=1;

   }

  public Circle(int r){

     this.radius=r;

   }

  public Circle(Circle c){

     this.radius=c.radius;

   }

  public double getArea(){

     return Math.PI*radius*radius;

   }

  public double getPerimeter(){

     return 2*radius*Math.PI;

   }

  public boolean equals(Circle c){

     if(radius==c.radius) return true;

     else return false;

  }  

  public int getRadius(){

     return radius;

   }

  public String toString(){

     return "圆("+radius+")";

   }

}

class TestCircle {

  public static void main(String[] args) {

  Circle c1 = new Circle();

  Circle c2 = new Circle(3);

  System.out.println("r1="+c1.getRadius());

  System.out.println("a1="+c1.getArea()+",p1="+c1.getPerimeter());

  System.out.println("r2="+c2.getRadius());

  System.out.println("a2="+c2.getArea()+",p2="+c2.getPerimeter());

  System.out.println("当前圆与参数圆的面积是否相等"+c1.equals(c2));

  System.out.println("当前圆:"+c1.toString());

   }

}

 

 

 

2. 编程序

本题需要创建和定义的源程序文件及类如下:

源程序文件:zuoye7.java,类:R_Circle、TestR_Circle。

利用实验6中的Point类和Circle类定义一个表示屏幕坐标系上的圆区域的R_Circle类。该类包含一个private的、Point型实例变量p,用于确定圆区域的圆心位置,和一个private的、Circle型实例变量c,用于确定圆区域的形状大小。类的软件接口如下:

class R_Circle {

      public R_Circle();                                                     // 构造方法,圆心位置(1, 1),圆半径为1

      public R_Circle(Point p, Circle c);                            // 构造方法

      public R_Circle(Circle c, Point p);                            // 构造方法

      public R_Circle(int x, int y, int r );                            // 构造方法,圆心位置(x, y),圆半径为r

      public boolean equals(R_Circle rc);                          // 判断两个圆区域是否相等

      public void move(int orientation);                             // 按指定的方向将当前圆区域移动1个像素

      public Point getPoint();                                             // 返回当前圆区域的圆心位置

      public int getRadius();                                              //返回当前圆区域的半径

      public String toString();                             // 以格式“圆区域(x, y, r)”返回当前圆区域的字符串表示

}

然后编写一个应用程序起始类TestR_Circle测试该类(两个类存放在同一个文件中)。

 

程序为:

class Point {

       private int x;

       private int y;

       publicfinal static int EAST = 1;         

       publicfinal static int SOUTH =2;

       publicfinal static int WEST = 3;

       publicfinal static int NORTH =4;

       publicPoint(){

          this.x=0;

          this.y=0;

       }                                       

       public Point(int x,int y){

          this.x=x;

          this.y=y;

       }    

       public Point(Point p){

          this.x=p.x;

          this.y=p.y;

       }

       public void move(int orientation){             

          switch(orientation){

              case EAST:x++;break;

              case SOUTH:y++;break;

              case WEST:x--;break;

              case NORTH:y--;break;

             default:System.out.println("error");

          }

       }

       public void move(int x, int y){

          this.x=x;

          this.y=y;

       }

       public double distance(Point p){

          double z;

          z=Math.sqrt(Math.pow((p.getX()-this.x),2)+Math.pow((p.getY()-this.y),2));

          return z;

       }

       public double distance(int x, int y){           

          double d;

          d=Math.sqrt(Math.pow((x-this.x),2)+Math.pow((y-this.y),2));

          return d;

       }

       public boolean equals(Point p){          

          int a=p.getX();

          int b=p.getY();

          if(a==x&&b==y) return true;

          else return false;

       }

       public int getX(){

          return x;

       }                         

       publicint getY(){

          return y;

       }                         

       publicString toString(){

          return "("+x+","+y+")";

       }

       public static void main(String args[]){

           Point o=new Point();

          o.move(1,1);

          Point p=new Point();

          p.x=2;

          p.y=2;

          System.out.println("两点间的距离:"+o.distance(p));

          System.out.println("当前点与参数点p的坐标值是否相等"+o.equals(p));

          System.out.println("当前点:"+o.toString());

       }           

}

class Circle {

  private int radius;

  public Circle(){

     this.radius=1;

   }

  public Circle(int r){

     this.radius=r;

   }

  public Circle(Circle c){

     this.radius=c.radius;

   }

  public double getArea(){

     return Math.PI*radius*radius;

   }

  public double getPerimeter(){

     return 2*radius*Math.PI;

   }

  public boolean equals(Circle c){

     if(radius==c.radius) return true;

     else return false;

  }  

  public int getRadius(){

     return radius;

   }

  public String toString(){

     return "圆("+radius+")";

   }

}

class TestCircle {

  public static void main(String[] args) {

  Circle c1 = new Circle();

  Circle c2 = new Circle(3);

  System.out.println("r1="+c1.getRadius());

  System.out.println("a1="+c1.getArea()+",p1="+c1.getPerimeter());

  System.out.println("r2="+c2.getRadius());

  System.out.println("a2="+c2.getArea()+",p2="+c2.getPerimeter());

  System.out.println("当前圆与参数圆的面积是否相等"+c1.equals(c2));

  System.out.println("当前圆:"+c1.toString());

   }

}

 

class R_Circle {

       private Circle c;

       private Point p;

       publicR_Circle(){        

          p=new Point(1,1);

          c=new Circle(1);

       }

       public R_Circle(Point p, Circle c){            

          this.p=new Point(p);

          this.c=new Circle(c);

       }

       public R_Circle(Circle c, Point p){     

          this(p,c);

       }

       public R_Circle(int x, int y, int r){      

          this.p=new Point(x,y);

          this.c=new Circle(r);

       }

       public boolean equals(R_Circle rc){           

         if(rc.c.equals(this.c)&rc.p.equals(this.p))return true;

          else return false;

       }

       public void move(int orientation){             

          p.move(orientation);

       }

       public Point getPoint(){              

          return p;

       }

       public int getRadius(){  

          return c.getRadius();

       }

       public String toString(){             

          return "圆区域("+p.getX()+","+p.getY()+","+c.getRadius()+")";

       }

}

class TestR_Circle{

       public static void main(String[] args){

          R_Circle a=new R_Circle();

          R_Circle b=new R_Circle(3,3,2);

          a.move(1);

          System.out.println("判断两个圆区域是否相等:"+a.equals(b));

          System.out.println("当前圆区域的圆心位置:"+a.getPoint());

          System.out.println("当前圆区域的半径:"+a.getRadius());

          System.out.println("以格式“圆区域(x, y, r)”返回当前圆区域的字符串"+a.toString());

       }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值