+----------------+ | Shape | +----------------+ | + getArea(): double | +----------------+ ^ | +------+------+------+ | | | +--------+ +----------+ +----------+ | Circle | | Rectangle| | Triangle | +--------+ +----------+ +----------+ | - radius: double | | - length: double | | - base: double | | + Circle(radius: double) | | + Rectangle(length: double, width: double) | | + Triangle(base: double, height: double) | | + getArea(): double | | + getArea(): double | | + getArea(): double | +--------+ +----------+ +----------+ +----------------+ | ShapeUtil | +----------------+ | + printArea(shape: Shape): void | +----------------+ | v +----------------+ | Shape | +----------------+