Session BRE05 Help

Classes et méthodes

Nous avons donc vu qu'une classe pouvait contenir des variables que l'on appelle des attributs. Une classe peut également contenir des fonctions que l'on appelle des méthodes.

Les méthodes de classe

Vous avez déjà vu une méthode, la méthode constructor qui est une sorte de méthode magique fournie par JavaScript qui permet d'utiliser le mot new pour créer une instance d'une classe.

Nous allons maintenant continuer notre exemple des Users et rajouter les fonctions dans notre classe.

Quand nous avions laissé notre classe User elle ressemblait à ceci :

class User { firstName; lastName; grades; constructor(firstName, lastName, grades) { this.firstName = firstName; this.lastName = lastName; this.grades = grades; } }

et notre exemple sous forme de module au début du cours contenait deux fonctions :

export function getUserFullName(user) { return `${user.firstName} ${user.lastName}`; } export function getUserAverage(grades) { let sum = 0; for(let grade of grades) { sum += grade; } return sum / grades.length; }

Nous allons donc placer ces deux fonctions dans notre classe, elles vont devenir des méthodes de la classe :

class User { firstName; lastName; grades; constructor(firstName, lastName, grades) { this.firstName = firstName; this.lastName = lastName; this.grades = grades; } // pas de paramètre puisqu'on renvoie les infos de la classe getUserFullName() { // on remplace le nom du parametre par this return `${this.firstName} ${this.lastName}`; } // pas de paramètre puisqu'on utilise les grades de la classe getUserAverage() { let sum = 0; // grades devient this.grades for(let grade of this.grades) { sum += grade; } return sum / this.grades.length; } }

La classe ci-dessus est parfaitement valable, mais nous pouvons également modifier un peu le nom de nos méthodes. Comme elles sont dans la classe User plus besoin de préciser dans le nom de la fonction qu'elle concerne les users :

  • getUserFullName() devient getFullName()

  • getUserAverage() devient getAverage()

class User { firstName; lastName; grades; constructor(firstName, lastName, grades) { this.firstName = firstName; this.lastName = lastName; this.grades = grades; } // pas de paramètre puisqu'on renvoie les infos de la classe getFullName() { // on remplace le nom du parametre par this return `${this.firstName} ${this.lastName}`; } // pas de paramètre puisqu'on utilise les grades de la classe getAverage() { let sum = 0; // grades devient this.grades for(let grade of this.grades) { sum += grade; } return sum / this.grades.length; } }

Appeler la méthode d'une classe

Pour appeler la méthode d'une classe, on utilise l'opérateur . sur une instance de cette classe :

let mari = new User('Mari', 'Doucet', [10, 12, 11]); console.log(mari.getFullName()); // Affiche "Mari Doucet" console.log(mari.getAverage()); // Affiche la moyenne des notes (11)

Classes et modules

Dans le cours sur les modules je vous avais dit que vous pouviez exporter et importer n'importe quoi : c'est aussi vrai avec les classes :

User.js

export class User { firstName; lastName; grades; constructor(firstName, lastName, grades) { this.firstName = firstName; this.lastName = lastName; this.grades = grades; } // pas de paramètre puisqu'on renvoie les infos de la classe getFullName() { // on remplace le nom du parametre par this return `${this.firstName} ${this.lastName}`; } // pas de paramètre puisqu'on utilise les grades de la classe getAverage() { let sum = 0; // grades devient this.grades for(let grade of this.grades) { sum += grade; } return sum / this.grades.length; } }

index.js

import { User } from './User.js'; let mari = new User('Mari', 'Doucet', [10, 12, 11]); console.log(mari.getFullName()); // Affiche "Mari Doucet" console.log(mari.getAverage()); // Affiche la moyenne des notes (11)
19 January 2026