@startuml abstract class Shape { {abstract} + getArea(): double } class Circle { - radius: double + getArea(): double } class Rectangle { - width: double - height: double + getArea(): double } class Triangle { - base: double - height: double + getArea(): double } class ShapeUtil { + printArea(Shape): void } Shape <|-- Circle Shape <|-- Rectangle Shape <|-- Triangle ShapeUtil ..> Shape @enduml