Rutas
/
C#
C#
/
Ejercicios
/
Los juguetes de Jedlik
Los juguetes de Jedlik

Los juguetes de Jedlik

Ejercicio de aprendizaje

Introducción

Clases

El principal constructo orientado a objetos de C# es la clase, que combina datos (campos) y comportamiento (métodos). Los campos y los métodos de una clase se conocen como sus miembros.

El acceso a los miembros puede restringirse mediante modificadores de acceso, de los cuales los dos más comunes son:

  • public: se puede acceder al miembro desde cualquier código (sin restricciones).
  • private: solo se puede acceder al miembro desde 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 usa la palabra clave new:

class Car
{
}

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

Los campos tienen un tipo y pueden definirse en cualquier parte de una clase. Los campos públicos se definen en PascalCase y los privados en camelCase y van precedidos de un guion bajo _:

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 predeterminado de su tipo. Se puede acceder a los valores de los campos de una instancia y actualizarlos mediante 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;
}

var 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 estar jugando con un coche teledirigido, para el que por fin has ahorrado suficiente dinero.

Los coches empiezan con la batería llena (100 %). Cada vez que conduces el coche con el mando a distancia, recorre 20 metros y consume un 1 % de la batería.

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

  • La distancia total recorrida, mostrada como: "Driven <METERS> meters".
  • La carga restante de la batería, 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, cada una de las cuales trabajará con instancias de coche teledirigido.

1. Compra un coche teledirigido nuevo

Implementa el método (estático) RemoteControlCar.Buy() para que devuelva una instancia nueva de coche teledirigido:

RemoteControlCar car = RemoteControlCar.Buy();

2. Muestra la distancia recorrida

Implementa el método RemoteControlCar.DistanceDisplay() para que devuelva la distancia tal como se muestra en la pantalla LED:

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

3. Muestra el porcentaje de batería

Implementa el método RemoteControlCar.BatteryDisplay() para que devuelva el porcentaje de batería tal como se muestra en la pantalla LED:

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

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

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

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

5. Actualiza el porcentaje de batería al conducir

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

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

6. Impide conducir cuando la batería esté agotada

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

var car = RemoteControlCar.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
C# Exercism

¿Listo para empezar Los juguetes de Jedlik?

Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.