Para crear una instancia de una clase se llama a su constructor con 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. Los parámetros del constructor se suelen almacenar como campos (privados) para acceder a ellos más tarde, o bien se usan en algún cálculo puntual. 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);
En este ejercicio vas a organizar carreras entre distintos tipos de coches teledirigidos. Cada coche tiene sus propias características de velocidad y consumo de batería.
Los coches empiezan con las baterías llenas (100 %). Cada vez que conduces el coche con el mando a distancia, recorre tantos metros como indica su velocidad y reduce el porcentaje de batería restante en su consumo de batería.
Si la batería de un coche está por debajo de su porcentaje de consumo de batería, ya no puedes conducirlo.
Cada pista de carreras tiene su propia distancia. Los coches se ponen a prueba comprobando si pueden terminar la pista sin quedarse sin batería.
Tienes seis tareas y cada una trabajará con instancias de coches teledirigidos.
Permite crear un coche teledirigido definiendo un constructor para la clase NeedForSpeed que reciba como parámetros la velocidad del coche 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);
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 (de tipo int):
int distance = 800;
var raceTrack = new RaceTrack(distance);
Implementa el método NeedForSpeed.drive() que actualiza el número de metros recorridos en función de la velocidad del coche. Además, implementa el método NeedForSpeed.distanceDriven() para devolver el número de metros recorridos por el coche:
int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
car.drive();
car.distanceDriven();
// => 5
Actualiza el método NeedForSpeed.drive() para que consuma batería según el consumo de batería del coche. Además, implementa el método NeedForSpeed.batteryDrained() que indica si la batería está demasiado agotada para poder conducir:
int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
car.drive();
car.batteryDrained();
// => false
El coche teledirigido más vendido es el Nitro, que tiene una velocidad punta impresionante de 50 metros con un consumo de batería del 4 %. Implementa el método (estático) NeedForSpeed.nitro() para devolver este tipo de coche:
var car = NeedForSpeed.nitro();
car.drive();
car.distanceDriven();
// => 50
Para terminar una carrera, un coche tiene que ser capaz de recorrer la distancia de la carrera. Eso 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 coche puede terminar la carrera; en caso 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
Regístrate en Exercism para aprender y dominar Java con 26 conceptos158 ejercicios y mentoría humana real, todo gratis.