#include #include "Pizzeria.h" #include "Customer.h" #include "Pizza.h" #include "Drink.h" #include "Ingredient.h" #include "AlcoholicDrink.h" using namespace std; /** * @mainpage Projekt 1: Objektový model pizzerie * * @section o_projektu_sec Shrnutí * Tento projekt představuje softwarovou simulaci fungování pizzerie, * pomocí OOP. * * @section struktura_sec Hierarchie a třídy * Systém se skládá z následujících logických částí: * - Základní rozhraní: IMenuItem * - Specifické položky (potomci): MenuItem, Pizza, Drink, AlcoholicDrink * - Správa podniku: Třída Pizzerie (zajišťuje hlavní logiku) * - Propojení entit: Třída Order agreguje jednotlivé položky do objednávek. * * @section vizualizace_sec UML Model * Vzájemné vztahy, dědičnost a asociace mezi jednotlivými třídami ilustruje níže uvedený grafický návrh. * @image latex UML.png "Schéma tříd systému" width=\textwidth * @image html UML.svg "Schéma tříd systému" */ int main() { Pizzeria* pizzeria = new Pizzeria("Pizzerie u Lubije", 10); Customer* roman = new Customer("Roman Lubij", "+420 777 666 555", 100); Customer* customers[10](nullptr); for (int i = 0; i < 10; i++) { customers[i] = new Customer("Customer " + to_string(i), "+420 777 666 55"+to_string(i), 100*i); cout << "Customer " << i+1 << " created" << endl; } Order* order1 = new Order(5, roman); Order* orders[10](nullptr); for (int i = 0; i < 10; i++) { orders[i] = new Order(5, customers[i]); cout << "Order " << i+1 << " created" << endl; } Pizza* pizza1 = new Pizza("Hawai", 189.99, 32, false, 3); pizza1->addIngredient(new Ingredient("Ananas", 20.0)); pizza1->addIngredient(new Ingredient("Sunka", 30.0)); Pizza* pizzas[10](nullptr); for (int i = 0; i < 10; i++) { pizzas[i] = new Pizza("Pizza " + to_string(i), 189.99, 32, false, 3); cout << "Pizza " << i+1 << " created" << endl; } for (int i = 0; i < 10; i++) { if (i%2==0) { pizzas[i]->addIngredient(new Ingredient("Ananas", 20.0)); cout << "Pizza " << i+1 << " has Ananas" << endl; } else { pizzas[i]->addIngredient(new Ingredient("Carolina Reaper", 100.0)); cout << "Pizza " << i+1 << " has Carolina Reaper" << endl; } } Drink* drink1 = new Drink("Kofola", 45.0, 500, true); AlcoholicDrink* alcoholicDrink1 = new AlcoholicDrink("Vodka", 300.0, 500, true, 0.7); AlcoholicDrink* alcoholicDrinks[10](nullptr); for (int i = 0; i < 10; i++) { alcoholicDrinks[i] = new AlcoholicDrink("Pivo " + to_string(i), 50.0, 500, true, 0.1*i); cout << "Pivo " << i+1 << " created" << endl; } order1->addItem(pizza1); order1->addItem(drink1); order1->addItem(alcoholicDrink1); for (int i = 0; i < 10; i++) { orders[i]->addItem(pizzas[i]); orders[i]->addItem(alcoholicDrinks[i]); } pizzeria->processOrder(order1); for (int i = 0; i < 10; i++) { pizzeria->processOrder(orders[i]); } for (int i = 0; i < 10; i++) { delete customers[i]; } delete pizzeria; delete roman; cout << "Pamet byla bezpecne uvolnena. Koncim program." << endl; return 0; }