Percursos
/
Java
Java
/
Exercícios
/
O carro de brinquedo do Jedlik
O carro de brinquedo do Jedlik

O carro de brinquedo do Jedlik

Exercício de aprendizagem

Introdução

Classes

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

O acesso aos membros pode ser controlado através de modificadores de acesso. Os dois mais comuns são:

  • 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
Car myCar = new Car();
Car yourCar = new Car();

Os campos têm um tipo e um nome (definido em camelCase) e podem ser definidos em qualquer parte de uma classe (por convenção, escritos em PascalCase):

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

    // Only accessible by code in this class
    private String color;
}

É possível atribuir opcionalmente um valor inicial a um campo. Se um campo não especificar um valor inicial, fica com o valor predefinido do seu tipo. Os valores dos campos de uma instância podem ser consultados e atualizados 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;
}

Car 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. Estes 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;
    }
}

Instruções

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 comando, ele percorre 20 metros e gasta um por cento da bateria.

O carro telecomandado tem um ecrã LED vistoso que mostra duas informações:

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

Se a bateria estiver a 0%, já não consegues conduzir o carro e o ecrã da bateria mostra "Battery empty".

Tens seis tarefas e cada uma delas trabalha com instâncias de carros telecomandados.

1. Comprar um carro telecomandado novo em folha

Implementa o método (estático) JedliksToyCar.buy() para devolver uma instância de um carro telecomandado novo em folha:

JedliksToyCar car = JedliksToyCar.buy();

2. Mostrar a distância percorrida

Implementa o método JedliksToyCar.distanceDisplay() para devolver a distância tal como aparece no ecrã LED:

JedliksToyCar car = JedliksToyCar.buy();
car.distanceDisplay();
// => "Driven 0 meters"

3. Mostrar a percentagem da bateria

Implementa o método JedliksToyCar.batteryDisplay() para devolver a percentagem da bateria tal como aparece no ecrã LED:

JedliksToyCar car = JedliksToyCar.buy();
car.batteryDisplay();
// => "Battery at 100%"

4. Atualizar o número de metros percorridos ao conduzir

Implementa o método JedliksToyCar.drive() que atualiza o número de metros percorridos:

JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.distanceDisplay();
// => "Driven 40 meters"

5. Atualizar a percentagem da bateria ao conduzir

Atualiza o método JedliksToyCar.drive() para atualizar a percentagem da bateria:

JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.batteryDisplay();
// => "Battery at 98%"

6. Impedir a condução quando a bateria está descarregada

Atualiza o método JedliksToyCar.drive() para não aumentar a distância percorrida nem diminuir a percentagem da bateria quando a bateria está descarregada (a 0%):

JedliksToyCar car = JedliksToyCar.buy();

// Drain the battery
// ...

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

car.batteryDisplay();
// => "Battery empty"
Editar via GitHub A ligação abre numa nova janela ou separador
Java Exercism

Estás pronto para começar O carro de brinquedo do Jedlik?

Inscreve-te no Exercism para aprenderes e dominares Java com 26 conceitos158 exercícios, e mentoria humana real, tudo grátis.