Menu

Python Please Writing Rather Primitive Online Store Simulator Three Classes Product Custom Q43863123

Python please. You will be writing a (rather primitive) onlinestore simulator. It will have three classes: Product, Customer andStore. All data members of each class should be marked as privateand the classes should have any get or set methods that will beneeded to access them. Here are descriptions of methods for thethree classes:

Product:

A Product object represents a product with an ID code, title,description, price and quantity available.

  • init method – takes as parameters five values with which toinitialize the Product’s id_code, title, description, price, andquantity_available.
  • get methods for each of the data members, named get_id_code,get_title, get_description, get_price, andget_quantity_available
  • decrease_quantity – decreases the quantity available byone

Customer:

A Customer object represents a customer with a name and accountID. Customers must be members of the Store to make a purchase.Premium members get free shipping.

  • init method – takes as parameters three values with which toinitialize the Customer’s name, account_ID, and whether thecustomer is a premium_member.
  • you decide how to represent a Customer’s cart
  • get methods named get_name and get_account_ID
  • is_premium_member – returns whether the customer is a premiummember
  • add_product_to_cart – adds the product ID code to theCustomer’s cart
  • empty_cart – empties the Customer’s cart

Store:

A Store object represents a store, which has some number ofproducts in its inventory and some number of customers asmembers.

  • you decide how to represent a Store’sinventory and members
  • init method – whatever initialization needs to be done for yourStore
  • add_product – adds a product to the inventory
  • add_member – adds a customer to the members
  • get_product_from_ID – returns the Product with the matching ID.If no matching ID is found, it returns the special value None
  • get_member_from_ID – returns the Customer with the matching ID.If no matching ID is found, it returns the special value None
  • product_search – return a sorted list of ID codes for everyproduct whose title or description contains the search string. Thefirst letter of the search string should be case-insensitive, i.e.a search for “wood” should match Products that have “Wood” in theirtitle or description, and a search for “Wood” should match Productsthat have “wood” in their title or description. You may assume thatthe search string will consist of a single word.
  • add_product_to_member_cart – If the product isn’t found in theinventory, return “product ID not found”. If the product was found,but the member isn’t found in the members, return “member ID notfound”. If both are found and the product is still available, callthe member’s addProductToCart method to add the product and thenreturn “product added to cart”. If the product was not stillavailable, return “product out of stock”. This function does notneed to check how many of that product are available – just thatthere is at least one. It should not change how many are available- that happens during checkout. The same product can be addedmultiple times if the customer wants more than one ofsomething.
  • check_out_member – If the member ID isn’t found, raise anInvalidCheckoutError (you’ll need to define thisexception class). Otherwise return the charge for the member’scart. This will be the total cost of all the items in the cart, notincluding any items that are not in the inventory or are out ofstock, plus the shipping cost. If a product is not out of stock,you should add its cost to the total and decrease the availablequantity of that product by 1. Note that it is possible for an itemto go out of stock during checkout. For example, if the customerhas two of the same product in their cart, but the store only hasone of that product left, the customer will be able to buy the onethat’s available, but won’t be able to buy a second one, becauseit’s now out of stock. For premium members, the shipping cost is$0. For normal members, the shipping cost is 7% of the total costof the items in the cart. When the charge for the member’s cart hasbeen tabulated, the member’s cart should be emptied, and the chargeamount returned.

[10 pts] You must include a main function thatruns if the file is run as a script, but not if the file isimported. The main function should try to check out a member. If anInvalidCheckoutError is raised, an explanatory message should beprinted for the user (otherwise the checkout should proceednormally).

[20 pts] In addition to your file containingthe code for the above classes, you must also submit a file thatcontains unit tests for your Store.py file. It must have at leastfive unit tests and use at least three different assertfunctions.

Gradescope will not test your main function or unittests – the TAs will take care of that.

Here’s a very simple example of how your classes could beused:

p1 = Product(“889”, “Rodent of unusual size”, “when a rodent of the usual size just won’t do”, 33.45, 8)c1 = Customer(“Yinsheng”, “QWF”, False)myStore = Store()myStore.add_product(p1)myStore.add_member(c1)myStore.add_product_to_member_cart(“889”, “QWF”)result = myStore.check_out_member(“QWF”)

Your files must be named: Store.py andStoreTester.py

Expert Answer


Answer to Python please. You will be writing a (rather primitive) online store simulator. It will have three classes: Product, Cus…

OR