Tutoriel JAVA N°10 : surcharge et redéfinition

Maîtrisez les notions clés de ’Surcharge’ et de ’Redéfinition’ en Java. Comprenez la différence entre ces notions, ainsi que leur cas d’utilisation.

Prérequis

- le tutoriel Mettre en œuvre la notion d’héritage en Java

Objectifs

- Modifier l’implémentation du digramme de classes UML
- Mise en œuvre de la surcharge
- Mise en œuvre de redéfinition et du polymorphysme

Programme

- Partie 1 : Diagramme UML
- Partie 2 : Surcharge
- Partie 3 : Redéfinition
- conclusion

Durée

- 30 minutes.

Partie 1 : Diagramme UML

- Implémentation du diagramme de classes UML suivant

tuto-9-img-5

- Les attributs soulignés de la classe DemandeFormation , correspondent à des attributs static. Pour mémoire , ces attributs sont accessibles en dehors de toute instanciation .

tuto-9-img-6

Partie 2 : La surcharge

La surcharge d’une méthode ou d’un constructeur permet de définir plusieurs fois une même méthode/constructeur avec des arguments différents. Le compilateur choisit la méthode qui doit être appelée en fonction du nombre et du type des arguments .

Surcharge de constructeur

- Surcharger les constructeurs de Employe , Manager et DemandeFormation via le mot clef java this

Exemple 1 :

tuto-9-img-7

Exemple 2 :

tuto-9-img-8

- Expliquez

Partie 3 : La redéfinition

La redéfinition d’une méthode héritée doit impérativement conserver la déclaration de la méthode parent (type et nombre de paramètres, la valeur de retour et les exceptions propagées doivent être identiques).

Si la signature de la méthode change, ce n’est plus une redéfinition mais une surcharge. Cette nouvelle méthode n’est pas héritée : la classe mère ne possède pas de méthode possédant cette signature .

La redéfinition de la méthode demanderFormation dans la classe Manager exprime le fait que le savoir faire métier est différent dans les deux classes :

— La méthode demanderFormation() pour l’employé déclenche une demande avec une attente de validation.
— La méthode demanderFormation() pour le manager déclenche une demande qui est automatiquement validée .

- Redéfinir la méthode demanderFormation() de la classe Manager

Exemple :

tuto-9-img-9

On constate qu’une partie du code de demanderFormation() est identique dans les deux classes Employe et Manager . Pour éviter la duplication de code , une bonne façon de faire est la suivante :

tuto-9-img-10

- Redéfinir la méthode toString() héritée de la super classe Object, afin de tracer les caractéristiques d’un objet

tuto-9-img-11

- La méthode toSring() est automatiquement invoquée lorsque l’on souhaite tracer un objet.

tuto-9-img-12

- Renverra la chaîne :

tuto-9-img-13

Par défaut la méthode toString() retourne le nom de la classe d’instanciation de l’objet, suivi de sa référence.

- Modifier le lanceur LanceurGestionFormations afin de :

    • procéder à différentes instanciations (différents constructeurs)
    • tracer l’état des objets

- Tester le lanceur LanceurGestionFormations et vérifier la redéfinition de la méthode demanderFormation .

Correction

Zip - 11.6 ko
GestionFormations-Surcharge-Redefinition

Conclusion

Dans ce tutoriel vous avez mis en œuvre la notion de surcharge et de redéfinition. Dans le tutoriel suivant ’tutoriel Java N°11’, vous allez découvrir comment manipuler des collections d’objets en java’.

Donner votre avis sur ce Tuto objis.com