Треки
/
C#
C#
/
Вправи
/
Need for Speed
Need for Speed

Need for Speed

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

Вступ

Конструктори

Щоб створити екземпляр класу, потрібно викликати його конструктор за допомогою оператора new. Конструктор - це особливий різновид методу, мета якого - ініціалізувати щойно створений екземпляр. Конструктори мають вигляд звичайних методів, але без типу повернення і з назвою, що збігається з назвою класу.

class Library
{
    private int books;

    public Library()
    {
        // Initialize the books field
        this.books = 10;
    }
}

// This will call the constructor
var library = new Library();

Як і звичайні методи, конструктори можуть мати параметри. Параметри конструктора зазвичай зберігають як (приватні) поля, щоб звертатися до них пізніше, або використовують у якомусь одноразовому обчисленні. Аргументи можна передавати конструкторам так само, як передають аргументи звичайним методам.

class Building
{
    private int numberOfStories;
    private int totalHeight;

    public Building(int numberOfStories, double storyHeight)
    {
        this.numberOfStories = numberOfStories;
        this.totalHeight = numberOfStories * storyHeight;
    }
}

// Call a constructor with two arguments
var largeBuilding = new Building(55, 6.2)

Вказівки

У цій вправі ми будемо організовувати перегони між різними типами радіокерованих автомобілів. Кожен автомобіль має власні характеристики швидкості та розряджання батареї.

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

Якщо заряд батареї автомобіля менший за відсоток її розряджання, ми більше не можемо керувати цим автомобілем.

Кожна гоночна траса має власну дистанцію. Автомобілі перевіряють, чи можуть вони завершити трасу, не розрядивши батарею.

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

1. Створення радіокерованого автомобіля

Дозвольте створити радіокерований автомобіль, визначивши конструктор для класу RemoteControlCar, який приймає швидкість автомобіля в метрах і відсоток розряджання батареї як свої два параметри (обидва типу int):

int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);

2. Створення гоночної траси

Дозвольте створити гоночну трасу, визначивши конструктор для класу RaceTrack, який приймає дистанцію траси в метрах як свій єдиний параметр (типу int):

int distance = 800;
var raceTrack = new RaceTrack(distance);

3. Керування автомобілем

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

int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);
car.Drive();

car.DistanceDriven();
// => 5

4. Перевірка розрядженої батареї

Оновіть метод RemoteControlCar.Drive(), щоб він розряджав батарею відповідно до показника розряджання автомобіля. Також реалізуйте метод RemoteControlCar.BatteryDrained(), який показує, чи розряджена батарея:

int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);
car.Drive();

car.BatteryDrained();
// => false

5. Створення радіокерованого автомобіля Nitro

Найпопулярніший радіокерований автомобіль - це Nitro, який має вражаючу максимальну швидкість 50 метрів із розряджанням батареї 4%. Реалізуйте (статичний) метод RemoteControlCar.Nitro(), який повертає автомобіль цього типу:

var car = RemoteControlCar.Nitro();
car.Drive();
car.DistanceDriven();
// => 50

6. Перевірка, чи може радіокерований автомобіль завершити гонку

Щоб завершити гоночну трасу, автомобіль має бути здатним проїхати її дистанцію. Це означає не розрядити батарею, перш ніж перетнути фінішну лінію. Реалізуйте метод RaceTrack.TryFinishTrack(), який приймає екземпляр RemoteControlCar як свій параметр і повертає true, якщо автомобіль може завершити гоночну трасу; інакше повертає false:

int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);

int distance = 100;
var raceTrack = new RaceTrack(distance);

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

Час розпочати Need for Speed?

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