Programmation Orientée Objet avec JavaScript Moderne
(â Une Ă©dition spĂ©ciale qui fait tomber amoureux mĂȘme ceux qui disent âLâOOP câest ennuyantâ đ«¶)
Pendant des années, JavaScript se promenait en disant :
« Je suis basĂ© sur les prototypes, je nâai pas de classes, habituez-vous Ă moi comme ça. »
Mais ensuite ES6 est arrivé et lui a dit :
« Personne ne te comprend comme ça. Donnons-toi une vraie structure de classe. »
Et à partir de ce moment-là , les bibliothÚques, frameworks et moteurs de jeu JavaScript sont devenus beaucoup plus organisés.
Aujourdâhui, ensemble, nous allons apprendre :
- Quâest-ce quâune classe ?
- Ă quoi sert le constructor ?
- Que font les méthodes, getters et setters ?
- Comment fonctionne lâhĂ©ritage ?
- Ă quoi sert static ?
- Comment utiliser les champs privés ?
- Comment créer des exemples réalistes (comme des personnages de jeu) ?
- Quels sont les conseils professionnels ?
On va tout apprendre dâune maniĂšre fun, charmante et ultra Ă©ducative.
Allons-y bĂ©bĂ©. đ€đ
đ 1) Quâest-ce quâune Classe ?
(Quand tu comprends ça, tout le reste devient logique)
Une classe = un modÚle pour créer des objets.
Pense Ă une recette avec laquelle tu fais plusieurs gĂąteaux.
Recette â classe
Chaque gĂąteau â instance (objet)
Tu peux créer des objets avec des fonctions en JavaScript,
mais les classes rendent tout :
- Plus organisé
- Plus lisible
- Plus orienté objet
- Plus professionnel
đ§ Une classe simple :
class Player {
constructor(name, level) {
this.name = name;
this.level = level;
}
}
Mais câest trop basiqueâŠ
On va le turbo-charger. đš
đ 2) constructor() : La Naissance de lâObjet
Le constructor = la fonction qui sâexĂ©cute au moment oĂč lâobjet naĂźt.
Il :
- Définit les valeurs par défaut
- Initialise les propriétés
- CrĂ©e lâidentitĂ© de lâobjet
Exemple :
class Player {
constructor(name, level = 1, hp = 100) {
this.name = name;
this.level = level;
this.hp = hp;
}
}
const hero = new Player("Cansu", 42);
console.log(hero);
đĄ Astuce Pro :
Tu dois utiliser this dans un constructor.
this â reprĂ©sente le nouvel objet créé.
Si tu demandes « Mais câest qui this ? »,
câest comme la main qui tient ton café⊠mais dans le code đ
đ 3) MĂ©thodes : Les Super-Pouvoirs de lâObjet
Une méthode = une fonction définie dans une classe.
Pense Ă un personnage de jeu :
Il a des capacités comme :
- attack()
- run()
- speak()
- castSpell()
Ce sont des méthodes.
Exemple :
class Player {
constructor(name, level) {
this.name = name;
this.level = level;
}
greet() {
console.log(`Salut ! Je suis ${this.name}, niveau ${this.level} đ„`);
}
}
Chaque joueur peut parler dĂšs sa naissance. Trop mignon đ
đĄ Astuce Pro :
Les méthodes sont stockées une seule fois en mémoire, ce qui est trÚs efficace.
đ 4) HĂ©ritage :
« Qui es-tu mon fils ? Je suis ta classe ancĂȘtre ! »
Certaines classes veulent rĂ©cupĂ©rer les fonctionnalitĂ©s dâautres classes.
Exemple :
Animal â Dog
Chaque chien est un animal
Les animaux peuvent respirer
Les chiens peuvent respirer et aboyer
class Animal {
breathe() {
console.log("Je respire...");
}
}
class Dog extends Animal {
bark() {
console.log("Ouaf ouaf ! đ¶");
}
}
const dog = new Dog();
dog.breathe();
dog.bark();
đĄ Astuce Pro :
LâhĂ©ritage = une Ă©pĂ©e magique qui tue le code dupliquĂ© dans les grands projets.
đ 5) super() :
Le moment oĂč tu dois appeler ton pĂšre
Une classe enfant utilise super() pour accéder au constructor du parent.
class Character {
constructor(name) {
this.name = name;
}
}
class Mage extends Character {
constructor(name, mana) {
super(name);
this.mana = mana;
}
}
super â comme un enfant riche qui accĂšde au compte bancaire de son pĂšre đ
đ 6) Getter & Setter : Les Portes de SĂ©curitĂ© des DonnĂ©es
Getter â intercepte la lecture
Setter â intercepte la modification
Cela permet :
- De formater les données
- De valider les entrées
- DâĂ©viter les erreurs
class Player {
constructor(name) {
this._name = name;
}
get name() {
return this._name.toUpperCase();
}
set name(newName) {
if (newName.length < 2) {
throw new Error("Nom trop court");
}
this._name = newName;
}
}
const p = new Player("Cansu");
console.log(p.name);
p.name = "Queen";
console.log(p.name);
đ 7) MĂ©thodes Static :
Les fonctions qui nâont pas besoin dâobjet
class MathUtils {
static square(x) {
return x * x;
}
}
console.log(MathUtils.square(8));
Utilisation :
- Fonctions utilitaires
- Calculs
- Formatage
đ 8) Champs PrivĂ©s (#) :
Des secrets bien cachés
Avec ES2022, tu peux créer de vrais champs privés :
- Inaccessibles depuis lâextĂ©rieur
- Sécurisés
- Parfaits pour les données sensibles
class Bank {
#balance = 1000;
showBalance() {
console.log(`Solde : ${this.#balance}âș`);
}
}
acc.#balance â â erreur !
đ 9) Mini Projet RĂ©aliste :
SystĂšme de Personnages RPG
class Character {
constructor(name, strength, hp) {
this.name = name;
this.strength = strength;
this.hp = hp;
}
attack() {
console.log(`${this.name} attaque avec une force de ${this.strength} đ„`);
}
status() {
console.log(`${this.name} | Force : ${this.strength} | HP : ${this.hp}`);
}
}
class Mage extends Character {
constructor(name, strength, hp, mana) {
super(name, strength, hp);
this.mana = mana;
}
castSpell() {
console.log(`${this.name} lance un sort ! âš Mana : ${this.mana}`);
}
}
class Warrior extends Character {
constructor(name, strength, hp, armor) {
super(name, strength, hp);
this.armor = armor;
}
defend() {
console.log(`${this.name} se dĂ©fend avec une armure de ${this.armor} đĄïž`);
}
}
const merlin = new Mage("Merlin", 50, 80, 120);
const thor = new Warrior("Thor", 80, 200, 50);
merlin.castSpell();
thor.defend();
merlin.attack();
thor.status();
Tu peux déjà faire un mini-jeu avec cette structure.
đ 10) Conseils Professionnels
đ„ 1. Garde les classes petites
Une classe = une seule responsabilité.
đ„ 2. Utilise les champs privĂ©s (#)
Pour tout ce qui touche aux données sensibles.
đ„ 3. Utilise les mĂ©thodes static pour les utilitaires
Ton code deviendra merveilleusement propre.
đ„ 4. Ne surcharge pas lâhĂ©ritage
La composition est parfois meilleure.
đ„ 5. Pas de fonctions flĂ©chĂ©es dans les classes
Elles détruisent le binding de this.
đ Conclusion :
Tu es maintenant un·e maßtre des Classes JS, bébé !
Tu sais :
â comprendre les classes modernes
â utiliser lâhĂ©ritage
â Ă©crire getters & setters
â utiliser les champs privĂ©s
â construire des exemples professionnels
Tu es officiellement un·e sorcier·Úre JavaScript de haut niveau đ§ââïžâš

