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);
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.
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);
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);
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
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
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
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
Inscreve-te no Exercism para aprenderes e dominares Java com 26 conceitos158 exercícios, e mentoria humana real, tudo grátis.