On crée une instance d'une classe en appelant son constructeur avec l'opérateur new.
Un constructeur est un type particulier de méthode dont le rôle est d'initialiser une instance fraîchement créée.
Les constructeurs ressemblent à des méthodes ordinaires, mais sans type de retour et avec un nom identique à 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 consultés plus tard, ou bien utilisés dans 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 consommation de batterie.
Les voitures démarrent avec une batterie pleine (100 %). Chaque fois que tu conduis la voiture avec la télécommande, elle parcourt un nombre de mètres égal à la vitesse de la voiture, et le pourcentage de batterie restant diminue de sa consommation de batterie.
Si la batterie d'une voiture est inférieure à son pourcentage de consommation de batterie, on ne peut plus la conduire.
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, et chacune d'elles travaille avec des instances de voiture télécommandée.
Permets de créer une voiture télécommandée en définissant un constructeur pour la classe NeedForSpeed, qui prend en paramètres la vitesse de la voiture en mètres et le pourcentage de consommation de batterie (tous deux de type int) :
int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
Permets de créer un circuit en définissant 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 NeedForSpeed.drive() qui met à jour le nombre de mètres parcourus en fonction de la vitesse de la voiture. Implémente aussi la méthode NeedForSpeed.distanceDriven() qui renvoie le nombre de mètres parcourus par la voiture :
int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
car.drive();
car.distanceDriven();
// => 5
Modifie la méthode NeedForSpeed.drive() pour qu'elle décharge la batterie en fonction de la consommation de batterie de la voiture. Implémente aussi la méthode NeedForSpeed.batteryDrained() qui indique si la batterie est trop déchargée pour conduire :
int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
car.drive();
car.batteryDrained();
// => false
La voiture télécommandée la plus vendue est la Nitro, qui atteint une vitesse de pointe impressionnante de 50 mètres, avec une consommation de batterie de 4 %. Implémente la méthode (statique) NeedForSpeed.nitro() qui renvoie ce type de voiture :
var car = NeedForSpeed.nitro();
car.drive();
car.distanceDriven();
// => 50
Pour terminer une course, une voiture doit pouvoir parcourir la distance de la course. Cela signifie qu'elle ne doit pas décharger sa batterie avant d'avoir franchi la ligne d'arrivée. Implémente la méthode RaceTrack.canFinishRace() qui prend en paramètre une instance de NeedForSpeed et renvoie true si la voiture peut terminer la course ; sinon, elle renvoie false :
int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
int distance1 = 100;
var race1 = new RaceTrack(distance1);
int distance2 = 300;
var race2 = new RaceTrack(distance2);
race1.canFinishRace(car);
// => true
race2.canFinishRace(car);
// => false
Inscris-toi sur Exercism pour apprendre et maîtriser Java avec 26 concepts158 exercices, et un vrai mentorat humain, le tout gratuitement.