import java.util.List;

/** Recorre una lista de figuras y usa las operaciones de Shapes. */
public class ShapeDemo {
    public static void main(String[] args) {
        List<Shape> shapes = List.of(new Circle(1), new Square(2), new Triangle(3, 4), new Circle(10));
        for (Shape s : shapes) {
            IO.println(s + " -> área " + "%.2f".formatted(Shapes.area(s)) + ", " + Shapes.describe(s));
        }
        IO.println(Shapes.describe(null));

        // La versión con instanceof olvidó Triangle y nadie avisó.
        try {
            Shapes.areaWithInstanceof(new Triangle(3, 4));
        } catch (IllegalArgumentException e) {
            IO.println("instanceof: " + e.getMessage());
        }
    }
}
