La POO est une méthode de programmation qui organise le code autour d’objets, qui modélisent des entités du monde réel (une personne, une voiture, un produit, un utilisateur).
Analogie :
Une voiture (objet) a des caractéristiques (couleur, marque = attributs) et des comportements (démarrer, freiner = méthodes).
Les 4 piliers de la POO
| Pilier | Ce que ça signifie |
|---|---|
| 1. Classe | Modèle / « moule » qui définit la structure d’un objet (ses attributs et méthodes). |
| 2. Objet | Instance concrète d’une classe (ex. : voiture1 = new Voiture()). |
| 3. Encapsulation | Protection des données internes : on cache le fonctionnement interne et on contrôle l’accès. |
| 4. Héritage | Permet à une classe d’hériter des attributs/méthodes d’une autre. |
Structure d’une classe en PHP
class Utilisateur {
// Attributs (données de l'objet)
private string $nom;
private int $age;
// Constructeur : initialise l'objet à sa création
public function __construct(string $nom, int $age) {
$this->nom = $nom;
$this->age = $age;
}
// Getter : permet de LIRE une propriété privée
public function getNom(): string {
return $this->nom;
}
// Setter : permet de MODIFIER une propriété privée (avec contrôle)
public function setAge(int $age): void {
if ($age >= 0 && $age <= 150) {
$this->age = $age;
} else {
throw new Exception("Âge invalide");
}
}
}
Visibilité : private vs public
| Mot-clé | Accès | Usage recommandé |
|---|---|---|
private | Seulement à l’intérieur de la classe | Pour les données sensibles ou internes → garantit l’encapsulation |
public | Depuis n’importe où (extérieur, autres classes) | Pour les méthodes d’interface (ex. : getNom(), setAge()) |
Pourquoi private ?
→ Évite que le code extérieur modifie les données sans contrôle (ex. : âge négatif, email invalide).
→ Permet de changer l’implémentation interne sans casser le code qui utilise l’objet.
Getters et Setters : les « portes contrôlées »
- Getter = méthode publique pour lire une propriété privée.
→ Ex. :getNom()→ renvoie$this->nom - Setter = méthode publique pour modifier une propriété privée, souvent avec validation.
→ Ex. :setAge(25)→ vérifie que 25 est valide avant d’affecter
Bonnes pratiques :
- Ne pas rendre les attributs
public(sauf cas très simple). - Utiliser des setters pour valider, formater ou déclencher des actions (ex. : log, mise à jour).
- Dans certains langages (Python, JavaScript), les getters/setters peuvent être automatisés ou implicites.
Exemple concret d’usage
$util = new Utilisateur("Agnès", 30);
echo $util->getNom(); // "Agnès"
$util->setAge(-5); // déclenche une erreur (grâce au contrôle dans le setter)
Pourquoi la POO ?
- Modularité : chaque objet est autonome.
- Réutilisabilité : on réutilise les classes.
- Maintenabilité : les modifications restent locales.
- Sécurité : grâce à l’encapsulation (
private+ getters/setters).
Attention aux excès
- Ne pas créer des getters/setters pour tout, sans logique → ça casse l’encapsulation !
- La POO n’est pas toujours nécessaire pour de petits scripts ou traitements simples (ex. : automatisation Python).
Explorer les thématiques : langage de programmation, Développement & technologies