Starting from:

$30

CS52-Assignment 5 OOP and Inheritance Solved

Problem 1 Shopping Cart 
Implement a program that tracks customers’ purchases. Create the following classes. Use
appropriate access modifiers (instance variables should be private!) and data types for each.
Don’t forget to add getter and setter functions.
• Item: This class has the attributes (member variables) called title, description, and price.
o Book: This class inherits from Item. It has an instance variable called pageCount.
o Movie: This class inherits from Item. It has an instance variable called length.
o CD: This class inherits from Item. It has an instance variable called trackCount.
• ShoppingCart: This class keeps track of items that were bought. You may limit the
number of items in the cart. The cart should have functions to add an item and print the
items currently in the cart to the console.
• Customer: The customer class stores an id, the first name and the last name and a
pointer to a shopping cart object.
Finally, implement a main function that creates a customer. Then add one item of each type to
the customer’s shopping cart and list the items in the cart on the console.
Problem 2 Pizza 
Implement a program that creates pizzas based on user order. First, create class called
Ingredient with one instance variable description of type string which is set in the constructor
and can be get using a getter function. Create the following classes that derive from Ingredient:
TomatoSauce, Cheese, Dough, and Pepperoni; each with a constructor that passes the
description argument to the base constructor. Use proper access modifiers!

Create a class Pizza which consists of a dynamically allocated array of Ingredient object pointers
(a double pointer). The constructor expects the number of maximum ingredients as int which is
used to dynamically allocate and initialize the array. Implement a destructor that deletes the
Ingredient objects and the array. The class has a function void add(Ingredient* ingredient) which
adds an ingredient to the pizza and a function to print its ingredients to the console.
Create an abstract class PizzaFactory with a pure virtual function called bake() that returns a
Pizza* object pointer. Create the two subclasses CheesePizzaFactory and
PepperoniPizzaFactory which both explicitly override the bake() function. Both functions
should remain virtual. The CheesePizzaFactory instantiates Pizza and adds Dough,
TomatoSauce, and Cheese to it. The PepperoniPizzaFactory creates a pizza and adds all
ingredients including pepperoni to it.
Use the following main method which prompts a user to order a type of pizza and then
instantiates the corresponding PizzaFactory for it. After the pizza is created by calling the bake()
function, the ingredients of the pizza are printed by calling the listIngredients() function of the
pizza object. Finally, the factory and the pizza objects are deleted.
int main()
{
char choice;
cout << "Would you like a pepperoni or cheese pizza (c/p)? ";
cin choice;
PizzaFactory* factory;
if (choice == 'p')
{
factory = new PepperoniPizzaFactory();
}
else
{
factory = new CheesePizzaFactory();
}
Pizza* pizza = factory-create();
pizza-listIngredients();
delete pizza;
delete factory;
return 0;
}
Sample Output:
Would you like a pepperoni or cheese pizza (c/p)? p
Pizza with:
Spicy Pepperoni
Chunky Tomato Sauce
Jalapeño Pepper Cheddar Cheese

More products