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

84 lines
2.3 KiB
C++

/**
* @file Order.h
* @brief Hlavičkový soubor pro třídu Order.
*/
#ifndef PROOP_ORDER_H
#define PROOP_ORDER_H
#include "Customer.h"
#include "IMenuItem.h"
/**
* @class Order
* @brief Třída reprezentující objednávku zákazníka.
*
* Obsahuje dynamické pole položek a odkaz na zákazníka.
*/
class Order {
private:
IMenuItem** items; ///< Dynamické pole ukazatelů na položky objednávky
int itemCount; ///< Aktuální počet položek
int capacity; ///< Maximální kapacita objednávky
static int totalOrder; ///< Statické počítadlo všech vytvořených objednávek
Customer* customer; ///< Ukazatel na zákazníka, kterému objednávka patří
public:
/**
* @brief Konstruktor objednávky.
* @param capacity Maximální počet položek v objednávce.
* @param c Ukazatel na zákazníka.
*/
Order(int capacity, Customer * c);
/**
* @brief Destruktor. Uvolní všechny položky objednávky z paměti.
*/
~Order();
/**
* @brief Vrátí ukazatel na zákazníka.
* @return Ukazatel na objekt zákazníka.
*/
Customer* getCustomer();
/**
* @brief Přidá položku do objednávky.
* @param i Ukazatel na položku (IMenuItem).
* @return True, pokud se přidání podařilo, jinak false (plná kapacita).
*/
bool addItem(IMenuItem * i);
/**
* @brief Odebere položku z objednávky podle jména.
* @param name Název položky k odebrání.
* @return True, pokud byla položka smazána, jinak false.
*/
bool removeItem(string name);
/**
* @brief Vypočítá celkovou cenu všech položek.
* @return Součet cen položek v objednávce.
*/
double calculateTotal();
/**
* @brief Získá celkový historický počet vytvořených objednávek napříč programem.
* @return Počet objednávek (statická proměnná).
*/
static int getTotaOrders();
/**
* @brief Získá aktuální počet položek v objednávce.
* @return Počet položek.
*/
int getItemCount() const;
/**
* @brief Získá konkrétní položku podle indexu.
* @param index Pozice položky v poli.
* @return Ukazatel na položku, nebo nullptr pokud je index neplatný.
*/
IMenuItem* getItem(int index) const;
};
#endif //PROOP_ORDER_H