
روز ۳۵ آموزش پایتون: شبیه سازی فروشگاه کوچک
در این تمرین قصد داریم یک سیستم فروشگاه کوچک بسازیم که شامل کلاسهای Product برای محصولات، User برای کاربران و Cart برای مدیریت سبد خرید باشد. این تمرین کاربردی برای یادگیری کامل مفاهیم OOP، متدها، ارثبری، چندریختی و کار با دادهها است. با طراحی کلاسها و ارتباط منطقی بین آنها، میتوانیم سیستمی ساده ولی عملی برای فروشگاههای آنلاین شبیهسازی کنیم. این پروژه به شما نشان میدهد که چگونه میتوان با چند کلاس، عملیات خرید، افزودن به سبد و مدیریت موجودی را پیادهسازی کرد و کدهای منظم و قابل توسعه نوشت.
تعریف کلاس Product
ابتدا کلاس Product تعریف میکنیم که ویژگیهایی مانند name, price و quantity دارد. متدهایی برای نمایش اطلاعات محصول و کاهش موجودی هنگام خرید در کلاس تعریف میکنیم. استفاده از متد __str__ باعث میشود نمایش محصول خوانا و حرفهای باشد و در تعامل با کاربر خروجی واضح تولید شود.
نمونه کد کلاس Product:
class Product:
def __init__(self, name, price, quantity):
self.name = name
self.price = price
self.quantity = quantity
def reduce_quantity(self, amount):
if self.quantity >= amount:
self.quantity -= amount
print(f"{amount} عدد از محصول {self.name} کم شد. موجودی فعلی: {self.quantity}")
else:
print(f"موجودی کافی برای محصول {self.name} وجود ندارد.")
def __str__(self):
return f"Product(name={self.name}, price={self.price}, quantity={self.quantity})"تعریف کلاس Cart
کلاس Cart مسئول مدیریت سبد خرید کاربر است. این کلاس شامل متدهایی برای افزودن محصول، حذف محصول و محاسبه مجموع قیمت کل محصولات سبد خرید است. طراحی کلاس Cart به شکلی است که ارتباط مستقیمی با کلاس Product دارد و تغییرات در موجودی محصولات را مدیریت میکند. این کلاس نمونه عملی مدیریت مجموعه دادهها و ارتباط بین اشیاء است.
نمونه کد کلاس Cart:
class Cart:
def __init__(self):
self.items = []
def add_product(self, product, quantity):
if product.quantity >= quantity:
self.items.append((product, quantity))
product.reduce_quantity(quantity)
print(f"{quantity} عدد از محصول {product.name} به سبد خرید اضافه شد.")
else:
print(f"موجودی کافی برای محصول {product.name} وجود ندارد.")
def remove_product(self, product):
self.items = [item for item in self.items if item[0] != product]
print(f"محصول {product.name} از سبد حذف شد.")
def total_price(self):
return sum(product.price * quantity for product, quantity in self.items)
def show_cart(self):
for product, quantity in self.items:
print(f"{product.name} - تعداد: {quantity} - قیمت هر واحد: {product.price}")
print(f"مجموع قیمت سبد خرید: {self.total_price()}")تعریف کلاس User و تعامل با Cart
کلاس User برای مدیریت کاربران فروشگاه و ارتباط آنها با سبد خرید استفاده میشود. هر کاربر یک سبد خرید اختصاصی دارد و میتواند محصولات را به سبد خود اضافه یا حذف کند و سبد را مشاهده کند. این کلاس نمونه عملی ترکیب چند کلاس و ایجاد سیستم تعاملی بین آنها است.
نمونه کد کلاس User:
class User:
def __init__(self, name):
self.name = name
self.cart = Cart()
def add_to_cart(self, product, quantity):
self.cart.add_product(product, quantity)
def remove_from_cart(self, product):
self.cart.remove_product(product)
def view_cart(self):
print(f"سبد خرید کاربر: {self.name}")
self.cart.show_cart()استفاده عملی از سیستم فروشگاه
اکنون میتوانیم چند محصول و کاربر ایجاد کنیم و عملیات خرید و مدیریت سبد خرید را شبیهسازی کنیم. این بخش تمرینی باعث تثبیت مفاهیم کلاس، شیء، متدها و تعامل بین اشیاء میشود.
نمونه کد استفاده عملی:
# ایجاد محصولات
product1 = Product("کتاب پایتون", 100000, 10)
product2 = Product("دفترچه یادداشت", 20000, 5)
product3 = Product("خودکار", 5000, 20)
# ایجاد کاربر
user1 = User("علی")
# افزودن محصولات به سبد خرید
user1.add_to_cart(product1, 2)
user1.add_to_cart(product3, 5)
# مشاهده سبد خرید
user1.view_cart()
# حذف محصول از سبد
user1.remove_from_cart(product3)
user1.view_cart()با اجرای این کد، مشاهده میکنیم که تمامی عملیات روی سبد خرید، موجودی محصولات و تعامل بین کاربران و محصولات به درستی انجام میشود. این تمرین عملی، مهارت طراحی سیستمهای کوچک و کاربردی را در سطح حرفهای تقویت میکند.
جمعبندی تمرین فروشگاه کوچک
در این تمرین یاد گرفتیم چگونه با استفاده از چند کلاس مرتبط، یک سیستم فروشگاه کوچک بسازیم. کلاسهای Product, Cart و User تعامل منطقی با هم دارند و تمامی عملیات مانند افزودن، حذف، محاسبه قیمت و مدیریت موجودی را انجام میدهند. این پروژه عملی، درک مفاهیم OOP، متدهای ویژه، کار با مجموعه دادهها و شبیهسازی سیستم واقعی را تقویت میکند. توصیه میشود قابلیتهایی مانند اعمال تخفیف، دستهبندی محصولات و ثبت سفارش را نیز اضافه کنید تا تسلط کامل بر طراحی سیستمهای واقعی پیدا کنید.
