Classes
Une classe est la brique fondamentale de la POO.
C'est un modèle ou un plan définissant :
- Les attributs : les données ou propriétés de l'objet
- Les méthodes : les comportements ou actions que l'objet peut effectuer
En d'autres termes, une classe décrit ce que sont les objets et ce qu'ils peuvent faire.
Les objets sont des instances concrètes d'une classe.
Différence entre classe et objet
| Concept | Définition | Exemple |
|---|---|---|
| Classe | Modèle, définition d'un type | class Voiture |
| Objet | Instance concrète de la classe | maVoiture = new Voiture() |
Une classe peut être vue comme le plan d'un bâtiment, et l'objet comme le bâtiment construit à partir de ce plan.
Structure d'une classe
Une classe contient généralement :
- Attributs (ou propriétés) : entreposent l'état de l'objet
- Méthodes (ou fonctions/méthodes d'instance) : définissent les comportements
- Constructeur : méthode spéciale pour initialiser un objet
- Destructeur : méthode pour libérer des ressources (dans certains langages)
Exemple en pseudo-code
- class Voiture {
- // Attributs
- String marque;
- String modele;
- int annee;
-
- // Constructeur
- Voiture(String marque, String modele, int annee) {
- this.marque = marque;
- this.modele = modele;
- this.annee = annee;
- }
-
- // Méthode
- void demarrer() {
- System.out.println("La voiture démarre");
- }
-
- void afficherInfos() {
- System.out.println("Marque : " + marque + ", Modèle : " + modele + ", Année : " + annee);
- }
- }
Création et utilisation d'objets
- Voiture maVoiture = new Voiture("Toyota", "Corolla", 2020);
- maVoiture.demarrer();
- maVoiture.afficherInfos();
- maVoiture est une instance de la classe Voiture.
- Les méthodes demarrer() et afficherInfos() sont appelées sur l'objet.
Types d'attributs et méthodes
Attributs et méthodes d'instance
- Chaque objet possède ses propres valeurs d'attributs
- Exemple : chaque voiture a sa marque et son modèle
Attributs et méthodes de classe (statics)
- Partagés par tous les objets de la classe
- Exemple :
Modificateurs d'accès
Pour protéger les données et méthodes :
| Modificateur | Accessible depuis |
|---|---|
| public | Partout |
| private | Seulement dans la classe |
| protected | Classe et sous-classes |
La POO recommande de garder les attributs privés et d'utiliser des getters/setters pour y accéder.
Constructeurs et destructeurs
Constructeur
- Méthode spéciale appelée lors de la création d'un objet
- Permet d'initialiser les attributs
Destructeur
- Méthode spéciale pour libérer les ressources
- Utilisé dans des langages comme C++ ou Delphi, moins explicite en Java ou Python
Héritage des classes
- Une classe peut hériter d'une autre classe pour réutiliser ses attributs et méthodes
- Syntaxe Java : class VoitureElectrique extends Voiture. Exemple :
- VoitureElectrique hérite de Voiture et ajoute de nouvelles fonctionnalités.
Encapsulation des classes
- Les classes permettent de regrouper état et comportement
- Protègent les données via private/protected
- Fournissent une interface publique via méthodes publiques
Classes abstraites et interfaces
Classe abstraite
- Ne peut pas être instanciée
- Définit des méthodes abstraites à implémenter dans les sous-classes
Interface
- Déclare des méthodes sans implémentation
- Les classes qui l'implémentent doivent fournir les comportements
Bonnes pratiques pour les classes
- Principe de responsabilité unique (SRP) : une classe = une seule responsabilité
- Encapsulation stricte : préférer private/protected aux attributs publics
- Noms clairs et significatifs pour la classe et ses méthodes
- Favoriser la composition plutôt que trop d'héritage
- Utiliser des interfaces ou classes abstraites pour définir des contrats
Exemple complet d'une classe
- class Etudiant {
- private String nom;
- private int age;
- private double note;
-
- // Constructeur
- Etudiant(String nom, int age, double note) {
- this.nom = nom;
- this.age = age;
- this.note = note;
- }
-
- // Getters / Setters
- public String getNom() { return nom; }
- public void setNom(String nom) { this.nom = nom; }
-
- public double getNote() { return note; }
- public void setNote(double note) { this.note = note; }
-
- // Méthodes
- public void afficher() {
- System.out.println("Nom : " + nom + ", Age : " + age + ", Note : " + note);
- }
- }
-
- // Utilisation
- Etudiant e = new Etudiant("Alice", 20, 18.5);
- e.afficher();
Conclusion
La classe est le cour de la POO.
- Elle permet de modéliser des objets réels ou conceptuels
- Elle encapsule données et comportements
- Elle favorise réutilisation, maintenabilité et évolutivité
- Elle est la base pour l'héritage, l'abstraction et le polymorphisme
Règle d'or : penser d'abord en termes de classes et objets avant de coder.
Dernière mise à jour : Jeudi, le 1er janvier 2026