Vous êtes sur la page 1sur 27

Programmation orientée objet

java
Chapitre 4: Polymorphisme

10/04/2020
Chapitre 4: Polymorphisme
2

Concept  Concept
Bases de
polymorphisme  Le polymorphisme est la caractéristique
Généralisation à d'un élément qui peut se présenter sous
plusieurs classe
Redéfinition et différentes formes.
surcharge
Conversion des
 Le polymorphisme constitue la troisième
arguments caractéristique essentielle d'un langage
Règles du
polymorphisme orienté objet après l'abstraction des
Conversion explicite de
référence
données (encapsulation) et l'héritage
Super classe Object
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
3

Concept  Concept
Bases de
polymorphisme  En
programmation par obje, on appelle
Généralisation à polymorphisme, le fait que:
plusieurs classe
Redéfinition et  un objet d’une classe puisse être manipulé
surcharge
comme s’il appartenait à une autre classe,
Conversion des
arguments  la même opération puisse se comporter
Règles du
polymorphisme
différemment sur différentes classes de la
Conversion explicite de hiérarchie.
référence
Super classe Object
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
4

Concept  Concept
Bases de
polymorphisme  Lepolymorphisme se base sur cette
Généralisation à affirmation : un objet a comme type non
plusieurs classe
Redéfinition et seulement sa classe mais aussi n’importe
surcharge
quelle classe dérivée.
Conversion des
arguments
Règles du
polymorphisme
Conversion explicite de
référence
Super classe Object
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
5

 Bases de polymorphisme
Concept
Bases de  Soient les classes Point et PointCol suivantes:
polymorphisme
Généralisation à
plusieurs classe
Redéfinition et
surcharge
Conversion des
arguments
Règles du
polymorphisme
Conversion explicite de
référence
Super classe Object
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
6

 Bases de polymorphisme
Concept  Soient les classes Point et PointCol suivantes:
Bases de
polymorphisme
Généralisation à
plusieurs classe
3
Redéfinition et 5
surcharge
Conversion des
arguments
Règles du 4
polymorphisme
9
Conversion explicite de
référence vert
Super classe Object
 Règle 1: Java permet à une variable objet
Classes et méthodes l’affectation d’une référence à objet d’un type dérivé
finales

10/04/2020
Chapitre 4: Polymorphisme
7

 Bases de polymorphisme
Concept
Bases de
 Soient les classes Point et PointCol suivantes:
polymorphisme
Généralisation à
plusieurs classe Appelle la méthode
Redéfinition et afficher de la classe Point:
surcharge « Je suis un point de
coordonnées 3 5 »
Conversion des
arguments
Règles du Appelle la méthode
polymorphisme afficher de la classe
Conversion explicite de PointCol:
référence « Je suis un point de
Super classe Object coordonnées 3 5 vert »
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
8

 Bases de polymorphisme
Concept
 L’instruction p. afficher() se base non pas sur le
Bases de
polymorphisme
type de la variable p mais sur le type effectif de
Généralisation à
l’objet référencé par p au moment de l’appel
plusieurs classe  car celui-ci peut évoluer dans le temps.
Redéfinition et  Le choix se fait au moment de l’exécution et non
surcharge
pas au moment de la compilation
Conversion des
arguments  On l’appelle ligature dynamique (ou liaison
Règles du dynamique).
polymorphisme
Conversion explicite de
référence
 Règle 2: Le choix de la méthode appelée se fait
Super classe Object
selon le type effectif de l’objet référencé au
moment de l’exécution
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
9

Concept  Bases de polymorphisme


Bases de
polymorphisme
Généralisation à
plusieurs classe
Redéfinition et
surcharge
Conversion des
arguments
Règles du
polymorphisme
Conversion explicite de
référence
Super classe Object
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
10

Concept  Bases de polymorphisme


