Files
2026-05-04 18:04:39 +02:00

100 lines
3.3 KiB
C++

#include <iostream>
#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í:
* - <b>Základní rozhraní:</b> IMenuItem
* - <b>Specifické položky (potomci):</b> MenuItem, Pizza, Drink, AlcoholicDrink
* - <b>Správa podniku:</b> Třída Pizzerie (zajišťuje hlavní logiku)
* - <b>Propojení entit:</b> 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;
}