đŸŽ© Les Classes JavaScript

đŸŽ© Les Classes JavaScript

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 đŸ§™â€â™€ïžâœš

Comments

No comments yet. Why don’t you start the discussion?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile ißaretlenmißlerdir