Create a class called PizzaOrder that has the following members: • toppings_offe
ID: 3634208 • Letter: C
Question
Create a class called PizzaOrder that has the following members:• toppings_offered[] - a constant array of strings representing the choice of low-price toppings, e.g., { "onions", "bell peppers", "olives", "pepperoni"... }. This member is public and is a static class member.
• topping_base_cost - a constant double representing the cost of budget topping on a small pizza. This member is public and is a static class member.
• base_price - a constant double representing the cost of a small plain pizza. This member is public and is a static class member.
• size - an int 0 (small), 1 (medium) and 2 (large). This is a private instance member.
• toppings[] - an array of strings representing the toppings in this individual order. This is a private instance member.
• num_toppings - an int whose value at any point in time is the number of toppings that have been added to this PizzaOrder object so far. It would start at 0 when the object is constructed and increase each time a topping is added via the method (see below) AddTopping(). This is a private instance member. Do not provide an explicit mutator for this member since it will be automatically adjusted in AddTopping().
Note there is no total price member. You should not add one.
You should supply all of the following public instance methods:
• Constructors that takes no parameters (default pizza size = small) and one parameter constructor that takes an int, size.
• SetSize(int size), GetSize() - a mutator/accessor for size. Use int values for these methods.
• AddTopping(string topping) - append a topping to the order (multiple toppings of the same ingredient allowed). This is essentially a mutator that will take the parameter, topping, and place it into the next available location of the toppings[] array.
• AddTopping(int n) - an overloaded version of AddTopping() that takes an int, n, instead of the String topping. The int would represent the position in the toppings_offered[] array of the topping that is to be added. You can use whichever of these two AddTopping() variants that you wish in your client, but you must supply both in your class.
• GetPrice() - returns the price of the pizza. This method must compute the price since there is no total price stored.
• StringizeSize() - returns a string version of the size ( 0 means "small", 1 means "medium", 2 means "large").
• GetToppings() - returns a string containing a list of toppings for current order.
• DisplayPizza() - shows the PizzaOrder, with the size, all toppings, and price.
Except for possibly accessors which have single statements, all methods must be defined after the class prototype and not in-line within the class prototype. See modules for examples of this.
From your sample main() that tests your class, do the following:
• OUTER LOOP: Provide an outer loop that asks: "Size of pizza (small, medium, large) or quit". Get this information as single characters or strings, not ints, please. If strings, you can test only the first character as I have done in past examples.
• INNER LOOP: If the response isn't quit, put up a menu of items (and, optionally, the price of each item). This initiates a second, inner loop that acquires pizza toppings from the user. Here is an approximation of the screen during this inner loop:
• Current Pizza: small
• Select an item by number (0 when done):
• 1. Onions
• 2. Bell Pepper
• 3. Pepperoni
• etc ...
• Selection? 2
• Current Pizza: small + Bell Pepper
• Select an item by number (0 when done):
• 1. Onions
• 2. Bell Pepper
• 3. Pepperoni
• etc ...
Selection?
Notice that you must show the current pizza value (with or without price) after each choice.
• TRANSITION FROM INNER TO OUTER LOOP: When the user selects 0, the inner loop says thank you, displays the order and price, then ends, thus naturally brining control back to the outer loop. The main outer loop then resumes asking for another order ("size of next pizza or quit?").
Assume that the total price of a pizza (including toppings) increases beyond that of a small by 15% for a medium and 25% for a large.
Make sure all mutators, constructors and other methods that affect private data adequately test for illegal values and, if possible, return a bool that reports the results of this test.
Except for possibly accessors which have single statements, all methods must be defined after the class prototype and not in-line within the class prototype. See modules for examples of this.
OPTION B-1 (Intermediate): More Pizza Pies
Enhance the PizzaOrder class as follows.
• Replace the toppings_offered[] with budget_toppings_offered[] and premium_toppings_offered[].
• Replace the topping_base_cost with budget_toppings_base_cost and premium_toppings_base_cost.
• Replace the toppings with budget_toppings and premium_toppings.
• Add a method RemoveTopping(string topping) - locates the topping in the list and removes it.
This will impact most of your public methods and the logic of your main testing loop. You will have to display two groups of toppings, budget and premium. You may wish to allow the user to remove a topping ("oh, I don't want anchovies, after all"). Another idea is to allow the user to select multiple items at a time (separated by space or commas). You will see how a simple idea like two levels of toppings changes everything.
Explanation / Answer
#include #include #include using namespace std; class PizzaOrder { private: int size; int num_toppings; string toppings[100]; public: static const string toppings_offered[]; static const double topping_base_cost; static const double base_price; static const string defaultSize; static const double MedPizBase; static const double LargePizBase; static const int arraySize; PizzaOrder(); PizzaOrder(int size); // MUTATORS & ACCESSORS & METHODS int GetSize() { return size; } int GetNumToppings() { return num_toppings; } string GetToppings(); void GetPrice(); bool SetSize(int size); void AddTopping(string topping); void AddTopping(int n); //int represents position in array toppings_offered[] string StringizeSize(int size); void DisplayPizza(); }; const string toppings_offered[] = {"1. Onions", "2. Bell Peppers", "3. Olives", "4. Pepperoni", "5. Sausage", "6. Mushrooms", "7. Jalapenos"}; const string defaultSize = "Small "; const double topping_base_cost = 1; const double base_price = 7; const double MedPizBase = 0.15; const double LargePizBase = 0.25; const int arraySize = sizeof(toppings_offered)/sizeof(toppings_offered[0]); int main() { PizzaOrder pizza; string choice; char selection; int topChoice; do { coutRelated Questions
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.