میخواهیم فروشگاه آنلاینی را به صورت شیگرا مدلسازی کنیم. در پوشهٔ پروژه دو فایل با نامهای model.py و store.py ایجاد کنید. ماژول model مدلی از مفاهیم مرتبط با فروشگاه را نگهداری میکند و store حاوی نمونههایی از مدلهای موجود در ماژول model خواهد بود. در ماژول model چهار تا کلاس برای کاربر با نام User و محصولات فروشگاه با نام Product و سفارشات ثبتشده توسط کاربران با نام Purchase و نظرات کاربران دربارهٔ کالاها با نام Comment داریم. جزئیات کلاسها به شرح زیر است:
در ماژول model باید متدهایی برای اضافه کردن به تعداد یک کالا در یک فروشگاه خاص، بررسی تعداد کل موجودی یک کالا در همهٔ فروشگاهها، بررسی مبلغ فروش هر فروشگاه، لیست کاربرانی که یک کالای به خصوص را خریداری کردند، دریافت نظرات ثبتشده توسط یک کاربر، میانگین امتیازهایی که برای یک کالا توسط کاربرانی که آن را خریداری کردند ثبت شده وجود داشته باشد. همچنین امکانات بدیهی یک فروشگاه آنلاین مانند ثبت کاربر جدید، اضافه کردن کالای جدید، سفارش یک کالا توسط یک کاربر از یک فروشگاه و ثبت نظر وجود داشته باشد. جزئیات پیادهسازی به شما واگذار شده است. به عنوان مثال برای سفارش یک کالا اگر تعداد موجودی آن کالا در فروشگاه خواسته شده کافی نبود باید پیغام «کالا به تعداد کافی وجود ندارد» را بدهید.
نحوهٔ تعریف ماژول model باید به گونهای باشد که سناریوهای مربوط به instantiate شدن کلاسها و تعامل بین اشیا در زمان اجرا بتواند به طور کامل در ماژول store پیادهسازی شود و نیازی به دستکاری model برای پیادهسازی آنها نباشد. به عبارت دیگر کدهای ماژول model نباید هیچ وابستگیای به کدهای نوشته شده در ماژول store داشته باشد. در ماژول store باید دادههای مربوط به فروشگاهها، کالاها و کامنتها و … را با یک رابط متنی از طریق تابع input از کاربر بگیرید و بر اساس دادههایی که کاربر میدهد از مدلهای موجود در ماژول model نمونه بسازید. همچنین کد چاپ کردن گزارشات مورد نظر کاربر را در این فایل بنویسید.
برای همهٔ کلاسها و متدها docstring بنویسید.