Bases de
polymorphisme
Généralisation à
plusieurs classe
Redéfinition et
surcharge
Conversion des
arguments
Règles du
polymorphisme
Conversion explicite de
référence
Super classe Object
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
11

Concept  Bases de polymorphisme


Bases de
polymorphisme
 En utilisant le polymorphisme en association
Généralisation à à la liaison dynamique
plusieurs classe
Redéfinition et
 plus besoin de distinguer différents cas en
surcharge fonction de la classe des objets
Conversion des
arguments
 possible de définir de nouvelles fonctionnalités
Règles du en héritant de nouveaux types de données à
polymorphisme partir d'une classe de base commune sans avoir
Conversion explicite de
référence
besoin de modifier le code qui manipule
Super classe Object l'interface de la classe de base
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
12

Concept
 Généralisation à plusieurs classes
Bases de
polymorphisme
Généralisation à
plusieurs classes
Redéfinition et
surcharge
Conversion des
arguments
Règles du
polymorphisme
Conversion explicite de
référence
Super classe Object
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
13

 Généralisation à plusieurs classes


Concept
Bases de
 Soit une fonction f définie/redéfinie dans les
polymorphisme classes comportant une étoile. Quelle est la
Généralisation à méthode appelée dans les cas suivant?
plusieurs classes
Redéfinition et
surcharge
Conversion des
arguments
Règles du
polymorphisme
Conversion explicite de
référence
Super classe Object
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
14

Concept
 Polymorphisme, redéfinition et surcharge
Bases de
polymorphisme Bien que a.f(n) et b.f(n)
Généralisation à
appliquent toutes les deux
plusieurs classes une méthode f à un objet de
Redéfinition et
type B, elles n’appellent pas
surcharge la même méthode.
Conversion des
arguments
Règles du
polymorphisme
Conversion explicite de
référence
Super classe Object
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
15

Concept
 Polymorphisme, redéfinition et surcharge
Bases de
polymorphisme
Généralisation à
plusieurs classes  L’utilisation simultanée de la surdéfinition et
Redéfinition et de la redéfinition peuvent conduire à des
surcharge
Conversion des situations complexes.
arguments
Règles du  Il est donc conseillé de les utiliser
polymorphisme
Conversion explicite de
prudemment et de ne pas en abuser.
référence
Super classe Object
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
16

Concept
 Conversion des arguments affectifs
Bases de  Cas 1.Méthode non surdéfinie et non redéfinie
polymorphisme
Généralisation à
plusieurs classes
Redéfinition et
surcharge
Conversion des
arguments
Règles du
polymorphisme
Conversion explicite de
référence
Super classe Object
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
17

Concept
 Conversion des arguments affectifs
Bases de  Cas 2.Méthode non surdéfinie et redéfinie
polymorphisme
Généralisation à
plusieurs classes
Redéfinition et
surcharge
Conversion des
arguments
Règles du
polymorphisme
Conversion explicite de
référence
Super classe Object
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
18

Concept
 Conversion des arguments affectifs
Bases de  Cas 3.Méthode surdéfinie (exemple)
polymorphisme
Généralisation à
plusieurs classes
Redéfinition et
surcharge
Conversion des
arguments
Règles du
polymorphisme
Conversion explicite de
référence
Super classe Object
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
19

 Règles du polymorphisme
Concept  L’abus des possibilités de redéfinition et surdéfinition
Bases de peuvent conduire à des situations complexes
polymorphisme
 Voici un récapitulatif des différentes règles:
Généralisation à
plusieurs classes  Compatibilité: Il existe une conversion implicite d’une
référence à un objet de classe C en une référence à un
Redéfinition et objet d’une classe ascendante
surcharge
 Ligature dynamique. Dans un appel de la forme x.f(…) où
Conversion des
arguments
x est supposé de type C, le choix de f est déterminé de
deux manières:
Règles du  A la compilation: signature de la meilleure méthode f
polymorphisme convenant à l’appel, ce qui définit aussi le type de retour
Conversion explicite de  A l’exécution: on recherche la méthode f de signature et de
référence type de retour voulus, à partir de la classe correspondant
Super classe Object au type effectif de l’objet référencé par x
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
20

 Conversion explicite de référence


