تمرین‌های آموزشی

کارخانه اسباب‌بازی (تا پایان جلسه دهم)

سطح سوال: متوسط

آنچه از این جلسه باید بدانید: آشنایی با وراثت و نمایش وراثت در 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

نوشته های مشابه

‫5 دیدگاه ها

  1. من با همون ساختاری که توی سوال گفته شده آپلود کردم ولی همش خطا میده لظفا راهنمایی کنید ….

    1. سلام
      لطفا در کوئرا در قسمت «سوال بپرسید»، مشکل خود را مطرح کنید تا بتوانیم پاسخ ارسالی‎تان را بررسی کرده و همانجا بهتان پاسخ دهیم.

  2. سلام
    بعد از بارگذاری فایل ها روی سایت کوئرا، برای تعداد constructor های هر دو کلاس، تست ها ناموفق درمیان. میشه لطفا بررسی کنید. طبق UML هر کلاس فقط یک constructor باید داشته باشه. آیا برداشتم درسته؟

    1. سلام
      بله درسته

      لطفا در قسمت «سوال بپرسید» در کوئرا، مشکلتون رو مطرح کنید تا کدتون بررسی بشه.

  3. ممنون از وقتی که برای طراحی و پیاده سازی این تمرینات گذاشتید.
    تمرینات جالبی هستند یکی از کارهای لذت بخشم اینه که هر وقت فرصت کنم میام و با یکی از این تمرینات دسته و پنجه نرم میکنم و لذت می برم.
    لطفا سوالات مسابقات جاوا کاپ را هم در کوئرا بگذارید.

    بازهم تشکر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا