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