Skip to content

Instantly share code, notes, and snippets.

@meowpunch
Last active January 10, 2022 17:48
Show Gist options
  • Save meowpunch/6230c721fe8f039d1e1a21761f5ce90a to your computer and use it in GitHub Desktop.
Save meowpunch/6230c721fe8f039d1e1a21761f5ce90a to your computer and use it in GitHub Desktop.
Procedural Shape, Chapter 6: Objects and Data Structures, Clean Code, Robert C Martin
public class Square {
public Point topLeft;
public double side;
}
public class Rectangle {
public Point topLeft;
public double height;
public double width;
}
public class Circle {
public Point center;
public double radius;
}
public class Geometry {
public final double PI = 3.141592653589793;
public double area(Object shape) throws NoSuchShapeException {
if (shape instanceof Square) {
Square s = (Square) shape;
return s.side * s.side;
} else if (shape instanceof Rectangle) {
Rectangle r = (Rectangle) shape;
return r.height * r.width;
} else if (shape instanceof Circle) {
Circle c = (Circle) shape;
return PI * c.radius * c.radius;
}
throw new NoSuchShapeException();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment