سبد خرید


داستان

باید برای یک بقالی، یک سبد خرید مدل‌سازی کنیم. سبد خرید باید فهرست کالاهای اضافه‌شده را نگه دارد و قیمت را درست محاسبه کند.

کالاها با کدهای واحد نگهداری موجودی (SKU) به سبد اضافه می‌شوند. کالاهای موجود در فروشگاه عبارت‌اند از:

اسم قیمت SKU
Potatoes 10.00 STAPOT
Rice 30.00 STARIC
Coffee 14.99 STACOF
Newspaper 2.99 MEDNEW

وظایف

سبد خرید باید امکان انجام این عملیات را فراهم کند:

  • افزودن کالا به سبد: یک SKU را می‌خواند و آن را به سبد اضافه می‌کند.
  • بررسی مبلغ کل: ارزش کل کالاهای داخل سبد، به‌صورت عددی با دو رقم اعشار (مثلاً 3.99).
  • بررسی کالاهای موجود در سبد: فهرستی از اسم کالاهای داخل سبد، به ترتیب حروف الفبا، بدون تکرار، که با ویرگول و یک فاصله از هم جدا شده‌اند.

اصطلاحات

  • کالا: آنچه می‌توان به سبد خرید اضافه کرد.
  • SKU: شناسه‌ای است که از سه حرف بزرگ اول نوع محصول به‌علاوه‌ی سه حرف بزرگ اول اسم محصول تشکیل می‌شود.
  • قیمت: ارزش کالا به‌صورت عددی با دو رقم اعشار.

پیاده‌سازی‌ها

نسخه‌ی جایگزین

یک نسخه‌ی جایگزین یا گسترش‌یافته از داستان، از کوپن‌های تخفیفی استفاده می‌کند که می‌توان آن‌ها را به سبد خرید اضافه کرد.

داستان

بقالی برای اینکه مشتری‌ها را راضی نگه دارد، کوپن‌های تخفیف اضافه کرده است. یعنی برای پشتیبانی از این تخفیف‌ها، سبد خرید ما باید بتواند کوپن‌های تخفیف را بخواند و آن‌ها را روی کالاهای فعلی اعمال کند. کوپن‌های پشتیبانی‌شده عبارت‌اند از:

نوع SKU قاعده
تخفیف قیمت ثابت FIX_TEN مبلغ 10.00 از مبلغ کل سبد کم می‌کند
تخفیف محصول HALF_STAPOT قیمت همه‌ی کالاهای STAPOT را به نصف کاهش می‌دهد

وظایف

سبد خرید باید یک عملیات جدید به اسم scan coupon داشته باشد که یک SKU می‌گیرد و آن را به سبد اضافه می‌کند. لطفاً در نظر داشته باشید که total_amount نباید عددی منفی باشد؛ کمترین مقدار total_amount برابر 0 است.

اصطلاحات

  • کوپن: تخفیفی که می‌توان آن را روی سبد اعمال کرد. کوپن‌ها یکتا هستند و فقط یک‌بار می‌توانند اعمال شوند. اگر نوع کوپن تخفیف قیمت ثابت باشد، بخش دوم SKU مبلغ تخفیف است که با حروف بزرگ نوشته شده است.

پیاده‌سازی‌ها