Trilhas
/
C#
C#
/
Exercícios
/
Os brinquedos de Jedlik
Os brinquedos de Jedlik

Os brinquedos de Jedlik

Exercício de aprendizagem

Introdução

Classes

A principal construção orientada a objetos em C# é a classe, que é uma combinação de dados (campos) e comportamento (métodos). Os campos e métodos de uma classe são conhecidos como seus membros.

O acesso aos membros pode ser restrito por meio de modificadores de acesso, sendo os dois mais comuns:

  • public: o membro pode ser acessado por qualquer código (sem restrições).
  • private: o membro só pode ser acessado por código da mesma classe.

Você pode pensar em uma 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 lugar de uma classe. Campos públicos são definidos em PascalCase e campos privados são definidos em camelCase e prefixados com um sublinhado _:

class Car
{
    // Accessible by anyone
    public int Weight;

    // Only accessible by code in this class
    private string _color;
}

Pode-se, opcionalmente, atribuir um valor inicial a um campo. Se um campo não especificar um valor inicial, ele será definido com o valor padrão do seu tipo. Os valores dos campos de uma instância podem ser acessados e atualizados usando 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;

Campos privados geralmente são atualizados como efeito colateral de chamar um método. Esses métodos geralmente não retornam nenhum valor, e nesse caso o tipo de retorno deve ser void:

class CarImporter
{
    private int _carsImported;

    public void ImportCars(int numberOfCars)
    {
        // Update private field from public method
        _carsImported = _carsImported + numberOfCars;
    }
}

Instruções

Neste exercício você vai brincar com um carro de controle remoto, que você finalmente juntou dinheiro suficiente para comprar.

Os carros começam com a bateria cheia (100%). Cada vez que você dirige o carro com o controle remoto, ele percorre 20 metros e gasta um por cento da bateria.

O carro de controle remoto tem um display de LED chique que mostra duas informações:

  • A distância total percorrida, exibida como: "Driven <METERS> meters".
  • A carga restante da bateria, exibida como: "Battery at <PERCENTAGE>%".

Se a bateria estiver em 0%, você não pode mais dirigir o carro e o display da bateria vai mostrar "Battery empty".

Você tem seis tarefas, e cada uma delas vai trabalhar com instâncias de carro de controle remoto.

1. Compre um carro de controle remoto novinho em folha

Implemente o método (static) RemoteControlCar.Buy() para retornar uma instância novinha em folha de carro de controle remoto:

RemoteControlCar car = RemoteControlCar.Buy();

2. Exiba a distância percorrida

Implemente o método RemoteControlCar.DistanceDisplay() para retornar a distância como ela é exibida no display de LED:

var car = RemoteControlCar.Buy();
car.DistanceDisplay();
// => "Driven 0 meters"

3. Exiba a porcentagem da bateria

Implemente o método RemoteControlCar.BatteryDisplay() para retornar a porcentagem da bateria como ela é exibida no display de LED:

var car = RemoteControlCar.Buy();
car.BatteryDisplay();
// => "Battery at 100%"

4. Atualize o número de metros percorridos ao dirigir

Implemente 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"

5. Atualize a porcentagem da bateria ao dirigir

Atualize o método RemoteControlCar.Drive() para atualizar a porcentagem da bateria:

var car = RemoteControlCar.Buy();
car.Drive();
car.Drive();
car.BatteryDisplay();
// => "Battery at 98%"

6. Impeça de dirigir quando a bateria acabar

Atualize o método RemoteControlCar.Drive() para não aumentar a distância percorrida nem diminuir a porcentagem da bateria quando a bateria acabar (em 0%):

var car = RemoteControlCar.Buy();

// Drain the battery
// ...

car.DistanceDisplay();
// => "Driven 2000 meters"

car.BatteryDisplay();
// => "Battery empty"
Editar via GitHub O link abre em uma nova janela ou aba
C# Exercism

Tudo pronto para começar Os brinquedos de Jedlik?

Crie sua conta no Exercism para aprender e dominar C# com 62 conceitos178 exercícios e mentoria humana de verdade, tudo de graça.