Track
/
Java
Java
/
Esercizi
/
Need for Speed
Need for Speed

Need for Speed

Esercizio di apprendimento

Introduzione

Costruttori

Per creare un'istanza di una classe si chiama il suo costruttore tramite l'operatore new. Un costruttore è un tipo speciale di metodo il cui scopo è inizializzare un'istanza appena creata. I costruttori sono simili ai metodi normali, ma non hanno un tipo restituito e hanno un nome che coincide con quello della classe.

class Library {
    private int books;

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

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

Come i metodi normali, i costruttori possono avere dei parametri. I parametri del costruttore di solito vengono memorizzati in campi (privati) a cui accedere in seguito, oppure servono a un calcolo una tantum. Gli argomenti si passano ai costruttori esattamente come si passano gli argomenti ai metodi normali.

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

Istruzioni

In questo esercizio, organizzerai delle gare tra vari tipi di auto radiocomandate. Ogni auto ha le proprie caratteristiche di velocità e di consumo della batteria.

Le auto partono con la batteria carica al 100%. Ogni volta che guidi l'auto con il radiocomando, questa percorre tanti metri quanti sono la sua velocità, e la percentuale di batteria rimanente diminuisce del suo consumo.

Se la batteria di un'auto è al di sotto della percentuale del suo consumo, non puoi più guidarla.

Ogni pista ha la propria distanza. Le auto vengono messe alla prova verificando se riescono a completare la pista senza esaurire la batteria.

Ci sono sei compiti, ognuno dei quali lavorerà con istanze di auto radiocomandate.

1. Creare un'auto radiocomandata

Consenti di creare un'auto radiocomandata definendo un costruttore per la classe NeedForSpeed che riceve come suoi due parametri la velocità dell'auto in metri e la percentuale di consumo della batteria (entrambi di tipo int):

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

2. Creare una pista

Consenti di creare una pista definendo un costruttore per la classe RaceTrack che riceve come suo unico parametro la distanza della pista in metri (di tipo int):

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

3. Guidare l'auto

Implementa il metodo NeedForSpeed.drive() che aggiorna il numero di metri percorsi in base alla velocità dell'auto. Implementa anche il metodo NeedForSpeed.distanceDriven() che restituisce il numero di metri percorsi dall'auto:

int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
car.drive();

car.distanceDriven();
// => 5

4. Controllare se la batteria è scarica

Aggiorna il metodo NeedForSpeed.drive() in modo che scarichi la batteria in base al consumo dell'auto. Implementa anche il metodo NeedForSpeed.batteryDrained() che indica se la batteria è troppo scarica per guidare:

int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
car.drive();

car.batteryDrained();
// => false

5. Creare l'auto radiocomandata Nitro

L'auto radiocomandata più venduta è la Nitro, che ha una velocità massima impressionante di 50 metri con un consumo della batteria del 4%. Implementa il metodo (statico) NeedForSpeed.nitro() che restituisce questo tipo di auto:

var car = NeedForSpeed.nitro();
car.drive();
car.distanceDriven();
// => 50

6. Controllare se un'auto radiocomandata può completare una gara

Per completare una gara, un'auto deve essere in grado di percorrere la distanza della gara. Questo significa che non deve esaurire la batteria prima di aver tagliato il traguardo. Implementa il metodo RaceTrack.canFinishRace() che riceve come parametro un'istanza di NeedForSpeed e restituisce true se l'auto può completare la gara, altrimenti false:

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

int distance1 = 100;
var race1 = new RaceTrack(distance1);

int distance2 = 300;
var race2 = new RaceTrack(distance2);

race1.canFinishRace(car);
// => true

race2.canFinishRace(car);
// => false
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Java Exercism

Vuoi iniziare Need for Speed?

Iscriviti a Exercism per imparare e padroneggiare Java con 26 concetti158 esercizi e il mentoring di persone reali, tutto gratis.