ClayGraphics clay.shapes package

The ClayGraphics clay.shapes package consists of 3 Java interfaces and 3 Java Classes which implement the interfaces. Additionally, 3 Java Main Classes are crafted to test the Java Classes.

Demos

init:
deps-jar:
compile-single:
run-single:
Testing the functionality of the ClayCircle class ...
<Circle: radius=10.0>
radius = 10.0
area = 314.1592653589793
perimeter = 62.83185307179586
<Circle: radius=15.0>
<Circle: radius=5.0>
BUILD SUCCESSFUL (total time: 1 second)

Code

package clay.shapes;

public interface ClayCircleADT {
    public double radius();
    public double area();
    public double perimeter();
    public void expand(double amount);
    public void shrink(double amount);
    public String toString();
}


package clay.shapes;

public class ClayCircle implements ClayCircleADT {
    
    private double radius;

    public ClayCircle(double radius) {
        this.radius = radius;
    }
   
    public double radius() {
        return radius;
    }
        
    public double area() {
        return Math.PI * Math.pow(radius,2);
    }

    public double perimeter() {
        return Math.PI * diameter();
    }

    private double diameter() {
        return radius*2;
    }

    public void expand(double amount) {
        radius = radius + amount;
    }

    public void shrink(double amount) {
        radius = radius - amount;
    }
    
    public String toString() {
        return "<Circle: radius=" + radius + ">";
    }

}


package testers;

import clay.shapes.ClayCircle;

public class ClayCircleTest {
    
    public ClayCircleTest() {
    }
    
    public static void main(String[] args) {
        System.out.println("Testing the functionality of the ClayCircle class ...");
        ClayCircle c = new ClayCircle(10);
        System.out.println(c.toString());
        System.out.println("radius = " + c.radius());
        System.out.println("area = " + c.area());
        System.out.println("perimeter = " + c.perimeter());
        c.expand(5);
        System.out.println(c.toString());
        c.shrink(10);
        System.out.println(c.toString());
    }
    
}


package clay.shapes;

public interface ClaySquareADT {
    public double side();
    public double area();
    public double perimeter();
    public void expand(double amount);
    public void shrink(double amount);
    public String toString();
}


package clay.shapes;

public interface ClayRectangleADT {
    public double height();
    public double width();
    public double area();
    public double perimeter();
    public void expand(double h, double w);
    public void shrink(double h, double w);
    public String toString();
}


Questions

  1. What is an interface?
  2. How does a class implement an interface?