139 lines
2.8 KiB
C++
139 lines
2.8 KiB
C++
/*
|
||
* Pizza.hpp
|
||
*
|
||
* Created on: 3 нояб. 2021 г.
|
||
* Author: alexander
|
||
*/
|
||
|
||
#pragma once
|
||
|
||
#include <iostream>
|
||
#include <vector>
|
||
#include <sstream>
|
||
#include "Dough.hpp"
|
||
#include "Sauce.hpp"
|
||
#include "Cheese.hpp"
|
||
#include "Veggies.hpp"
|
||
#include "Pepperoni.hpp"
|
||
#include "Clams.hpp"
|
||
|
||
class Pizza
|
||
{
|
||
private:
|
||
std::string name;
|
||
|
||
Dough *dough = NULL;
|
||
Sauce *sauce = NULL;
|
||
std::vector<Veggies*> veggies;
|
||
Cheese *cheese = NULL;
|
||
Pepperoni *pepperoni = NULL;
|
||
Clams *clam = NULL;
|
||
public:
|
||
|
||
virtual void prepare() = 0;
|
||
|
||
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;
|
||
}
|
||
|
||
virtual void setDough(Dough *dough)
|
||
{
|
||
this->dough = dough;
|
||
}
|
||
virtual void setSauce(Sauce *sauce)
|
||
{
|
||
this->sauce = sauce;
|
||
}
|
||
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;
|
||
}
|
||
|
||
void toString()
|
||
{
|
||
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;
|
||
}
|
||
}
|
||
|
||
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;
|
||
}
|
||
}
|
||
};
|