فروشگاه اینترنتی (تا پایان جلسه بیستم)
سطح سوال: ساده
آنچه از این جلسه باید بدانید: آشنایی با java 8
بستهی ir.javacup.shop را دانلود کنید. این برنامه برای مدیریت سفارشات یک فروشگاه اینترتی نوشته شده است.
در واسط OrderFunctionUtil تعدادی تابع (Function) برای مدیریت بهتر سفارشات تعریف شده است. شما باید در کلاس OrderFunctionUtilImpl این واسط را مطابق با جدول زیر و با استفاده از عبارات لامبدا پیادهسازی کنید.
رفتار | متد |
اگر جمع قیمت محصولات سفارشدادهشده برابر با 10 میلیون ریال و یا بیشتر باشد، مقدار true برمیگرداند. | Function<Order, Boolean> isBigOrder(); |
اگر بیش از یک محصول سفارش داده شده باشد، مقدار true برمیگرداند. | Function<Order, Boolean> hasMultipleProducts(); |
اگر محصولی در سفارش وجود داشته باشد که در حال حاضر وضعیتش ناموجود باشد، مقدار true برمیگرداند. | Function<Order, Boolean> hasUnavailableProduct(); |
اگر وضعیت تمام محصولات موجود در سفارش، موجود باشد و وضعیت خود سفارش نیز آمادهی ارسال باشد، مقدار true برمیگرداند. | Function<Order, Boolean> isReadyToDeliver(); |
اگر محصول فاسدشدنیای در سفارش وجود داشته باشد، مقدار true برمیگرداند. | Function<Order, Boolean> hasPerishableProduct(); |
اگر محصول شکستنی و گرانی (با قیمت 5 میلیون ریال یا بیشتر) در سفارش وجود داشته باشد، مقدار true برمیگرداند. | Function<Order, Boolean> hasExpensiveBreakableProduct(); |
نکات:
- هر سفارش میتواند در یکی از وضعیتهای زیر باشد (ویژگی state):
- CONFIRMED: تاییدشده
- PAID: پرداختشده
- WAREHOUSE_PROCESSED: پردازش انبار
- READY_TO_SEND: آمادهی ارسال
- DELIVERED: تحویل دادهشده
- هر محصول میتواند در یکی از وضعیتهای زیر باشد (ویژگی state):
- UNAVAILABLE: ناموجود
- AVAILABLE: موجود
- نوع هر محصول میتواند یکی از موارد زیر باشد (ویژگی type):
- PERISHABLE: فاسدشدنی
- BREAKABLE: شکستنی
- NORMAL: معمولی
آنچه باید آپلود کنید:
یک فایل زیپ شامل بستهی ir.javacup.shop است. به صورتی که وقتی فایل زیپ را باز میکنیم، دقیقا شاخهی ir را ببینیم که درون آن شاخهی javacup و درون آن نیز شاخهی shop قرار دارد. در داخل شاخهی shop فقط فایل OrderFunctionUtilImpl.java باید وجود داشته باشد.
برای داوری تمرین، میتوانید پاسخ خود را در سایت Quera به نحوی که در بالا گفته شد، بارگذاری کنید.
با ما همراه باشید:
آدرس کانال تلگرام: IranianJavaDevelopers@
آدرس صفحه اینستاگرام: javacup.ir
آدرس گروه لینکدین: Iranian Java Developers
سوالات خیلی خوبی بودند. از همه کسانی که در طراحی و پیاده سازی سوالات زحمت کشیدند تشکر می کنم.
پیشنهاد می کنم با توجه به جای کار زیادی که برای تسلط به مباحث جاوا 8 نیاز است در هر مسابقه JCAL یک سوال از جاوا-8 هم مطرح شود.
اگر سوالات جاوا-8 و MultiThreading بیشتری هم به سوالات تمرینی Quera اضافه شود که خیلی عالی می شود.
اگر سایت یا آموزشی که مباحث جاوا8 به خصوص لامبدا و استریم را با مطرح کردن سوالات از ساده به پیچیده (البته با کد نویسی نه صرفا توضیحی) سراغ دارید، لطفا معرفی بفرمایید. با تشکر