Треки
/
C#
C#
/
Вправи
/
Іграшки Джедліка
Іграшки Джедліка

Іграшки Джедліка

Навчальна вправа

Вступ

Класи

Основним обʼєктно-орієнтованим конструктом у C# є клас, який поєднує дані (поля) та поведінку (методи). Поля й методи класу відомі як його члени.

Доступ до членів можна обмежити за допомогою модифікаторів доступу, два найпоширеніші з яких:

  • public: член доступний будь-якому коду (без обмежень).
  • private: член доступний лише коду в тому самому класі.

Можна уявити клас як шаблон для створення екземплярів цього класу. Щоб створити екземпляр класу (який також називають обʼєктом), використовують ключове слово new:

class Car
{
}

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

Поля мають тип і їх можна визначити будь-де в класі. Публічні поля визначають у PascalCase, а приватні - у camelCase, додаючи на початку символ підкреслення _:

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;
}

var 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. Купити нову радіокеровану машину

Реалізуйте (статичний) метод RemoteControlCar.Buy(), щоб повернути новий примірник радіокерованої машини:

RemoteControlCar car = RemoteControlCar.Buy();

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

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

var car = RemoteControlCar.Buy();
car.DistanceDisplay();
// => "Driven 0 meters"

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

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

var car = RemoteControlCar.Buy();
car.BatteryDisplay();
// => "Battery at 100%"

4. Оновлювати кількість пройдених метрів під час руху

Реалізуйте метод RemoteControlCar.Drive(), який оновлює кількість пройдених метрів:

var car = RemoteControlCar.Buy();
car.Drive();
car.Drive();
car.DistanceDisplay();
// => "Driven 40 meters"

5. Оновлювати відсоток заряду батареї під час руху

Оновіть метод RemoteControlCar.Drive(), щоб він оновлював відсоток заряду батареї:

var car = RemoteControlCar.Buy();
car.Drive();
car.Drive();
car.BatteryDisplay();
// => "Battery at 98%"

6. Заборонити рух, коли батарея розряджена

Оновіть метод RemoteControlCar.Drive() так, щоб він не збільшував пройдену відстань і не зменшував відсоток заряду батареї, коли батарея розряджена (0%):

var car = RemoteControlCar.Buy();

// Drain the battery
// ...

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

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

Час розпочати Іграшки Джедліка?

Зареєструйтеся на Exercism, щоб вивчати й опановувати C#, а також 62 концепції178 вправ та справжнє наставництво від людей, і все це безкоштовно.