Concept
Bases de  Il n’est pas possible d’affecter à une référence à un
polymorphisme objet de type T , une référence à un objet d’un type
Généralisation à ascendant.
plusieurs classes
Redéfinition et
surcharge
Conversion des
arguments
Règles du
polymorphisme
Conversion explicite
de référence
Super classe Object
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
21

 Conversion explicite de référence


Concept
Bases de  Il faudrait faire une conversion en utilisant
polymorphisme l’opérateur de cast comme pour les types primitifs.
Généralisation à
plusieurs classes
Redéfinition et
surcharge
Conversion des
arguments
Règles du
polymorphisme
Conversion explicite
de référence
Super classe Object
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
22

 Super Classe Object


Concept  Nous avons vu deux types de classes : les classes
Bases de simples et les classes dérivées.
polymorphisme
Généralisation à
 Il existe une classe dont dérive implicitement toute
plusieurs classes classe simple :
Redéfinition et  C’est la clase Object: le sommet de la hiérarchie de toutes les
surcharge classes java.
Conversion des  Si on définit une classe Point
arguments class Point
Règles du {…
polymorphisme
}
Conversion explicite
de référence  Tout se passe comme si on avait écrit
Super classe Object class Point extendsObject
Classes et méthodes {…
finales }

10/04/2020
Chapitre 4: Polymorphisme
23

Concept
 Super Classe Object
Bases de  Laclasse Object comporte quelques
polymorphisme
Généralisation à
méthodes qu’on peut soit :
plusieurs classes  utiliser telles quelles
Redéfinition et
surcharge  soit les redéfinir.
Conversion des  Les plus importantes sont :
arguments
Règles du  toString
polymorphisme
 getClass()
Conversion explicite
de référence  hashCode()
Super classe Object
 Equals()
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
24

Concept
 Super Classe Object
Bases de  Etant données les possibilités offertes par le
polymorphisme
Généralisation à polymorphisme, une variable de type Object
plusieurs classes
Redéfinition et
peut être utilisée pour référencer un objet de
surcharge type quelconque.
Conversion des
arguments  Ceci peut être utilisé pour manipuler des
Règles du
polymorphisme objets dont on ne connait pas le type exact
Conversion explicite
de référence
au moment où on l’utilise.
Super classe Object  Exemple:
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
25

Concept
 Super Classe Object
Bases de
polymorphisme
Généralisation à
plusieurs classes
Redéfinition et
surcharge
Conversion des
arguments
Règles du
polymorphisme
Conversion explicite
de référence
Super classe Object
Classes et méthodes
finales

10/04/2020
Chapitre 4: Polymorphisme
26

Concept
 Classes et méthodes finales
Bases de  Lorsque le mot clé final est appliqué à une
polymorphisme
Généralisation à variable ou à des champs d’une classe, il
plusieurs classes
Redéfinition et
interdit la modification de leur valeur.
surcharge
final int n = 23;
Conversion des
arguments …
Règles du
polymorphisme n=n+5; // erreur
Conversion explicite
de référence  Lemot clé final peut s’appliquer à une classe
Super classe Object ou à une méthode mais avec une signification
Classes et méthodes
finales totalement différente.

10/04/2020
Chapitre 4: Polymorphisme
27

Concept
 Classes et méthodes finales
Bases de  Une méthode déclarée finale ne peut pas
polymorphisme
Généralisation à être redéfinie dans une classe dérivée.
plusieurs classes
Redéfinition et  Une classe déclarée finale ne peut pas être
surcharge
Conversion des
dérivée
arguments
Règles du
polymorphisme
Conversion explicite
de référence
Super classe Object
Classes et méthodes
finales

10/04/2020

Vous aimerez peut-être aussi