Tracks
/
Java
Java
/
Ejercicios
/
Need for Speed
Need for Speed

Need for Speed

Ejercicio de aprendizaje

Introducción

Constructores

Para crear una instancia de una clase, se llama a su constructor mediante el operador new. Un constructor es un tipo especial de método cuyo objetivo es inicializar una instancia recién creada. Los constructores se parecen a los métodos normales, pero no tienen tipo de retorno y su nombre coincide con el de la clase.

class Library {
    private int books;

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

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

Al igual que los métodos normales, los constructores pueden tener parámetros. Por lo general, los parámetros del constructor se guardan como campos (privados) para acceder a ellos más adelante, o bien se usan en algún cálculo que se hace una sola vez. Se pueden pasar argumentos a los constructores igual que se pasan argumentos a los métodos normales.

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

Instrucciones

En este ejercicio, vas a organizar carreras entre varios tipos de autos a control remoto. Cada auto tiene sus propias características de velocidad y de consumo de batería.

Los autos empiezan con la batería llena (100%). Cada vez que conduces el auto con el control remoto, este avanza la cantidad de metros de la velocidad del auto y reduce el porcentaje de batería restante en su consumo de batería.

Si la batería de un auto está por debajo de su porcentaje de consumo de batería, ya no puedes conducir el auto.

Cada pista de carreras tiene su propia distancia. Los autos se prueban verificando si pueden terminar la pista sin quedarse sin batería.

Tienes seis tareas, y cada una trabajará con instancias de autos a control remoto.

1. Crear un auto a control remoto

Permite crear un auto a control remoto definiendo un constructor para la clase NeedForSpeed que reciba como sus dos parámetros la velocidad del auto en metros y el porcentaje de consumo de batería (ambos de tipo int):

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

2. Crear una pista de carreras

Permite crear una pista de carreras definiendo un constructor para la clase RaceTrack que reciba como único parámetro la distancia de la pista en metros (que es de tipo int):

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

3. Conducir el auto

Implementa el método NeedForSpeed.drive() que actualiza el número de metros recorridos según la velocidad del auto. Además, implementa el método NeedForSpeed.distanceDriven() para devolver el número de metros recorridos por el auto:

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

car.distanceDriven();
// => 5

4. Verificar si la batería está agotada

Actualiza el método NeedForSpeed.drive() para que consuma batería según el consumo de batería del auto. Además, implementa el método NeedForSpeed.batteryDrained() que indica si la batería está demasiado agotada como para conducir:

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

car.batteryDrained();
// => false

5. Crear el auto a control remoto Nitro

El auto a control remoto más vendido es el Nitro, que tiene una impresionante velocidad máxima de 50 metros con un consumo de batería del 4 %. Implementa el método (estático) NeedForSpeed.nitro() para devolver este tipo de auto:

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

6. Verificar si un auto a control remoto puede terminar una carrera

Para terminar una carrera, un auto tiene que poder recorrer la distancia de la carrera. Esto significa no agotar su batería antes de haber cruzado la línea de meta. Implementa el método RaceTrack.canFinishRace() que recibe una instancia de NeedForSpeed como parámetro y devuelve true si el auto puede terminar la carrera; de lo contrario, devuelve 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 en GitHub El enlace se abre en una ventana o una pestaña nuevas
Java Exercism

¿Todo listo para empezar Need for Speed?

Regístrate en Exercism para aprender y dominar Java con 26 conceptos158 ejercicios y mentoría humana real, todo gratis.