6.1 Constructeurs de classes
Les constructeurs et les méthodes des classes sont des éléments fondamentaux de la programmation orientée objet en JavaScript. Ils permettent de créer et d'initialiser des objets, ainsi que de définir leur comportement. Voyons comment fonctionnent les constructeurs et les méthodes des classes et comment les utiliser.
Qu'est-ce qu'un constructeur ?
Un constructeur est une méthode spéciale d'une classe qui est appelée lors de la création d'une nouvelle instance de la classe. Il est utilisé pour initialiser un objet, définir les valeurs de ses propriétés et effectuer d'autres tâches initiales.
Définition d'un constructeur
Le constructeur est défini à l'aide du mot-clé constructor
. À l'intérieur du constructeur, le mot-clé this
permet
d'accéder aux propriétés et méthodes de l'objet.
Syntaxe :
class ClassName {
constructor(paramètres) {
// Initialisation de l'objet
}
}
Exemple :
Dans la classe Person
, la méthode constructor
prend deux paramètres : name
et age
.
Ces paramètres sont utilisés pour initialiser les propriétés name
et age
de l'objet créé.
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
const person1 = new Person('Alice', 30);
const person2 = new Person('Bob', 25);
console.log(person1.name); // Affichera: Alice
console.log(person2.age); // Affichera: 25
Constructeur par défaut
Si le constructeur n'est pas explicitement défini, JavaScript crée automatiquement un constructeur par défaut vide.
Exemple :
class Animal {}
const animal = new Animal();
console.log(animal); // Affichera le contenu de la classe Animal {}
4.2 Méthodes des classes
Les méthodes des classes sont définies à l'intérieur du corps de la classe et fournissent des fonctionnalités aux objets créés par cette classe. Les méthodes sont automatiquement ajoutées au prototype de la classe, permettant ainsi à toutes les instances de la classe de les hériter et de les utiliser.
Syntaxe :
class ClassName {
constructor(paramètres) {
// Initialisation de l'objet
}
méthode1() {
// Corps de la méthode
}
méthode2() {
// Corps de la méthode
}
}
Exemple :
class Car {
constructor(brand, model) {
this.brand = brand;
this.model = model;
this.mileage = 0;
}
drive(distance) {
this.mileage += distance;
console.log(`${this.brand} ${this.model} drove ${distance} miles. Total mileage: ${this.mileage}`);
}
getDetails() {
return `${this.brand} ${this.model}, Mileage: ${this.mileage}`;
}
}
const myCar = new Car('Toyota', 'Camry');
myCar.drive(50); // "Toyota Camry drove 50 miles. Total mileage: 50"
console.log(myCar.getDetails()); // "Toyota Camry, Mileage: 50"
Explication :
- Dans la classe
Car
, deux méthodes sont définies :drive()
etgetDetails()
- La méthode
drive()
augmente le kilométrage de la voiture et affiche des informations sur la distance parcourue - La méthode
getDetails()
renvoie une chaîne d'informations sur la voiture
6.3 Méthodes privées
Avec l'introduction des nouvelles spécifications ECMAScript, il est désormais possible de créer des méthodes et des propriétés privées qui ne sont pas accessibles en dehors de la classe. Pour cela, le symbole # est utilisé comme partie du nom.
Exemple de méthodes et propriétés privées :
class BankAccount {
#balance = 0;
constructor(initialBalance) {
this.#balance = initialBalance;
}
#validateAmount(amount) {
if (amount <= 0) {
throw new Error('Amount must be positive.');
}
}
deposit(amount) {
this.#validateAmount(amount);
this.#balance += amount;
console.log(`Deposited ${amount}. New balance: ${this.#balance}`);
}
withdraw(amount) {
this.#validateAmount(amount);
if (amount > this.#balance) {
throw new Error('Insufficient funds.');
}
this.#balance -= amount;
console.log(`Withdrew ${amount}. New balance: ${this.#balance}`);
}
getBalance() {
return this.#balance;
}
}
const account = new BankAccount(100);
account.deposit(50); // Affichera: Deposited 50. New balance: 150
account.withdraw(30); // Affichera: Withdrew 30. New balance: 120
console.log(account.getBalance()); // Affichera: 120
// Tenter d'accéder à une méthode ou une propriété privée entraînera une erreur
account.#balance; // SyntaxError
account.#validateAmount(50); // SyntaxError
GO TO FULL VERSION