#pragma once
/**
* @brief Abstract base class for shapes.
*
* Provides a common interface for different types of shapes.
*/
class Shape {
public:
/**
* @brief Virtual destructor.
*/
virtual ~Shape() {}
/**
* @brief Calculates the area of the shape.
*
* @return double The area of the shape.
*/
virtual double area() const = 0;
/**
* @brief Calculates the perimeter of the shape.
*
* @return double The perimeter of the shape.
*/
virtual double perimeter() const = 0;
};