public class CircleToSquareConverter implements ShapeConverter { @Override public Square convert(Circle source) { if (!canConvert(source)) { throw new IllegalArgumentException("Cannot convert null circle"); } // Calculate side length of square with equal area to the circle double circleArea = source.calculateArea(); double squareSide = Math.sqrt(circleArea); // Create square with the same color as the circle return new Square(squareSide, source.getColor()); } @Override public boolean canConvert(Circle source) { return source != null && source.getRadius() > 0; } @Override public String getConversionDescription() { return "Converts a circle to a square with equal area and same color"; } }