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.
  • toppings_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 privateinstance 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 mutatoraccessor 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.

PizzaOrder should be a class distinct from (and not contained within) your main class (which we call Foothill). From your main() inside Foothill test your class by doing 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, notints, 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 bringing 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 boolean that reports the results of this test.

Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.