Rutas
/
Java
Java
/
Ejercicios
/
El coche de juguete de Jedlik
El coche de juguete de Jedlik

El coche de juguete de Jedlik

Ejercicio de aprendizaje

Introducción

Clases

La principal construcción orientada a objetos en Java es la clase, que es una combinación de datos (campos) y comportamiento (métodos). Los campos y los métodos de una clase se conocen como sus miembros.

Se puede controlar el acceso a los miembros mediante modificadores de acceso, y los dos más habituales son:

  • public: cualquier código puede acceder al miembro (sin restricciones).
  • private: solo puede acceder al miembro el código de la misma clase.

Puedes pensar en una clase como una plantilla para crear instancias de esa clase. Para crear una instancia de una clase (también conocida como objeto), se utiliza la palabra clave new:

class Car {
}

// Create two car instances
Car myCar = new Car();
Car yourCar = new Car();

Los campos tienen un tipo y un nombre (definido en camelCase) y se pueden definir en cualquier parte de una clase (por convención, en PascalCase):

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

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

Opcionalmente, se puede asignar un valor inicial a un campo. Si un campo no especifica un valor inicial, se le asignará el valor por defecto de su tipo. Se puede acceder a los valores de los campos de una instancia y actualizarlos con la notación de punto.

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;

Los campos privados suelen actualizarse como efecto secundario de llamar a un método. Normalmente, estos métodos no devuelven ningún valor, en cuyo caso el tipo devuelto debe ser void:

class CarImporter {
    private int carsImported;

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

Instrucciones

En este ejercicio vas a trastear con un coche teledirigido, para el que por fin has ahorrado suficiente dinero como para comprarlo.

Los coches empiezan con las baterías llenas (100%). Cada vez que conduces el coche con el mando a distancia, recorre 20 metros y gasta un uno por ciento de la batería.

El coche teledirigido tiene una sofisticada pantalla LED que muestra dos datos:

  • La distancia total que ha recorrido, mostrada como: "Driven <METERS> meters".
  • La carga de batería restante, mostrada como: "Battery at <PERCENTAGE>%".

Si la batería está al 0%, ya no puedes conducir el coche y la pantalla de la batería mostrará "Battery empty".

Tienes seis tareas, y cada una trabajará con instancias de coche teledirigido.

1. Compra un coche teledirigido nuevo

Implementa el método (estático) JedliksToyCar.buy() para devolver una instancia nueva de coche teledirigido:

JedliksToyCar car = JedliksToyCar.buy();

2. Muestra la distancia recorrida

Implementa el método JedliksToyCar.distanceDisplay() para devolver la distancia tal y como se muestra en la pantalla LED:

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

3. Muestra el porcentaje de batería

Implementa el método JedliksToyCar.batteryDisplay() para devolver el porcentaje de batería tal y como se muestra en la pantalla LED:

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

4. Actualiza el número de metros recorridos al conducir

Implementa el método JedliksToyCar.drive() que actualiza el número de metros recorridos:

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

5. Actualiza el porcentaje de batería al conducir

Actualiza el método JedliksToyCar.drive() para que actualice el porcentaje de batería:

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

6. Evita conducir cuando la batería se ha agotado

Actualiza el método JedliksToyCar.drive() para que no aumente la distancia recorrida ni disminuya el porcentaje de batería cuando la batería esté agotada (al 0%):

JedliksToyCar car = JedliksToyCar.buy();

// Drain the battery
// ...

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

car.batteryDisplay();
// => "Battery empty"
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Java Exercism

¿Listo para empezar El coche de juguete de Jedlik?

Regístrate en Exercism para aprender y dominar Java con 26 conceptos158 ejercicios y mentoría humana real, todo gratis.