Para criar uma instância de uma classe, chamamos o seu construtor com o operador new.
Um construtor é um tipo especial de método cujo objetivo é inicializar uma instância recém-criada.
Os construtores se parecem com métodos comuns, mas não têm tipo de retorno e têm um 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();
Assim como os métodos comuns, os construtores podem ter parâmetros. Os parâmetros de um construtor costumam ser guardados em campos (privados) para serem acessados depois, ou então usados em algum cálculo pontual. É possível passar argumentos para os construtores, assim como se passa argumentos para métodos comuns.
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);
Neste exercício, você vai organizar corridas entre vários tipos de carros de controle remoto. Cada carro tem suas próprias características de velocidade e de consumo de bateria.
Os carros começam com a bateria cheia (100%). Cada vez que você dirige o carro usando o controle remoto, ele percorre, em metros, uma distância igual à velocidade do carro e diminui a porcentagem restante da bateria pelo seu consumo de bateria.
Se a bateria de um carro estiver abaixo da porcentagem do seu consumo de bateria, você não pode mais dirigir o carro.
Cada pista de corrida tem sua própria distância. Os carros são testados verificando se conseguem terminar a pista sem ficar sem bateria.
Você tem seis tarefas, e cada uma delas vai trabalhar com instâncias de carros de controle remoto.
Permita criar um carro de controle remoto definindo um construtor para a classe NeedForSpeed que recebe a velocidade do carro em metros e a porcentagem de consumo de bateria como seus dois parâmetros (ambos do tipo int):
int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
Permita criar uma pista de corrida definindo um construtor para a classe RaceTrack que recebe a distância da pista em metros como seu único parâmetro (que é do tipo int):
int distance = 800;
var raceTrack = new RaceTrack(distance);
Implemente o método NeedForSpeed.drive() que atualiza o número de metros percorridos com base na velocidade do carro. Além disso, implemente o método NeedForSpeed.distanceDriven() para retornar 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
Atualize o método NeedForSpeed.drive() para consumir a bateria com base no consumo de bateria do carro. Além disso, implemente o método NeedForSpeed.batteryDrained() que indica se a bateria está descarregada demais para dirigir:
int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
car.drive();
car.batteryDrained();
// => false
O carro de controle remoto mais vendido é o Nitro, que tem uma velocidade máxima impressionante de 50 metros com um consumo de bateria de 4%. Implemente o método (estático) NeedForSpeed.nitro() para retornar esse tipo de carro:
var car = NeedForSpeed.nitro();
car.drive();
car.distanceDriven();
// => 50
Para terminar uma corrida, um carro precisa conseguir percorrer a distância da corrida. Isso significa não consumir sua bateria antes de cruzar a linha de chegada. Implemente o método RaceTrack.canFinishRace() que recebe uma instância de NeedForSpeed como seu parâmetro e retorna true se o carro conseguir terminar a corrida; caso contrário, retorne 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
Crie sua conta no Exercism para aprender e dominar Java com 26 conceitos158 exercícios e mentoria humana de verdade, tudo de graça.