Objets
Un objet est une instance concrète d'une classe.
Alors que la classe définit un modèle abstrait, l'objet représente une réalité utilisable en mémoire.
Un objet est caractérisé par trois éléments fondamentaux :
- Identité : ce qui le distingue des autres objets
- État : les valeurs de ses attributs à un instant donné
- Comportement : les actions qu'il peut effectuer via ses méthodes
En POO, tout tourne autour des objets et de leurs interactions.
Objet vs classe
| Classe | Objet |
|---|---|
| Modèle | Instance |
| Abstraite | Concrète |
| Définition | Utilisation |
| Une seule définition | Plusieurs instances possibles |
Exemple :
- class Voiture → plan
- maVoiture, taVoiture → objets distincts
Cycle de vie d'un objet
Un objet suit généralement plusieurs étapes :
- Création (instanciation)
- Initialisation
- Utilisation
- Destruction (libération des ressources)
Création d'un objet
Voici un exemple en Java :
- Voiture v = new Voiture("Toyota", "Corolla");
- Allocation mémoire
- Appel du constructeur
- L'objet devient utilisable
Destruction d'un objet
- Automatique (Java, Python : Ramasse-miettes (Garbage Collection))
- Manuelle (C++, Free Pascal, Delphi)
Voici un exemple en Free Pascal :
- Voiture.Free;
État d'un objet
L'état correspond aux valeurs actuelles des attributs.
- solde = 0.0 → état initial
- solde = 150.0 → nouvel état après dépôt
L'encapsulation protège l'état contre des modifications incohérentes.
Comportement d'un objet
Le comportement est défini par les méthodes.
- Le comportement modifie ou consulte l'état
- Les règles métier sont centralisées dans l'objet
Identité d'un objet
Deux objets peuvent avoir le même état mais rester distincts.
- v1 ≠ v2 (identités différentes)
- Même état, mêmes valeurs
Références et objets
En POO moderne, on manipule généralement des références vers des objets.
- Voiture a = new Voiture("BMW", "X3");
- Voiture b = a;
- a et b pointent vers le même objet
- Modifier via b impacte a
Communication entre objets
Les objets communiquent par envoi de messages (appels de méthodes). Voici un exemple en Java :
- client.passerCommande(produit);
Cette communication est la base du fonctionnement d'un système orienté objet.
Objets et encapsulation
Un objet :
- Cache son état interne
- Expose une interface publique
L'extérieur ne connaît pas les détails internes.
Objets et polymorphisme
Un objet peut être manipulé via une référence abstraite.
- Animal a = new Chien();
- a.crier();
- Type de référence : Animal
- Type réel : Chien
Le comportement dépend de l'objet réel.
Objets et héritage
Les objets héritent :
- de l'état
- du comportement
Un objet Chien est aussi un objet Animal.
Objets et composition
La composition consiste à créer des objets à partir d'autres objets.
- Relation has-a
- Permet des architectures flexibles
Objets et interfaces
Les objets peuvent être utilisés via des interfaces.
Le code dépend du comportement, pas de l'implémentation.
Objets dans la conception logicielle
Les objets doivent :
- Avoir une responsabilité claire
- Être autonomes
- Collaborer via des interfaces
- Éviter de connaître trop de détails sur les autres objets
Erreurs fréquentes
- Objets trop gros (God Object)
- Objets avec trop de responsabilités
- Accès direct aux attributs publics
- Logique métier hors des objets
Bonnes pratiques
- Un objet = une responsabilité
- Toujours protéger l'état
- Utiliser des méthodes métier
- Favoriser la composition
- Programmer contre des abstractions
Exemple complet
- class CompteBancaire {
- private double solde;
-
- public CompteBancaire(double soldeInitial) {
- solde = soldeInitial;
- }
-
- public void deposer(double montant) {
- if (montant > 0) solde += montant;
- }
-
- public void retirer(double montant) {
- if (montant <= solde) solde -= montant;
- }
-
- public double getSolde() {
- return solde;
- }
- }
-
- CompteBancaire compte = new CompteBancaire(100);
- compte.deposer(50);
- compte.retirer(30);
- System.out.println(compte.getSolde());
Objets et UML
- Un objet est représenté par : nomObjet:Classe
- Son état peut être montré entre accolades
- Diagrammes d'objets pour représenter une situation précise
Conclusion
Les objets sont le coeur vivant de la POO.
Ils incarnent les concepts du monde réel, encapsulent état et comportement, et collaborent pour former des systèmes complexes mais structurés.
Penser objet, c'est penser responsabilités et interactions, pas uniquement données et fonctions.