Треки
/
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;
    }
}

Вказівки

У цій вправі ми будемо гратися з радіокерованою машинкою, на яку ми нарешті назбирали грошей, щоб купити.

Машинки починають із повним (100%) зарядом батареї. Щоразу, коли ми керуємо машинкою з пульта, вона проїжджає 20 метрів і витрачає один відсоток заряду батареї.

Радіокерована машинка має вишуканий світлодіодний дисплей, який показує дві частини інформації:

  • Загальну відстань, яку вона проїхала, у такому вигляді: "Driven <METERS> meters".
  • Залишок заряду батареї у такому вигляді: "Battery at <PERCENTAGE>%".

Якщо заряд батареї сягає 0%, ми більше не можемо керувати машинкою, і дисплей батареї покаже "Battery empty".

На нас чекає шість завдань, кожне з яких працюватиме з екземплярами радіокерованої машинки.

1. Купити новісіньку радіокеровану машинку

Реалізуйте (стат) JedliksToyCar.buy() метод, який повертає новісінький екземпляр радіокерованої машинки:

JedliksToyCar car = JedliksToyCar.buy();

2. Показати пройдену відстань

Реалізуйте метод JedliksToyCar.distanceDisplay(), який повертає відстань у тому вигляді, як її показано на світлодіодному дисплеї:

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

3. Показати відсоток заряду батареї

Реалізуйте метод JedliksToyCar.batteryDisplay(), який повертає відсоток заряду батареї у тому вигляді, як його показано на світлодіодному дисплеї:

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() так, щоб він не збільшував пройдену відстань і не зменшував відсоток заряду батареї, коли батарея розряджена (0%):

JedliksToyCar car = JedliksToyCar.buy();

// Drain the battery
// ...

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

car.batteryDisplay();
// => "Battery empty"
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Java Exercism

Час розпочати Іграшкова машинка Єдліка?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Java, а також 26 концепцій158 вправ та справжнє наставництво від людей, і все це безкоштовно.