Em C#, a principal construção da programação orientada a objetos é a classe, que combina dados (campos) e comportamento (métodos). Os campos e os métodos de uma classe são conhecidos como os seus membros.
Podes restringir o acesso aos membros através de modificadores de acesso, sendo os dois mais comuns:
public: qualquer código pode aceder ao membro (sem restrições).private: só o código da mesma classe pode aceder ao membro.Podes pensar numa classe como um modelo para criar instâncias dessa classe. Para criar uma instância de uma classe (também conhecida como objeto), usa-se a palavra-chave new:
class Car
{
}
// Create two car instances
var myCar = new Car();
var yourCar = new Car();
Os campos têm um tipo e podem ser definidos em qualquer parte de uma classe.
Os campos públicos são definidos em PascalCase e os campos privados em camelCase, precedidos de um underscore _:
class Car
{
// Accessible by anyone
public int Weight;
// Only accessible by code in this class
private string _color;
}
Podes, opcionalmente, atribuir um valor inicial a um campo. Se um campo não especificar um valor inicial, é-lhe atribuído o valor predefinido do seu tipo. Podes consultar e atualizar os valores dos campos de uma instância com a notação de ponto.
class Car
{
// Will be set to specified value
public int Weight = 2500;
// Will be set to default value (0)
public int Year;
}
var newCar = new Car();
newCar.Weight; // => 2500
newCar.Year; // => 0
// Update value of the field
newCar.Year = 2018;
Os campos privados são normalmente atualizados como efeito secundário da chamada de um método. Esses métodos normalmente não devolvem nenhum valor, caso em que o tipo devolvido deve ser void:
class CarImporter
{
private int _carsImported;
public void ImportCars(int numberOfCars)
{
// Update private field from public method
_carsImported = _carsImported + numberOfCars;
}
}
Neste exercício vais brincar com um carro telecomandado, para o qual finalmente poupaste dinheiro suficiente para o comprar.
Os carros começam com a bateria cheia (100%). Cada vez que conduzes o carro com o telecomando, ele percorre 20 metros e gasta um por cento da bateria.
O carro telecomandado tem um visor LED sofisticado que mostra duas informações:
"Driven <METERS> meters"."Battery at <PERCENTAGE>%".Se a bateria estiver a 0%, já não consegues conduzir o carro e o visor da bateria mostra "Battery empty".
Tens seis tarefas, e cada uma delas vai trabalhar com instâncias de carros telecomandados.
Implementa o método (static) RemoteControlCar.Buy() para devolver uma instância de um carro telecomandado novo em folha:
RemoteControlCar car = RemoteControlCar.Buy();
Implementa o método RemoteControlCar.DistanceDisplay() para devolver a distância tal como é apresentada no visor LED:
var car = RemoteControlCar.Buy();
car.DistanceDisplay();
// => "Driven 0 meters"
Implementa o método RemoteControlCar.BatteryDisplay() para devolver a percentagem da bateria tal como é apresentada no visor LED:
var car = RemoteControlCar.Buy();
car.BatteryDisplay();
// => "Battery at 100%"
Implementa o método RemoteControlCar.Drive() que atualiza o número de metros percorridos:
var car = RemoteControlCar.Buy();
car.Drive();
car.Drive();
car.DistanceDisplay();
// => "Driven 40 meters"
Atualiza o método RemoteControlCar.Drive() para atualizar a percentagem da bateria:
var car = RemoteControlCar.Buy();
car.Drive();
car.Drive();
car.BatteryDisplay();
// => "Battery at 98%"
Atualiza o método RemoteControlCar.Drive() para não aumentar a distância percorrida nem diminuir a percentagem da bateria quando a bateria está descarregada (a 0%):
var car = RemoteControlCar.Buy();
// Drain the battery
// ...
car.DistanceDisplay();
// => "Driven 2000 meters"
car.BatteryDisplay();
// => "Battery empty"
Inscreve-te no Exercism para aprenderes e dominares C# com 62 conceitos178 exercícios, e mentoria humana real, tudo grátis.