Jour 1 — Le moule et le gâteau

L’analogie
Un moule à gâteau ne se mange pas — c’est juste un plan, une forme, une définition de ce que l’on veut fabriquer.
Ce que tu manges, ce sont les gâteaux que ce moule permet de fabriquer, autant que tu veux. Chaque gâteau obtenu est ensuite un élément indépendant.
Par exemple, tu peux utiliser exactement le même moule pour fabriquer trois gâteaux :
- le premier avec du sucre glace ;
- le deuxième avec du chocolat ;
- le troisième avec du glaçage et des décorations.
Ils ont tous la même forme de base, car ils proviennent du même moule, mais ils peuvent avoir des caractéristiques différentes.
Et surtout, ils sont indépendants.
Si tu casses le premier gâteau, les deux autres restent intacts sur la table.
Le moule, lui, n’est pas détruit. Il peut toujours servir à fabriquer d’autres gâteaux.
À retenir
- Le moule représente la définition générale.
- Les gâteaux représentent les objets créés à partir de cette définition.
- Tous les gâteaux peuvent avoir la même structure de base.
- Chaque gâteau possède ensuite son propre état.
- Modifier ou supprimer un gâteau n’affecte pas les autres.
- On peut créer autant de gâteaux que nécessaire à partir du même moule.
Techniquement
En programmation orientée objet (POO), une classe joue le rôle du moule.
Elle définit :
- la structure de l’objet, avec ses propriétés ;
- son comportement, avec ses méthodes.
Prenons une classe Order qui représente une commande :
class Order
{
private int $id;
private string $status;
public function markAsPaid(): void
{
$this->status = 'paid';
}
}
Ici, Order est la classe.
Elle ne représente pas encore une commande concrète. Elle décrit simplement ce qu’est une commande et ce qu’elle peut faire.
On peut donc la comparer au moule.
L’instance ou l’objet
Pour créer une véritable commande à partir de cette classe, on utilise new :
$order1 = new Order();
$order1 est alors une instance de la classe Order.
On peut également dire que $order1 est un objet.
On peut créer plusieurs objets à partir de la même classe :
$order1 = new Order();
$order2 = new Order();
$order3 = new Order();
Nous avons maintenant trois instances différentes de Order.
On peut les comparer aux trois gâteaux fabriqués avec le même moule.
Plusieurs instances, plusieurs états
Même si $order1, $order2 et $order3 proviennent de la même classe, ils ne représentent pas le même objet.
Chaque instance possède son propre état.
On peut donc avoir, par exemple :
$order1 → commande 101 → pending
$order2 → commande 102 → paid
$order3 → commande 103 → cancelled
La classe Order est la même, mais les données de chaque objet sont différentes.
C’est exactement comme trois gâteaux fabriqués avec le même moule :
Même moule
│
├──> Gâteau 1 → sucre glace
├──> Gâteau 2 → chocolat
└──> Gâteau 3 → glaçage
Exemple concret en PHP
class Order
{
private int $id;
private string $status;
public function markAsPaid(): void
{
$this->status = 'paid';
}
}
Puis :
$order1 = new Order();
$order2 = new Order();
$order3 = new Order();
Ces trois variables font référence à trois objets différents.
Si une méthode modifie $order1 :
$order1->markAsPaid();
cela modifie l’état de $order1.
Cela ne signifie pas que $order2 et $order3 deviennent automatiquement paid.
Ils restent des instances distinctes.
Le point important
Il faut bien distinguer la classe et l’instance.
La classe
La classe est la définition.
class Order
{
// propriétés
// méthodes
}
Elle décrit ce qu’un objet Order possède et sait faire.
L’instance
L’instance est un objet concret créé à partir de la classe.
$order = new Order();
Order est la classe.
$order est une instance de cette classe.
Une analogie encore plus précise
On peut également comparer cela à un plan architectural.
Le plan d’une maison indique :
- combien il y a de pièces ;
- où se trouvent les portes ;
- où se trouvent les fenêtres ;
- comment la maison est structurée.
Mais le plan n’est pas une maison réelle.
À partir du même plan, on peut construire plusieurs maisons.
CLASSE
"Plan de maison"
│
┌────────┼────────┐
↓ ↓ ↓
Objet 1 Objet 2 Objet 3
Maison A Maison B Maison C
Les trois maisons suivent le même plan, mais chacune est une construction distincte.
En résumé
Classe
↓
Définition / modèle / moule
↓
new Order()
↓
Instance / objet concret
On peut créer autant d’instances que nécessaire :
$order1 = new Order();
$order2 = new Order();
$order3 = new Order();
Et chacune possède sa propre identité et son propre état.
💡 Idée clé
La classe est le moule. L’instance est le gâteau.
La classe définit la structure et le comportement.
L’instance représente un objet concret, avec ses propres données et son propre état.
Deux objets peuvent provenir de la même classe sans être le même objet.