java用户定义的类和对象

java用户定义的类和对象,java,class,geometry,computer-science,Java,Class,Geometry,Computer Science,1.修改第一个构造函数以计算直径和面积 2.将第二个构造函数修改为setRadius,并在不调用setRadius的情况下计算面积 在类中创建两个新方法 一,。芬达里亚 二,。findDiameter 修改testcircle以适应更改 public class Circle { private double radius, area, diameter; public Circle() { radius = 1; diameter

1.修改第一个构造函数以计算直径和面积

2.将第二个构造函数修改为setRadius,并在不调用setRadius的情况下计算面积

在类中创建两个新方法

一,。芬达里亚

二,。findDiameter

修改testcircle以适应更改

    public class Circle 
{
private double radius, area, diameter;
    public Circle() 

    {
        radius = 1;
        diameter = radius * 2;
        area = Math.PI * radius * radius;
    }
    public Circle(double myradius) 

    {
        myradius = radius;
        area = Math.PI * radius * radius;
    }

    public void setRadius(double aRadius)
    {
        this.radius = aRadius;
        diameter = radius * 2;
        area = Math.PI * radius * radius;
    }

    public void CalArea(double aArea)
    {
        area = Math.PI * radius * radius;
    }

    public void CalDiameter(double aDiameter)
    {
        diameter = radius * 2;
    }

     public double getRadius()
    {
        return radius;
    }
    public double getDiameter()
    {
        return diameter;
    }
    public double getArea()
    {
       return area;
    } 
}        


    public class TestCircle {

public static void main(String[] args) 
{
    Circle circle1; //Declaring an object(instance) of the class Circle.
        double myRadius, myDiameter, myArea;

        circle1 = new Circle();  

        myRadius = circle1.getRadius();
        System.out.println(myRadius);

        circle1.setRadius(5);
        myRadius = circle1.getRadius();
        System.out.println(myRadius);

        myDiameter = circle1.getDiameter();
        System.out.println(myDiameter);

        myArea = circle1.getArea();
        System.out.println(myArea);

        Circle circle2;

        circle2 = new Circle(2.5);

        myRadius = circle2.getRadius();
        System.out.println(myRadius);

        myDiameter = circle2.getDiameter();
        System.out.println(myDiameter);

        myArea = circle2.getArea();
        System.out.println(myArea);       
     }
}
我已经完成了第一项任务,但在不调用setRadius的情况下计算面积对我来说似乎有点棘手,或者我做得不对。非常感谢您的帮助/建议

更新

我想我发现了我的问题

    public class Circle 
    {
    private double radius, area, diameter;
    public Circle() 
    {
        radius = 1;
        diameter = radius * 2;
        area = Math.PI * radius * radius;
    }
    public Circle(double myradius) 
    {
        this.radius = myradius;
    }

    public void setRadius(double aRadius)
    {
        this.radius = aRadius;
        diameter = radius * 2;
        area = Math.PI * radius * radius;
    }

    public double findDiameter() 
      {
        return radius*2;
      }

    public double findArea() 
    {
        return Math.PI * radius * radius;
    }

     public double getRadius()
    {
        return radius;
    }
    public double getDiameter()
    {
        return diameter;
    }
    public double getArea()
    {
       return area;
    } 
    }

然后,我对主体进行了必要的修改。这个家庭作业练习的意思是教你对象的状态,以及如何避免冗余

在我看来,目标是

能够计算直径和面积,并将其存储在对象中 消除冗余状态,并在需要时计算值 圆有一个自由属性半径和两个派生属性直径和面积,当半径已知时,可以随时计算这些属性。 这意味着您可以只存储半径,并实现findArea/findDiameter方法,以便根据半径计算结果,然后返回:

public double findDiameter() {
    return radius*2;
}

public double findArea() {
    return Math.PI * radius * radius;
}

注意命名约定:前缀get表示可以在本地以廉价的方式访问该值。当计算或加载该值的成本很高时,请使用不同的前缀,以便在经常使用相同的值时了解成本,并将其存储为中间结果。这就是为什么在这个例子中写的方法是通过查找来前缀的,虽然我个人会使用不同的前缀,但是看起来好像通过搜索它来检索数据,在具体的情况下,我会认为CalCalPress足够便宜,使用GET前缀。

你有这个反向MyRADIUS=RADIUS;在你的第二次演讲中,谢谢,我想我真的走错了方向,谢谢