Méthodes
Une méthode est une fonction définie à l'intérieur d'une classe.
Elle décrit le comportement d'un objet et agit généralement sur ses attributs.
En POO, les méthodes sont le moyen principal d'interaction avec les objets.
Rôle fondamental des méthodes
Les méthodes permettent de :
- Manipuler l'état des objets
- Appliquer les règles métier
- Garantir la cohérence des données
- Masquer l'implémentation interne
- Permettre le polymorphisme
Méthodes vs fonctions procédurales
| Fonction | Méthode |
|---|---|
| Indépendante | Appartient à une classe |
| Travaille sur des paramètres | Travaille sur un objet |
| Pas de notion d'état | Accès aux attributs |
| Logique dispersée | Logique encapsulée |
Structure d'une méthode
Syntaxe générique :
|
modificateur typeRetour nomMethode(paramètres) { instructions; return valeur; } |
Signature d'une méthode
La signature comprend :
- Nom de la méthode
- Nombre de paramètres
- Types des paramètres
- Ordre des paramètres
Le type de retour ne fait pas partie de la signature.
Méthodes d'instance
Les méthodes d'instance :
- S'appliquent à un objet précis
- Accèdent aux attributs via this
Méthodes de classe (statique)
- Appartiennent à la classe
- Ne dépendent pas d'un objet
Méthodes et encapsulation
Les méthodes sont la porte d'entrée contrôlée vers les attributs.
On n'expose jamais l'état brut.
Méthodes mutatrices vs accesseurs
| Type | Rôle |
|---|---|
| Getter | Lire l'état |
| Setter | Modifier l'état |
| Méthode métier | Appliquer une règle |
Méthodes avec paramètres
Passage par valeur / référence :
- Types primitifs → valeur
- Objets → référence (ou pointeur logique)
- void changerNom(Utilisateur u) {
- u.setNom("Paul");
- }
Surcharge de méthodes (Overloading)
Plusieurs méthodes de même nom, signatures différentes.
Résolution à la compilation.
Redéfinition (Override)
Une sous-classe modifie le comportement hérité.
Résolution à l'exécution (polymorphisme).
Méthodes abstraites
Méthodes sans implémentation :
Oblige les sous-classes à implémenter le comportement.
Méthodes finales
- Ne peuvent pas être redéfinies
- Garantissent un comportement stable
Visibilité des méthodes
| Modificateur | Accès |
|---|---|
| private | Classe uniquement |
| protected | Classe + héritage |
| public | Partout |
Méthodes et polymorphisme
- Animal a = new Chien();
- a.crier();
- Appel dynamique
- Basé sur le type réel de l'objet
Méthodes et interfaces
Favorise la flexibilité.
Méthodes récursives
Une méthode peut s'appeler elle-même.
Méthodes et exceptions
Méthodes et SOLID
- S : une méthode = une responsabilité
- O : extension via override
- L : respect du contrat
- I : interfaces spécifiques
- D : dépendre d'abstractions
Bonnes pratiques
- Méthodes courtes
- Noms explicites
- Pas d'effets de bord inutiles
- Paramètres limités
- Méthodes métier riches
Exemple complet
Méthodes et UML
- + deposer(montant: double) : void
- + retirer(montant: double) : void
- + getSolde() : double
Erreurs fréquentes
- Méthodes trop longues
- Accès direct aux attributs
- Trop de paramètres
- Logique métier hors des objets
Conclusion
Les méthodes sont le cour comportemental des objets.
Elles définissent ce que l'objet sait faire, pas seulement ce qu'il contient.
Une bonne méthode raconte une action métier claire.