optional import statements optional package declaration public classname optional extends { fields, methods, constructors, etc. }
import java.awt.geom ; public Circle { fields, methods, constructors, etc. }
The Java program must be stored in the file
ClassName
.java where ClassName
is the name of the class.
Fields hold the state of the class. Generally, fields should be
declared as private
variables to allow the class code
to verify that reasonable values are assigned to fields.
It is a good idea to put all your field definitions at the beginning of the class.
import java.awt.geom ; public Circle { double x ; // fields for the center of the circle double y ; double radius ; // field for the radius methods, constructors, etc. }
It is a good idea to add public
methods to read and write your fields.
The accessor method returns the value of a field.
The methods return type should be the same as the field variable's type.
The modifier method assigns a new value to the field.
Since it returns no value, its return "type" should be void
.
It should have a single argument that has the same type as the
field variable.
Be prepared to cut-and-paste when creating these methods.
public double getRadius() { return radius ; } public void setRadius(double radius) { this.radius = radius ; // Notice the use of "this" }
You should define constructors to create class objects with reasonable values. Be sure to have a default no-arg constructor which provides reasonable initial values. Also, provide other constructors that you believe would be useful for "users" of your class.
In writing your constructor, it's a good idea to make use of your modifier methods.
public Circle() { // no-arg constructor setX(0.0) ; // "return" a unit circle setY(0.0) ; // at the origin setRadius(1.0) ; } public Circle(double x, double y, double radius) { setX(x) ; setY(y) ; setRadius(radius) ; }
Now you can define some useful methods and exotic constructors.
// computes the area of a circle public double getArea() { return Math.PI * radius / 4 ; } // checks if a point is inside the Circle public boolean contains(double x, double y) { double distSquared = (this.x-x)*(this.x-x) + (this.y-y)*(this.y-y) ; return distSquared <= radius*radius ; }
// accessor for the origion public Point2D getOrigin() { return new Point2D.double(x, y) ; } // modifier for the origion public void setOrigin(Point2D origin) { setX(origin.getX()) ; setY(origin.getY()) ; } // constructor with points public Circle(Point2D origin, double radius) { super(origin.getX(), origin.getY(), radius) ; } // checks if a point is inside the Circle public boolean contains(Point2D p) { return contains(p.getX(), p.getY()) ; }