Héritage et polymorphisme

Principe de l’héritage

 Besoins : éviter de dupliquer du code (attributs et méthodes) dans différentes classes qui partagent des caractéristiques communes o facilite les modifications futures => elles n’ont besoin d’être faites qu’à un seul endroit o représentation explicite d’une logique d’héritage des concepts du domaine (relation “est-un”)
 Le mot-clé “extends”
Exemple simple et héritage des attributs
 Pour la gestion d’une bibliothèque on nous demande d’écrire une application traitant des documents de nature diverse : des livres, des revues, des dictionnaires, etc. Les livres, à leur tour, peuvent être des romans ou des manuels.
 Tous les documents ont un numéro d’enregistrement (un entier) et un titre (une chaîne de caractères). Les livres ont, en plus, un auteur (une chaîne) et un nombre de pages (un entier). Les romans ont éventuellement un prix littéraire (un entier conventionnel, parmi : GONCOURT, MEDICIS, INTERALLIE, etc.), tandis que les manuels ont un niveau scolaire (un entier). Les revues ont un mois et une année (des entiers) et les dictionnaires ont une langue (une chaîne de caractères convenue, comme « anglais », « allemand », « espagnol », etc.).
 Tous les objets en question ici (livres, revues, dictionnaires, romans, etc.) doivent pouvoir être manipulées en tant que documents.
 => Schéma des classes  => ATTENTION : Il faut vérifier la logique de votre schéma notamment qu’il est possible de dire par exemple un “Roman” est-un “Livre”  => Déclaration en Java des classes
 => ATTENTION : ne pas redéclarer les attributs hérités dans les sous-classes !
 => Allocation des objets dans la mémoire : allocation automatique des attributs hérités class Document { int no ; String titre ; }
class Livre extends Document { String auteur ; int nbPages ; }
class Roman extends Livre { int prixLitteraire ; }
class Revue extends Document { int mois ; int annee ; } class Test { public static void main (String args[]) { Document d = new Document (); d.no = 1 ; Livre l = new Livre (); l.no = 2 ; l.auteur = « Hugo »; d.auteur = « Balzac »; => ERREUR DE COMPIL! } }
Vocabulaire :  classe-mère / super-classe : ……………………………………………………………..
 sous-classe / classe dérivée : …………………………………………………………….
 La classe …………… étend / hérite de la classe …………………………………
Hiérarchie des classes du JDK  parcourir l’arborescence des classes dans la javadoc : “tree”  la classe mère de toutes les classes en Java est : …………………;
Héritage des méthodes  But : réutilisation des fonctionnalités de la classe héritée  Exemple o Forme :  attributs : x, y, couleur  methode afficher () o Cercle  attribut spécifique : ………. o Main () : création d’une forme et d’un cercle, affichage des attributs
Redéfinition de méthodes dans les sous-classes..

POLYMORPHISM

 But de l’héritage : réutilisation des fonctionnalités d’une classe tout en apportant certaines variations, spécifiques de l’objet
 Exemple : o Redéfinition de la méthode afficher() dans la classe Cercle o Main () : appel de afficher
class Forme { int x ;
int y ; int couleur ;
void afficher () { System.out.println (« x =  » + x +  » , y =  » + y + « , couleur =  » + couleur); } }
class Cercle extends Forme { int rayon ; void afficher () { System.out.println (« x =  » + x +  » , y =  » + y + « , couleur =  » + couleur + « , rayon =  » + rayon); } }
class Test { public static void main (String args[]) { Forme f ; f = new Cercle (); f.x = 40 ; f.y = 15 ; f.afficher (); } }

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *