Files
2026-05-04 14:52:32 +02:00

80 lines
2.1 KiB
C++

/**
* @file Pizza.h
* @brief Hlavičkový soubor pro třídu Pizza.
*/
#ifndef PROOP_PIZZA_H
#define PROOP_PIZZA_H
#include "IMenuItem.h"
#include "Ingredient.h"
#include "MenuItem.h"
/**
* @class Pizza
* @brief Třída reprezentující pizzu (dědí z MenuItem).
*
* Umožňuje přidávat a odebírat dynamicky alokované ingredience.
*/
class Pizza : public MenuItem {
private:
int diameter; ///< Průměr pizzy v cm
bool hasExtraCheese; ///< Indikátor extra sýra
Ingredient ** ingredients; ///< Dynamické pole ukazatelů na ingredience
int maxIngredients; ///< Maximální kapacita pole ingrediencí
int currentIngredients = 0; ///< Aktuální počet přidaných ingrediencí
public:
/**
* @brief Výchozí konstruktor (nastaví základní hodnoty).
*/
Pizza();
/**
* @brief Konstruktor s parametry.
* @param n Název pizzy.
* @param b Základní cena.
* @param d Průměr v cm.
* @param e True, pokud má extra sýr.
* @param m Maximální počet ingrediencí.
*/
Pizza(string n, double b, int d, bool e, int m);
/**
* @brief Destruktor. Uvolňuje paměť všech alokovaných ingrediencí.
*/
~Pizza();
/**
* @brief Přidá ingredienci na pizzu.
* @param i Ukazatel na novou ingredienci.
* @return True, pokud se přidání povedlo, jinak false (při překročení kapacity).
*/
bool addIngredient(Ingredient * i);
/**
* @brief Odebere ingredienci z pizzy podle názvu.
* @param name Název ingredience k odebrání.
* @return True, pokud byla nalezena a odebrána, jinak false.
*/
bool removeIngredient(string name);
/**
* @brief Získá celkovou cenu pizzy.
* @return Cena pizzy.
*/
double getPrice() const override;
/**
* @brief Vypíše informace o pizze.
* @return Detailní textový popis pizzy.
*/
string printInfo() override;
/**
* @brief Vrátí průměr pizzy.
* @return Průměr v cm.
*/
int getDiameter();
};
#endif //PROOP_PIZZA_H