Pour créer une instance d'une classe, on appelle son constructeur à l'aide de l'opérateur new. Un constructeur est un type particulier de méthode dont le but est d'initialiser une instance nouvellement créée. Les constructeurs ressemblent aux méthodes ordinaires, mais sans type de retour et avec un nom qui correspond à celui de la classe.
class Library
{
private int books;
public Library()
{
// Initialize the books field
this.books = 10;
}
}
// This will call the constructor
var library = new Library();
Comme les méthodes ordinaires, les constructeurs peuvent prendre des paramètres. Les paramètres d'un constructeur sont généralement stockés dans des champs (privés) pour être utilisés plus tard, ou bien servent à un calcul ponctuel. On peut passer des arguments à un constructeur, exactement comme on passe des arguments à une méthode ordinaire.
class Building
{
private int numberOfStories;
private int totalHeight;
public Building(int numberOfStories, double storyHeight)
{
this.numberOfStories = numberOfStories;
this.totalHeight = numberOfStories * storyHeight;
}
}
// Call a constructor with two arguments
var largeBuilding = new Building(55, 6.2)
Dans cet exercice, tu vas organiser des courses entre différents types de voitures télécommandées. Chaque voiture a ses propres caractéristiques de vitesse et de décharge de batterie.
Les voitures démarrent avec une batterie pleine (100 %). Chaque fois que tu conduis la voiture avec la télécommande, elle avance d'un nombre de mètres égal à la vitesse de la voiture et réduit le pourcentage de batterie restant de sa décharge de batterie.
Si le niveau de batterie d'une voiture est inférieur à son pourcentage de décharge, tu ne peux plus conduire la voiture.
Chaque circuit a sa propre distance. On teste les voitures en vérifiant si elles peuvent terminer le circuit sans épuiser leur batterie.
Tu as six tâches, chacune portant sur des instances de voiture télécommandée.
Pour pouvoir créer une voiture télécommandée, définis un constructeur pour la classe RemoteControlCar qui prend en paramètres la vitesse de la voiture en mètres et le pourcentage de décharge de la batterie (tous deux de type int) :
int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);
Pour créer un circuit, définis un constructeur pour la classe RaceTrack qui prend comme unique paramètre la distance du circuit en mètres (de type int) :
int distance = 800;
var raceTrack = new RaceTrack(distance);
Implémente la méthode RemoteControlCar.Drive() qui met à jour le nombre de mètres parcourus en fonction de la vitesse de la voiture. Implémente aussi la méthode RemoteControlCar.DistanceDriven() qui renvoie le nombre de mètres parcourus par la voiture :
int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);
car.Drive();
car.DistanceDriven();
// => 5
Mets à jour la méthode RemoteControlCar.Drive() pour qu'elle décharge la batterie en fonction de la décharge de la voiture. Implémente aussi la méthode RemoteControlCar.BatteryDrained() qui indique si la batterie est déchargée :
int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);
car.Drive();
car.BatteryDrained();
// => false
La voiture télécommandée la plus vendue est la Nitro, dont la vitesse de pointe impressionnante atteint 50 mètres pour une décharge de batterie de 4 %. Implémente la méthode (statique) RemoteControlCar.Nitro() qui renvoie ce type de voiture :
var car = RemoteControlCar.Nitro();
car.Drive();
car.DistanceDriven();
// => 50
Pour terminer un circuit, une voiture doit pouvoir parcourir la distance du circuit, ce qui signifie qu'elle ne doit pas épuiser sa batterie avant d'avoir franchi la ligne d'arrivée. Implémente la méthode RaceTrack.TryFinishTrack() qui prend en paramètre une instance de RemoteControlCar et renvoie true si la voiture peut terminer le circuit, sinon false :
int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);
int distance = 100;
var raceTrack = new RaceTrack(distance);
raceTrack.TryFinishTrack(car);
// => true
Inscris-toi sur Exercism pour apprendre et maîtriser C# avec 62 concepts178 exercices, et un vrai mentorat humain, le tout gratuitement.