class Point { // Attributes public double x; public double y; // Default Constructor public Point () { x = 0.0; y = 0.0; } // Non-default constructor public Point (double x, double y) { this.x = x; this.y = y; } public double dist (Point p) { return Math.sqrt ((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y)); } public String toString () { String str = "(" + x + ", " + y + ")"; return str; } public boolean equals (Point p) { return ((x == p.x) && (y == p.y)); } } class Circle { // Attributes private double radius; private static int numCircles = 0; private Point center; // Default Constructor public Circle () { radius = 0.0; center = new Point (); numCircles++; } // Non-default Constructor public Circle ( double radius, double x, double y) { this.radius = radius; center = new Point (x, y); numCircles++; } public Circle (double radius, Point p) { this.radius = radius; center = new Point(p.x, p.y); numCircles++; } // Accessors public double getRadius () { return radius; } public Point getCenter () { return center; } public int getNumCircles () { return numCircles; } // Mutators public void setRadius (double radius) { this.radius = radius; } public void setCenter (double x, double y) { center.x = x; center.y = y; // center = new Point (x, y); } // Other Methods public double calcCircum () { return 2.0 * Math.PI * radius; } public double calcArea () { return Math.PI * radius * radius; } public static double calcArea (double radius) { return Math.PI * radius * radius; } public boolean isInside (Point p) { return center.dist(p) < radius; } public boolean isInside (Circle c) { return (center.dist(c.getCenter()) + c.getRadius()) < radius; } public boolean doesIntersect (Circle c) { return (center.dist(c.getCenter())) < (radius + c.getRadius()); } public String toString () { String str = "Radius: " + radius + ", " + "Center: " + center; return str; } } public class TestCircle { public static void main (String[] args) { } }