#include <iostream>
using namespace std;
class FoodItem
{
public:
int price;
string description;
virtual string getdescription()=0;
virtual int getprice()=0;
};
class pizza : public FoodItem
{
public:
string getdescription()
{
description = "Adding pizza ";
return description;
}
int getprice()
{
price = 300;
return price;
}
};
class Burger : public FoodItem
{
public:
string getdescription()
{
description = "Adding Burger ";
return description;
}
int getprice()
{
price = 200;
return price;
}
};
class Addon : public FoodItem
{
protected:
FoodItem *food;
public:
Addon(FoodItem *f)
{
food = f;
}
};
class cheese : public Addon
{
int cheeseprice;
public:
cheese(FoodItem *food,int val) : Addon(food),cheeseprice(val){}
string getdescription()
{
description = food->getdescription() + "with cheese ";
return description;
}
int getprice()
{
return food->getprice()+cheeseprice;
}
};
class topping : public Addon
{
int toppingprice;
public:
topping(FoodItem *food,int val) : Addon(food),toppingprice(val){}
string getdescription()
{
description = food->getdescription() + "with topping ";
return description;
}
int getprice()
{
return food->getprice()+toppingprice;
}
};
class sauce : public Addon
{
int sauceprice;
public:
sauce(FoodItem *food,int val) : Addon(food),sauceprice(val){}
string getdescription()
{
description = food->getdescription() + "with sauce ";
return description;
}
int getprice()
{
return food->getprice()+sauceprice;
}
};
int main() {
FoodItem *fpizza = new pizza();
fpizza = new cheese(fpizza,50);
fpizza = new sauce(fpizza,30);
cout<<"Description of fooditem : "<<fpizza->getdescription()<<endl;
cout<<"Price of fooditem : "<<fpizza->getprice()<<endl;
FoodItem *fburger = new Burger();
fburger = new cheese(fburger,50);
fburger = new topping(fburger,100);
cout<<"Description of fooditem : "<<fburger->getdescription()<<endl;
cout<<"Price of fooditem : "<<fburger->getprice()<<endl;
return 0;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: