2021-11-02 18:18:09 +00:00
|
|
|
|
/*
|
|
|
|
|
* Pizza.hpp
|
|
|
|
|
*
|
2021-11-03 15:35:58 +00:00
|
|
|
|
* Created on: 3 нояб. 2021 г.
|
2021-11-02 18:18:09 +00:00
|
|
|
|
* Author: alexander
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <iostream>
|
2021-11-03 15:35:58 +00:00
|
|
|
|
#include <vector>
|
|
|
|
|
#include <sstream>
|
|
|
|
|
#include "Dough.hpp"
|
|
|
|
|
#include "Sauce.hpp"
|
|
|
|
|
#include "Cheese.hpp"
|
|
|
|
|
#include "Veggies.hpp"
|
|
|
|
|
#include "Pepperoni.hpp"
|
|
|
|
|
#include "Clams.hpp"
|
2021-11-02 18:18:09 +00:00
|
|
|
|
|
|
|
|
|
class Pizza
|
|
|
|
|
{
|
|
|
|
|
private:
|
|
|
|
|
std::string name;
|
2021-11-03 15:35:58 +00:00
|
|
|
|
|
|
|
|
|
Dough *dough = NULL;
|
|
|
|
|
Sauce *sauce = NULL;
|
|
|
|
|
std::vector<Veggies*> veggies;
|
|
|
|
|
Cheese *cheese = NULL;
|
|
|
|
|
Pepperoni *pepperoni = NULL;
|
|
|
|
|
Clams *clam = NULL;
|
2021-11-02 18:18:09 +00:00
|
|
|
|
public:
|
|
|
|
|
|
2021-11-03 15:35:58 +00:00
|
|
|
|
virtual void prepare() = 0;
|
2021-11-02 18:18:09 +00:00
|
|
|
|
|
|
|
|
|
virtual void bake() const
|
|
|
|
|
{
|
|
|
|
|
std::cout << "Bake for 25 minutes at 350" << std::endl;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
virtual void cut() const
|
|
|
|
|
{
|
|
|
|
|
std::cout << "Cutting the pizza into diagonal slices" << std::endl;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
virtual void box() const
|
|
|
|
|
{
|
|
|
|
|
std::cout << "Place pizza in official PizzaStore box" << std::endl;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
virtual std::string getName() const
|
|
|
|
|
{
|
|
|
|
|
return name;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
virtual void setName(std::string name)
|
|
|
|
|
{
|
|
|
|
|
this->name = name;
|
|
|
|
|
}
|
|
|
|
|
|
2021-11-03 15:35:58 +00:00
|
|
|
|
virtual void setDough(Dough *dough)
|
2021-11-02 18:18:09 +00:00
|
|
|
|
{
|
|
|
|
|
this->dough = dough;
|
|
|
|
|
}
|
2021-11-03 15:35:58 +00:00
|
|
|
|
virtual void setSauce(Sauce *sauce)
|
2021-11-02 18:18:09 +00:00
|
|
|
|
{
|
|
|
|
|
this->sauce = sauce;
|
|
|
|
|
}
|
2021-11-03 15:35:58 +00:00
|
|
|
|
virtual void setVeggies(const std::vector<Veggies*> &veggies)
|
|
|
|
|
{
|
|
|
|
|
this->veggies = veggies;
|
|
|
|
|
}
|
|
|
|
|
virtual void setCheese(Cheese *cheese)
|
|
|
|
|
{
|
|
|
|
|
this->cheese = cheese;
|
|
|
|
|
}
|
|
|
|
|
virtual void setPepperoni(Pepperoni *pepperoni)
|
|
|
|
|
{
|
|
|
|
|
this->pepperoni = pepperoni;
|
|
|
|
|
}
|
|
|
|
|
virtual void setClams(Clams *clam)
|
|
|
|
|
{
|
|
|
|
|
this->clam = clam;
|
|
|
|
|
}
|
2021-11-02 18:18:09 +00:00
|
|
|
|
|
2021-11-03 15:35:58 +00:00
|
|
|
|
void toString()
|
2021-11-02 18:18:09 +00:00
|
|
|
|
{
|
2021-11-03 15:35:58 +00:00
|
|
|
|
std::cout << "---- " << name << " ----" << std::endl;
|
|
|
|
|
|
|
|
|
|
if (dough)
|
|
|
|
|
{
|
|
|
|
|
std::cout << '\t' << dough->toString() << std::endl;
|
|
|
|
|
}
|
|
|
|
|
if (sauce)
|
|
|
|
|
{
|
|
|
|
|
std::cout << '\t' << sauce->toString() << std::endl;
|
|
|
|
|
}
|
|
|
|
|
if (cheese)
|
|
|
|
|
{
|
|
|
|
|
std::cout << '\t' << cheese->toString() << std::endl;
|
|
|
|
|
}
|
|
|
|
|
if (!veggies.empty())
|
|
|
|
|
{
|
|
|
|
|
std::cout << '\t';
|
|
|
|
|
for (size_t i = 0; i < veggies.size(); i++)
|
|
|
|
|
{
|
|
|
|
|
std::cout << veggies[i]->toString();
|
|
|
|
|
|
|
|
|
|
if (i < veggies.size() - 1)
|
|
|
|
|
{
|
|
|
|
|
std::cout << ", ";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
std::cout << std::endl;
|
|
|
|
|
}
|
|
|
|
|
if (clam)
|
|
|
|
|
{
|
|
|
|
|
std::cout << '\t' << clam->toString() << std::endl;
|
|
|
|
|
}
|
|
|
|
|
if (pepperoni)
|
|
|
|
|
{
|
|
|
|
|
std::cout << '\t' << pepperoni->toString() << std::endl;
|
|
|
|
|
}
|
2021-11-02 18:18:09 +00:00
|
|
|
|
}
|
|
|
|
|
|
2021-11-03 15:35:58 +00:00
|
|
|
|
virtual ~Pizza()
|
|
|
|
|
{
|
|
|
|
|
if (dough) delete dough;
|
|
|
|
|
if (sauce) delete sauce;
|
|
|
|
|
if (cheese) delete cheese;
|
|
|
|
|
if (pepperoni) delete pepperoni;
|
|
|
|
|
if (clam) delete clam;
|
|
|
|
|
|
|
|
|
|
for (auto vegetable : veggies)
|
|
|
|
|
{
|
|
|
|
|
delete vegetable;
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-11-02 18:18:09 +00:00
|
|
|
|
};
|