100 lines
3.3 KiB
C++
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;
|
|
} |