java用户定义的类和对象
1.修改第一个构造函数以计算直径和面积 2.将第二个构造函数修改为setRadius,并在不调用setRadius的情况下计算面积 在类中创建两个新方法 一,。芬达里亚 二,。findDiameter 修改testcircle以适应更改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
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;在你的第二次演讲中,谢谢,我想我真的走错了方向,谢谢