Nella libreria vengono usate quattro classi:
- Product: una classe che rappresenta un prodotto in vendita nel negozio, con un nome, un prezzo e una descrizione. name (il nome del prodotto), price (il prezzo del prodotto) e description (la descrizione del prodotto).
- ShoppingCart: rappresenta il carrello della spesa dell'utente, con una lista di prodotti, le loro quantità e ha un attributo items che è una lista di tuple. Ogni tupla contiene due elementi: un oggetto Product e una quantità (un intero) del prodotto nel carrello. La classe ha anche due metodi: add_item che aggiunge un prodotto con una quantità specificata al carrello e remove_item che rimuove un prodotto dal carrello.
- Order: rappresenta un ordine effettuato dall'utente con un riferimento al carrello della spesa e alle informazioni del cliente. La classe ha anche un metodo checkout, che elabora il pagamento per l'ordine (in questo caso, stampando il totale dell'ordine) e dovrebbe implementare la logica di elaborazione del pagamento.
- Customer: una classe che rappresenta un cliente del negozio, con un nome e un indirizzo email. Il cliente è associato all'ordine tramite l'attributo customer dell'oggetto Order.
class Product:
def __init__(self, name: str, price: float, description: str):
self.name = name
self.price = price
self.description = description
class ShoppingCart:
def __init__(self):
self.items = []
def add_item(self, product: Product, quantity: int):
self.items.append((product, quantity))
def remove_item(self, product: Product):
self.items.remove((product, 1))
def calculate_total(self) -> float:
total = 0
for item in self.items:
total += item[0].price * item[1]
return total
class Order:
def __init__(self, cart: ShoppingCart, customer):
self.cart = cart
self.customer = customer
def checkout(self):
total = self.cart.calculate_total()
print("Total: ${:.2f}".format(total))
# logica del pagamento
class Customer:
def __init__(self, name: str, email: str):
self.name = name
self.email = email
def place_order(self, cart: ShoppingCart):
order = Order(cart, self)
order.checkout()
Per usare questa libreria dovete salvare un file .py (contenente il codice fornito) nella stessa cartella del file principale.
Ecco un esempio dove ho salvato il codice precedente come shopping.py:
# Import della libreria shopping
from shopping import Product, ShoppingCart, Order, Customer
# prodotti
computer = Product("Computer", 500.0, "Un computer per uso professionale")
cuffie = Product("Cuffie", 50.0, "Cuffie di alta qualità")
raspberry = Product("Raspberry", 150.0, "Un mini-computer versatile e potente")
# carrello
cart = ShoppingCart()
# aggiunta dei prodotti al carrello
cart.add_item(computer, 1)
cart.add_item(cuffie, 2)
cart.add_item(raspberry, 3)
# cliente
customer = Customer("Esempio Esempio", "esempio@nomeservizio.com")
# ordine
customer.place_order(cart)