Parcours
/
C#
C#
/
Exercices
/
Les jouets de Jedlik
Les jouets de Jedlik

Les jouets de Jedlik

Exercice d'apprentissage

Introduction

Classes

La principale construction orientée objet en C# est la classe, qui combine des données (champs) et un comportement (méthodes). Les champs et les méthodes d'une classe sont appelés ses membres.

L'accès aux membres peut être restreint au moyen de modificateurs d'accès, les deux plus courants étant :

  • public : le membre est accessible depuis n'importe quel code (aucune restriction).
  • private : le membre n'est accessible que depuis le code de la même classe.

Tu peux voir une classe comme un modèle servant à créer des instances de cette classe. Pour créer une instance d'une classe (aussi appelée objet), on utilise le mot-clé new :

class Car
{
}

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

Les champs ont un type et peuvent être définis n'importe où dans une classe. Les champs publics sont définis en PascalCase et les champs privés en camelCase, précédés d'un underscore (_) :

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

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

On peut éventuellement affecter une valeur initiale à un champ. Si un champ ne spécifie pas de valeur initiale, il prend la valeur par défaut de son type. On peut lire et mettre à jour les valeurs des champs d'une instance à l'aide de la notation pointée.

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;

Les champs privés sont généralement mis à jour comme effet de bord de l'appel d'une méthode. De telles méthodes ne renvoient généralement aucune valeur, auquel cas le type de retour doit être void :

class CarImporter
{
    private int _carsImported;

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

Instructions

Dans cet exercice, tu vas jouer avec une voiture télécommandée, que tu as enfin les moyens de t'offrir après avoir économisé.

Les voitures démarrent avec une batterie pleine (100 %). Chaque fois que tu fais avancer la voiture avec la télécommande, elle parcourt 20 mètres et consomme un pour cent de la batterie.

La voiture télécommandée possède un bel écran LED qui affiche deux informations :

  • La distance totale parcourue, affichée sous la forme : "Driven <METERS> meters".
  • La charge restante de la batterie, affichée sous la forme : "Battery at <PERCENTAGE>%".

Si la batterie est à 0 %, tu ne peux plus conduire la voiture et l'affichage de la batterie indique "Battery empty".

Tu as six tâches, chacune portant sur des instances de voiture télécommandée.

1. Achète une toute nouvelle voiture télécommandée

Implémente la méthode (static) RemoteControlCar.Buy() pour renvoyer une toute nouvelle instance de voiture télécommandée :

RemoteControlCar car = RemoteControlCar.Buy();

2. Affiche la distance parcourue

Implémente la méthode RemoteControlCar.DistanceDisplay() pour renvoyer la distance telle qu'elle est affichée sur l'écran LED :

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

3. Affiche le pourcentage de batterie

Implémente la méthode RemoteControlCar.BatteryDisplay() pour renvoyer le pourcentage de batterie tel qu'il est affiché sur l'écran LED :

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

4. Mets à jour le nombre de mètres parcourus quand tu conduis

Implémente la méthode RemoteControlCar.Drive() qui met à jour le nombre de mètres parcourus :

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

5. Mets à jour le pourcentage de batterie quand tu conduis

Modifie la méthode RemoteControlCar.Drive() pour qu'elle mette à jour le pourcentage de batterie :

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

6. Empêche de conduire quand la batterie est vide

Modifie la méthode RemoteControlCar.Drive() pour qu'elle n'augmente pas la distance parcourue et ne diminue pas le pourcentage de batterie lorsque la batterie est vide (à 0 %) :

var car = RemoteControlCar.Buy();

// Drain the battery
// ...

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

car.BatteryDisplay();
// => "Battery empty"
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
C# Exercism

Prêt à commencer Les jouets de Jedlik ?

Inscris-toi sur Exercism pour apprendre et maîtriser C# avec 62 concepts178 exercices, et un vrai mentorat humain, le tout gratuitement.