Para criar uma instância de uma classe, você chama o construtor dela através do 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 o nome deles é igual ao nome 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. Normalmente, os parâmetros do construtor são armazenados como campos (privados) para serem acessados depois, ou então são usados em algum cálculo pontual. Você pode passar argumentos para os construtores do mesmo jeito que 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 sua própria velocidade e suas próprias características de consumo de bateria.
Os carros começam com a bateria cheia (100%). Cada vez que você dirige o carro com o controle remoto, ele percorre a velocidade do carro em metros e diminui a porcentagem restante de bateria pelo seu consumo de bateria.
Se a bateria de um carro estiver abaixo da porcentagem de consumo de bateria dele, 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 RemoteControlCar 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 RemoteControlCar(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 RemoteControlCar.Drive() que atualiza o número de metros percorridos com base na velocidade do carro. Implemente também o método RemoteControlCar.DistanceDriven() para retornar o número de metros percorridos pelo carro:
int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);
car.Drive();
car.DistanceDriven();
// => 5
Atualize o método RemoteControlCar.Drive() para drenar a bateria com base no consumo de bateria do carro. Implemente também o método RemoteControlCar.BatteryDrained() que indica se a bateria acabou:
int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(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) RemoteControlCar.Nitro() para retornar esse tipo de carro:
var car = RemoteControlCar.Nitro();
car.Drive();
car.DistanceDriven();
// => 50
Para terminar uma pista de corrida, o carro precisa conseguir percorrer a distância da pista. Isso significa não drenar a bateria antes de cruzar a linha de chegada. Implemente o método RaceTrack.TryFinishTrack() que recebe uma instância de RemoteControlCar como parâmetro e retorna true se o carro conseguir terminar a pista de corrida; caso contrário, retorna false:
int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);
int distance = 100;
var raceTrack = new RaceTrack(distance);
raceTrack.TryFinishTrack(car);
// => true
Crie sua conta no Exercism para aprender e dominar C# com 62 conceitos178 exercícios e mentoria humana de verdade, tudo de graça.