کارخانه اسباببازی (تا پایان جلسه دهم)
سطح سوال: متوسط
آنچه از این جلسه باید بدانید: آشنایی با وراثت و نمایش وراثت در UML Class Diagram
در حال حاضر در کارخانهی اسباببازی فقط یک نوع اسباببازی تولید میشود: ماشین اسباببازی (Car). اما در آیندهی نزدیک قرار است چند اسباببازی دیگر مانند عروسک و هلیکوپتر هم به تولیدات کارخانه اضافه شوند. با توجه به نظرات کارشناسان و برآوردهای صورتگرفته، تصمیم گرفتهشد که اکثر اسباببازیهای تولیدی در این کارخانه با قیمت پایهی یکسانی تولید و در فروشگاهها توزیع شوند. اما اولین اسباببازیای که تولیدش را شروع کردند، از این قاعده مستنثی است و با توجه به تکنولوژیهای به کار رفته در ساخت آن، قیمتش بسیار بیشتر از قیمت پایه تعیین شده است. هر اسباببازی در سه اندازهی کوچک، متوسط و بزرگ تولید شده و قیمت فروش نیز متناسب با اندازهی اسباببازیها تغییر میکند.
طبق UML زیر کلاسها و فایلهای لازم را تولید کنید.
- متد ()getPrice در کلاس Toy به این صورت عمل میکند که اگر اندازهی اسباببازی کوچک باشد، همان قیمت پایه (basePrice) را به عنوان قیمت فروش برمیگرداند. اگر اندازهی اسباببازی متوسط باشد، 1.5 برابر قیمت پایه و اگر اندازهی اسباببازی بزرگ باشد، 2 برابر قیمت پایه را به عنوان قیمت فروش برمیگرداند.
- متد ()getPrice در کلاس Car به این صورت عمل میکند که اگر اندازهی اسباببازی کوچک باشد، 2 برابر قیمت پایه (basePrice) را به عنوان قیمت فروش برمیگرداند. اگر اندازهی اسباببازی متوسط باشد، 2.5 برابر قیمت پایه و اگر اندازهی اسباببازی بزرگ باشد، 3 برابر قیمت پایه را به عنوان قیمت فروش برمیگرداند.
- متد (getPrice(double discount نیز میزان درصد تخفیفی که به عنوان ورودی دریافت میکند را روی هزینه اعمال کرده و قیمت تخفیفخورده را بازمیگرداند. مقدار discount یک عدد بین 0 تا 100 درصد است.
بنابراین باید امکانی فراهم شود تا با اجرای کد زیر:
Car car = new Car(20000, ToySize.SMALL); System.out.println(car.getPrice()); System.out.println(car.getPrice(20));
دقیقا این مقادیر:
40000.0 32000.0
در خروجی چاپ شوند.
در واقع قیمت پایه 20000 تومان تعیین شده که چون اندازهی ماشین کوچک است، این قیمت برای فروش دو برابر شده و 40000 تومان میشود. همچین با 20% تخفیف قیمتش به 32000 تومان کاهش مییابد.
آنچه باید آپلود کنید:
یک فایل زیپ شامل بستهی ir.javacup.toyfactory است. به صورتی که وقتی فایل زیپ را باز میکنیم، دقیقا شاخهی ir را ببینیم که درون آن شاخهی javacup و درون آن نیز شاخهی toyfactory قرار دارد. در داخل شاخهی toyfactory دو فایل با نامهای Car.java و Toy.java باید وجود داشته باشد.
برای داوری تمرین، میتوانید پاسخ خود را در سایت Quera به نحوی که در بالا گفته شد، بارگذاری کنید.
با ما همراه باشید:
آدرس کانال تلگرام: IranianJavaDevelopers@
آدرس صفحه اینستاگرام: javacup.ir
آدرس گروه لینکدین: Iranian Java Developers
من با همون ساختاری که توی سوال گفته شده آپلود کردم ولی همش خطا میده لظفا راهنمایی کنید ….
سلام
لطفا در کوئرا در قسمت «سوال بپرسید»، مشکل خود را مطرح کنید تا بتوانیم پاسخ ارسالیتان را بررسی کرده و همانجا بهتان پاسخ دهیم.
سلام
بعد از بارگذاری فایل ها روی سایت کوئرا، برای تعداد constructor های هر دو کلاس، تست ها ناموفق درمیان. میشه لطفا بررسی کنید. طبق UML هر کلاس فقط یک constructor باید داشته باشه. آیا برداشتم درسته؟
سلام
بله درسته
لطفا در قسمت «سوال بپرسید» در کوئرا، مشکلتون رو مطرح کنید تا کدتون بررسی بشه.
ممنون از وقتی که برای طراحی و پیاده سازی این تمرینات گذاشتید.
تمرینات جالبی هستند یکی از کارهای لذت بخشم اینه که هر وقت فرصت کنم میام و با یکی از این تمرینات دسته و پنجه نرم میکنم و لذت می برم.
لطفا سوالات مسابقات جاوا کاپ را هم در کوئرا بگذارید.
بازهم تشکر