مسیرها
/
Java
Java
/
تمرین‌ها
/
ماشین اسباب‌بازی جدلیک
ماشین اسباب‌بازی جدلیک

ماشین اسباب‌بازی جدلیک

تمرین یادگیری

مقدمه

کلاس

سازه‌ی اصلی شیءگرا در Java، «کلاس» است؛ ترکیبی از داده («فیلد») و رفتار («متد»). به فیلدها و متدهای یک کلاس، «اعضای» آن گفته می‌شود.

دسترسی به اعضا را می‌توان با اصلاح‌کننده‌های دسترسی کنترل کرد که دو مورد از رایج‌ترین‌شان این‌ها هستند:

  • public: هر کدی می‌تواند به این عضو دسترسی داشته باشد (بدون محدودیت).
  • private: فقط کدی که در همان کلاس است می‌تواند به این عضو دسترسی داشته باشد.

می‌توانید کلاس را به‌عنوان قالبی برای ساختن نمونه‌هایی از آن در نظر بگیرید. برای ساختن یک نمونه از کلاس (که به آن «شیء» هم می‌گویند)، از کلیدواژه‌ی new استفاده می‌شود:

class Car {
}

// Create two car instances
Car myCar = new Car();
Car yourCar = new Car();

فیلدها یک نوع و یک اسم دارند (به‌صورت camelCase نوشته می‌شوند) و می‌توان آن‌ها را در هر جای کلاس تعریف کرد (بر اساس قرارداد، اسم کلاس‌ها به‌صورت PascalCase نوشته می‌شود):

class Car {
    // Accessible by anyone
    public int weight;

    // Only accessible by code in this class
    private String color;
}

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

class Car {
    // Will be set to specified value
    public int weight = 2500;

    // Will be set to default value (0)
    public int year;
}

Car newCar = new Car();
newCar.weight; // => 2500
newCar.year;   // => 0

// Update value of the field
newCar.year = 2018;

فیلدهای خصوصی معمولاً به‌عنوان اثر جانبی فراخوانی یک متد به‌روزرسانی می‌شوند. این متدها معمولاً مقداری برنمی‌گردانند؛ در این صورت نوع بازگشتی باید void باشد:

class CarImporter {
    private int carsImported;

    public void importCars(int numberOfCars)
    {
        // Update private field from public method
        carsImported = carsImported + numberOfCars;
    }
}

دستورالعمل‌ها

در این تمرین با یک ماشین کنترلی بازی می‌کنید؛ ماشینی که بالاخره پول کافی برای خریدنش را پس‌انداز کرده‌اید.

ماشین‌ها با باتری کاملاً پر (۱۰۰٪) شروع می‌کنند. هر بار که ماشین را با کنترل از راه دور می‌رانید، ۲۰ متر را طی می‌کند و یک درصد از باتری را خالی می‌کند.

ماشین کنترلی یک نمایشگر LED شیک دارد که دو بخش از اطلاعات را نشان می‌دهد:

  • کل مسافتی که طی کرده است، به این شکل نمایش داده می‌شود: "Driven <METERS> meters".
  • شارژ باقی‌مانده‌ی باتری، به این شکل نمایش داده می‌شود: "Battery at <PERCENTAGE>%".

اگر باتری ۰٪ باشد، دیگر نمی‌توانید ماشین را برانید و نمایشگر باتری "Battery empty" را نشان می‌دهد.

شما شش کار دارید که هر کدام با نمونه‌ای از ماشین کنترلی کار می‌کند.

1. یک ماشین کنترلی کاملاً نو بخرید

متد (static) JedliksToyCar.buy() را پیاده‌سازی کنید تا یک نمونه‌ی کاملاً نو از ماشین کنترلی برگرداند:

JedliksToyCar car = JedliksToyCar.buy();

2. نمایش مسافت طی‌شده

متد JedliksToyCar.distanceDisplay() را پیاده‌سازی کنید تا مسافت را همان‌طور که روی نمایشگر LED نشان داده می‌شود برگرداند:

JedliksToyCar car = JedliksToyCar.buy();
car.distanceDisplay();
// => "Driven 0 meters"

3. نمایش درصد شارژ باتری

متد JedliksToyCar.batteryDisplay() را پیاده‌سازی کنید تا درصد شارژ باتری را همان‌طور که روی نمایشگر LED نشان داده می‌شود برگرداند:

JedliksToyCar car = JedliksToyCar.buy();
car.batteryDisplay();
// => "Battery at 100%"

4. به‌روزرسانی تعداد مترهای طی‌شده هنگام رانندگی

متد JedliksToyCar.drive() را پیاده‌سازی کنید که تعداد مترهای طی‌شده را به‌روزرسانی می‌کند:

JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.distanceDisplay();
// => "Driven 40 meters"

5. به‌روزرسانی درصد شارژ باتری هنگام رانندگی

متد JedliksToyCar.drive() را به‌روزرسانی کنید تا درصد شارژ باتری را هم به‌روزرسانی کند:

JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.batteryDisplay();
// => "Battery at 98%"

6. جلوگیری از رانندگی وقتی باتری خالی شده است

متد JedliksToyCar.drive() را به‌روزرسانی کنید تا وقتی باتری خالی است (۰٪)، نه مسافت طی‌شده را افزایش دهد و نه درصد شارژ باتری را کاهش دهد:

JedliksToyCar car = JedliksToyCar.buy();

// Drain the battery
// ...

car.distanceDisplay();
// => "Driven 2000 meters"

car.batteryDisplay();
// => "Battery empty"
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Java Exercism

آماده‌اید ماشین اسباب‌بازی جدلیک را شروع کنید؟

در Exercism ثبت‌نام کنید تا Java را همراه با 26 مفهوم158 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.