توضیحات تکمیلی مربوط به مسابقه را در بلاگ Quera بخوانید: blog.quera.ir
برای یک فروشگاه موبایل، با کمک شما قصد داریم برنامه مدیریت این فروشگاه را طراحی کنیم.
کالاهای این فروشگاه موبایل های با برند Apple ،htc و Samsung هستند.
در صورت سوال نام توابع برای python توضیح داده شده برای بقیه زبانها نیز مشابه میباشد.
ابتدا فایل مربوط به خود را دانلود کرده و محتوای آن را ببینید (همچنین ورودی ها و خروجی های توابع) :
*فایلهای مربوط به زبان python : * دریافت
*فایلهای مربوط به زبان java: * دریافت
*فایلهای مربوط به زبان C#: * دریافت
برای هر کدام از کلاسها تعدادی از تابعهایی که نیاز به توضیح داشته باشند توضیح آمده است.
ویژگی های کلاس Mobile : نام، قیمت
can_purchase
: چک میکند که آیا کاربر مشخص شده در ماه مشخص شده قادر به خرید این موبایل هست یا خیر. توجه کنید اگر این تابع True
برگرداند یعنی امکان خرید این محصول توسط کاربر وجود دارد و بلافاصله میتوان عملیات خرید را انجام داد.reverse_payment_price
: قیمتی که قرار است در حالت بازگشت محصول برگردانده شود را برمیگرداند. این تابع توسط کلاس Shop
فراخوانی میشود.get_final_price
: قیمت موبایل را با احتساب تخفیفهای مختلف محاسبه کرده، برمیگرداند. توجه کنید اگر دو تخفیف به یک محصول تعلق بگیرد تخفیفها در هم ضرب میشوند مثلا جنس ۱۰۰۰ تومانی پس از دو تخفیف ۱۰ درصدی ۸۱۰ تومان خواهد بود. تست ها طوری طراحی میشوند که مقادیر پس از تخفیف اعشاری نباشند.ویژگی های کلاس Shop : موبایل های موجود فروشگاه، درآمد فروشگاه (موجودی)
get_available_mobile_count
: تعداد mobile هایی که فروشگاه دارد را برمیگرداند.get_available_mobile_of_type
: تعداد mobile هایی از نوع ورودی که در فروشگاه وجود دارد را برمیگرداند.add_number_of_mobile
: به تعداد ورودی به موجودی موبایلی که در ورودی آمده است به فروشگاه اضافه میکند.remove_one_mobile
: یکی از موجودی موبایلهای از نوع ورودی فروشگاه کم میکند.buy_mobile_request
: موبایل مورد نظر به کاربر فروخته میشود. باید موجودی کاربر کم شده، موبایل مورد نظر از لیست دارایی های فروشگاه حذف شود و به لیست موبایل های خریده شده کاربر اضافه شود. اگر درست انجام شود True
وگرنه False
برمیگرداند.giveback_request
: فروشگاه موبایل مورد نظر را پس میگیرد. موبایل بازگشته شده باید از موبایل های خریداری شده کاربر حذف شده و به موجودی فروشگاه اضافه شود. همچنین موجود (پول) کاربر و فروشگاه نیز باید به درستی تغییر کند. اگر درست انجام شود True
وگرنه False
برمیگرداند.get_instance
: کلاس Shop باید singleton باشد و تنها نمونهی آن، از طریق این تابع بازگردانده میشود.ویژگی های کلاس User : نام، موبایل های خریده شده، سن، مقدار پول
get_mobile_count
: تعداد موبایلهای فرد را برمیگرداند.get_mobiles
: یک dict برمیگرداند که کلید آن موبایل و مقدار هر کدام تعداد از این نوع موبایل است.purchase
: درخواست خرید موبایل مورد نظر را به فروشگاه میدهد.refund
: مبلغ مشخص شده را به کاربر بازمیگرداند.has_mobile_in_month
: اگر کاربر اکنون موبایلی از نوع ورودی دارد که در ماه ورودی خریده باشد مقدار True
وگرنه False
برمیگرداند.در سه ماه تابستان این فروشگاه ۱۰ درصد به مشتریان تخفیف میدهد.
iran
در اسم فرد باشد (به همین صورت و با حروف کوچک) این شرکت به او گوشی نمیفروشد. مثلا اگر کسی اسمش moiraniom
باشد این شرکت به او گوشی نمیفروشد. چون شاید با گوشی اورانیم غنی کند!توجه داشته باشید که تمام فایلها باید در ریشه فایل zip باشند برای c# بایستی MobileStore.csproj
در ریشه فایل zip قرار گیرد. یعنی پس از باز کردن فایل zip تمامی فایل کلاسها قابل مشاهده باشد.