classDiagram class Shape { <> +getArea() double* } class Circle { -radius : double +Circle(double) +getArea() double } class Rectangle { -length : double -width : double +Rectangle(double, double) +getArea() double } class Triangle { -base : double -height : double +Triangle(double, double) +getArea() double } class ShapeUtil { +printArea(Shape) void } Shape <|-- Circle Shape <|-- Rectangle Shape <|-- Triangle ShapeUtil --> Shape : uses