Percursos
/
Java
Java
/
Exercícios
/
Need for Speed
Need for Speed

Need for Speed

Exercício de aprendizagem

Introdução

Construtores

Para criar uma instância de uma classe, chamas o seu construtor através do operador new. Um construtor é um tipo especial de método cujo objetivo é inicializar uma instância recém-criada. Os construtores parecem métodos normais, mas não têm tipo de retorno e o seu nome é igual ao da classe.

class Library {
    private int books;

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

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

Tal como os métodos normais, os construtores podem ter parâmetros. Os parâmetros do construtor são habitualmente guardados como campos (privados) para serem acedidos mais tarde, ou então usados em algum cálculo pontual. Podes passar argumentos aos construtores tal como passas argumentos a métodos normais.

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

Instruções

Neste exercício, vais organizar corridas entre vários tipos de carros telecomandados. Cada carro tem a sua própria velocidade e as suas próprias características de consumo de bateria.

Os carros começam com a bateria cheia (100%). Cada vez que conduzes o carro com o telecomando, ele percorre a velocidade do carro em metros e reduz a percentagem de bateria restante pelo seu consumo de bateria.

Se a bateria de um carro estiver abaixo da sua percentagem de consumo de bateria, já não podes conduzir o carro.

Cada pista de corrida tem a sua própria distância. Os carros são testados verificando se conseguem terminar a pista sem ficar sem bateria.

Tens seis tarefas, e cada uma delas vai trabalhar com instâncias de carros telecomandados.

1. Criar um carro telecomandado

Permite criar um carro telecomandado definindo um construtor para a classe NeedForSpeed que recebe a velocidade do carro em metros e a percentagem de consumo de bateria como os seus dois parâmetros (ambos do tipo int):

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

2. Criar uma pista de corrida

Permite criar uma pista de corrida definindo um construtor para a classe RaceTrack que recebe a distância da pista em metros como o seu único parâmetro (do tipo int):

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

3. Conduzir o carro

Implementa o método NeedForSpeed.drive() que atualiza o número de metros percorridos com base na velocidade do carro. Além disso, implementa o método NeedForSpeed.distanceDriven() para devolver o número de metros percorridos pelo carro:

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

car.distanceDriven();
// => 5

4. Verificar se a bateria está descarregada

Atualiza o método NeedForSpeed.drive() para descarregar a bateria de acordo com o consumo de bateria do carro. Além disso, implementa o método NeedForSpeed.batteryDrained() que indica se a bateria está demasiado descarregada para conduzir:

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

car.batteryDrained();
// => false

5. Criar o carro telecomandado Nitro

O carro telecomandado mais vendido é o Nitro, que tem uma velocidade máxima impressionante de 50 metros e um consumo de bateria de 4%. Implementa o método (estático) NeedForSpeed.nitro() para devolver este tipo de carro:

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

6. Verificar se um carro telecomandado consegue terminar uma corrida

Para terminar uma corrida, um carro tem de conseguir percorrer a distância da corrida. Isso significa não descarregar a bateria antes de cruzar a linha de chegada. Implementa o método RaceTrack.canFinishRace() que recebe uma instância de NeedForSpeed como parâmetro e devolve true se o carro conseguir terminar a corrida; caso contrário, devolve 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
Editar via GitHub A ligação abre numa nova janela ou separador
Java Exercism

Estás pronto para começar Need for Speed?

Inscreve-te no Exercism para aprenderes e dominares Java com 26 conceitos158 exercícios, e mentoria humana real, tudo grátis.