Reference no: EM13811021
Assignment - A Pizzeria
PizzaOrder Class
Create a class called PizzaOrder that has the following members:
-toppingsOffered[] - 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.
-toppingsBaseCost - a constant double representing the cost of budget topping on a small pizza. This member is public and is astatic class member.
-basePrice - 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.
-numToppings - an int whose value at any point in time is the number of toppings that have been added to this PizzaOrderobject 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 intwould represent the position in the toppingsOffered[] 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). However, you can and should defined it as a non-public class so it can reside in the same file, Foothill.java.
Main Driver
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 as a string, not char or letter. As usual, let the use type in any word and only take the first char. Also, allow both upper and lower case to match the target letters.
-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.
-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 alarge.
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.
Static Helpers for main()
Use the following from main() to keep some of the I/O micromanagement off its back:
-static void displayMainMenu()
-static char getSizeFromUser().