Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Create a Copy Constructor for both the PizzaOrder class and Pizza class ( I am s

ID: 3876853 • Letter: C

Question

Create a Copy Constructor for both the PizzaOrder class and Pizza class ( I am struggling handling the array of Pizzas).

public class PizzaOrder {

   private static final int MAX_NUM_PIZZAS = 5;
   private Pizza[] pizza;
   private int numPizzas;

   public PizzaOrder() {
       pizza = new Pizza[MAX_NUM_PIZZAS];
       numPizzas = 0;
   }

   public PizzaOrder(PizzaOrder original) //Copy Constructor
   {
       pizza = new Pizza(original.pizza[]);/////Fix this
       numPizzas = original.numPizzas;
   }
   /*
   * Adds a pizza to the order
   */
   public void addPizza(Pizza p) {
       if (numPizzas >= MAX_NUM_PIZZAS) {
           System.out.println("Too many pizzas for this order");
       } else {
           pizza[numPizzas] = p;
           numPizzas++;
       }

   }


}

}

--------------------------------------------------

public class Pizza {

   public static final String SMALL = "Small";
   public static final String MEDIUM = "Medium";
   public static final String LARGE = "Large";

   private String size;
   private int numCheeseToppings;
   private int numHamToppings;
   private int numPepperoniToppings;

   // no argument constructor
   public Pizza() {
       size = "Large";
       numCheeseToppings = 1;
       numHamToppings = 0;
       numPepperoniToppings = 0;
   }

   /*
   * Constructor takes 4 arguments: size of pizza, num of cheese toppings,
   * num of ham toppings, num of pepperoni toppings
   */
   public Pizza(String pizzaSize, int cheese, int ham, int pepperoni) {
       if (!(pizzaSize == SMALL || pizzaSize == MEDIUM || pizzaSize == LARGE)) {
           // if size is invalid, set size to SMALL
           size = SMALL;
       } else {
           size = pizzaSize;
       }
       numCheeseToppings = cheese;
       numHamToppings = ham;
       numPepperoniToppings = pepperoni;
   }


}

Explanation / Answer

public class Pizza {

public static final String SMALL = "Small";

public static final String MEDIUM = "Medium";

public static final String LARGE = "Large";

private String size;

private int numCheeseToppings;

private int numHamToppings;

private int numPepperoniToppings;

// no argument constructor

public Pizza() {

size = "Large";

numCheeseToppings = 1;

numHamToppings = 0;

numPepperoniToppings = 0;

}

public Pizza(Pizza p)//copy constructor

{

size=p.size;

numCheeseToppings=p.numCheeseToppings;

numHamToppings=p.numHamToppings;

numPepperoniToppings=p.numPepperoniToppings;

}//end of copy constructor

/*

* Constructor takes 4 arguments: size of pizza, num of cheese toppings,

* num of ham toppings, num of pepperoni toppings

*/

public Pizza(String pizzaSize, int cheese, int ham, int pepperoni) {

if (!(pizzaSize == SMALL || pizzaSize == MEDIUM || pizzaSize == LARGE)) {

// if size is invalid, set size to SMALL

size = SMALL;

} else {

size = pizzaSize;

}

numCheeseToppings = cheese;

numHamToppings = ham;

numPepperoniToppings = pepperoni;

}

}

public class PizzaOrder {

private static final int MAX_NUM_PIZZAS = 5;

private Pizza[] pizza;

private int numPizzas;

public PizzaOrder() {

pizza = new Pizza[MAX_NUM_PIZZAS];

numPizzas = 0;

}

public PizzaOrder(PizzaOrder original) // Copy Constructor

{

pizza = original.pizza;

numPizzas = original.numPizzas;

}//end of copy constructor

/*

* Adds a pizza to the order

*/

public void addPizza(Pizza p) {

if (numPizzas >= MAX_NUM_PIZZAS) {

System.out.println("Too many pizzas for this order");

} else {

pizza[numPizzas] = p;

numPizzas++;

}

}

}