package visitor; /** * Concrete Visitor 1 — calculates area for each shape type. * Area formulas live here, not scattered across shape classes. */ public class AreaCalculator implements ShapeVisitor { @Override public void visit(Circle c) { double area = Math.PI * c.getRadius() * c.getRadius(); System.out.printf(" Area of %s = %.2f%n", c.getName(), area); } @Override public void visit(Rectangle r) { double area = r.getWidth() * r.getHeight(); System.out.printf(" Area of %s = %.2f%n", r.getName(), area); } @Override public void visit(Triangle t) { double area = 0.5 * t.getBase() * t.getHeight(); System.out.printf(" Area of %s = %.2f%n", t.getName(), area); } }