SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
Exposé: Polymorphisme
Réaliser par: Daoudi Ilhem
Université Mohamed Chérif Messadia
‫ــ‬ Souk-Ahras ‫ــ‬
Plan
1-Intoduction
2-Définition
3-Le polymorphisme dans la POO
4-Implémentation du polymorphisme
5-Types de polymorphisme en Java
6-La ligature dynamique des méthodes
7-Le polymorphisme pour les tableaux
8-Polymorphisme, redéfinition et surdéfinition
9-Avantages de polymorphisme
10-Conclusion
1-Intoduction
• Après la notion de l'héritage, l'abstraction et l'encapsulation qui
sont les principaux éléments constitutifs de la programmation
orientée objet.
• Il est une autre caractéristique la plus importante de la POO. Le
concept de polymorphisme.
• Voyons dans cet exposé comment Java permet de mettre en
œuvre ce concept de polymorphisme.
2-Définition
• Littéral sens : polymorphisme mot latin
qui composé de Poly signifie plusieurs et
Morphes signifie formes.
• En général, le polymorphisme est la
capacité d’avoir plus d'une forme d’une
même entité.
3-Le polymorphisme dans la POO
• Dans le contexte de la POO, en termes plus simples, le polymorphisme est la
capacité par laquelle, nous pouvons créer des méthodes ou des variables de
référence qui se comporte différemment dans différents contexte
programmatique.
• Il s’agit d’un concept extrêmement puissant en P.O.O., qui complète l’héritage.
On peut caractériser le polymorphisme en disant qu’il permet de manipuler
des objets sans en connaître le type.
• Mais il ne s’agira pas de traiter ainsi n’importe quel objet. En se basant sur la
relation d’héritage.
4-Implémentation du polymorphisme
class Point
{ public Point (int x, int y) { ..... }
public void affiche () { ..... }
}
class Pointcol extends Point
{ public Pointcol (int x, int y, byte couleur)
public void affiche () { ..... }
}
// p de type Point contient la référence
// a un objet de type Point (3, 5) ;
• Point p ;
• p = new Point (3, 5) ;
// p de type Point contient la référence
// a un objet de type Pointcolnt (4, 8,2) ;
p = new Pointcol (4, 8, (byte)2) ;
5-Types de polymorphisme en Java
• Il existe deux types de polymorphisme en java :
1. polymorphisme dynamique :(polymorphisme Runtime ) c'est le véritable
polymorphisme. Le sens de la fonction est déterminé par le type effectif de
l'objet à l'appel (effectuée à l'exécution).
2. polymorphisme statique: c'est la surcharge. Le sens de la fonction est
déterminé statiquement par la signature des arguments à l'appel (effectuée à
la compilation).
6-La ligature dynamique des méthodes
Point p = new Point (3, 5) ;
p.affiche () ; // appelle la méthode affiche de la classe Point
p = new Poincol (4, 8, 2) ;
p.affiche () ; // appelle la méthode affiche de la classe Pointcol
• L’instruction p.affiche() appelle alors la méthode affiche de la classe Pointcol.
• Autrement dit, elle se fonde, non pas sur le type de la variable p, mais bel et
bien sur le type effectif de l’objet référencé par p au moment de l’appel.
• Ce choix d’une méthode au moment de l’exécution (et non plus de la
compilation) porte généralement le nom de ligature dynamique (ou encore de
liaison dynamique).
7-Le polymorphisme pour les tableaux
• Jusqu’ici, nous avons considéré les tableaux comme des objets. Cependant, il
n’est pas possible de définir exactement leur classe.
• Le polymorphisme peut s’appliquer à des tableaux d’objets. Plus précisément, si
B dérive de A, un tableau de B est compatible avec un tableau de A :
class B extends A { ..... }
A ta[] ;
B tb[] ;
.....
ta = tb ; // OK car B dérive de A
tb = ta ; // erreur
Remarque :
• Cette propriété des tableaux d’objets dérivés ne se retrouvera pas
dans les collections génériques.
• Ainsi un ArrayList <B> (collection d’objets de type B, ressemblant à
un tableau) ne sera pas compatible avec un ArrayList <A>.
8-Polymorphisme, redéfinition et surdéfinition
class A{
public void f (float x) { ..... }
.....
}
class B extends A{
public void f (float x) { ..... } // redéfinition de f de A
public void f (int n) { ..... } // surdefinition de f pour A et B
.....
}
A a = new A(...) ;
B b = new B(...) ;
int n ;
a.f(n) ; // appelle f (float) de A (ce qui est logique)
b.f(n) ; // appelle f(int) de B comme on s’y attend
a = b ; // a contient une référence sur un objet de type B
a.f(n) ; // appelle f(float) de B et non f(int)
9-Avantages de polymorphisme
• Simplicité : Si vous avez besoin d'écrire du code qui traite avec une famille de
types, le code peut ignorer les détails spécifiques de type et juste interagir
avec le type de la famille de base Même si le code pense qu'il utilise un objet
de la classe de base, la classe de l'objet pourrait en fait être la classe de base
ou l'un de ses sous-classes Cela rend votre code plus facile pour vous d'écrire
et plus facile pour les autres à comprendre.
• Extensibilité : D'autres sous-classes peuvent être ajoutés plus tard à la famille
des types, et les objets de ces nouvelles sous-classes devraient également
travailler avec le code existant.
10-Conclusion
Le polymorphisme en Java se traduit par :
• La compatibilité entre un type dérivée et un type
ascendant.
• La ligature dynamique des méthodes, dans le sens où il
permet d’obtenir le comportement adapté à chaque type
d’objet, sans avoir besoin de tester sa nature de quelque
façon que ce soit.
Les références :
• http://www.slideshare.net/gauravsitu/polymorphism-12270448
• http://howtodoinjava.com/object-oriented/what-is-polymorphism-in-
java/
• Programmer en Java.
• http://www.slideshare.net/DrAZaanin/polymorphism-41840651
• http://www.technologuepro.com/Programmation-Oriente-
Objets/Polymorphisme.pdf
• http://www.slideshare.net/raffaele.doti/polymorphism
Polymorphisme

Contenu connexe

Tendances

Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfacesAziz Darouichi
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfacesAmir Souissi
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java HéritageNadaBenLatifa
 
Rapport de mini projet de programation web
Rapport de mini projet de programation webRapport de mini projet de programation web
Rapport de mini projet de programation webMOHAMMED MOURADI
 
rapport de projet de fin d'étude_PFE
rapport de projet de fin d'étude_PFErapport de projet de fin d'étude_PFE
rapport de projet de fin d'étude_PFEDonia Hammami
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menusLilia Sfaxi
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...MOHAMMED MOURADI
 
Conception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIREConception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIREGhizlane ALOZADE
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec dockergcatt
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en PythonABDESSELAM ARROU
 
Administration réseaux sous linux cours 1
Administration réseaux sous linux   cours 1Administration réseaux sous linux   cours 1
Administration réseaux sous linux cours 1Stephen Salama
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 
Bases de données réparties par la pratique
Bases de données réparties par la pratiqueBases de données réparties par la pratique
Bases de données réparties par la pratiqueAbdelouahed Abdou
 
Installation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de TomcatInstallation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de TomcatMohamed Ben Bouzid
 

Tendances (20)

Une introduction à Hive
Une introduction à HiveUne introduction à Hive
Une introduction à Hive
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfaces
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
 
Rapport de mini projet de programation web
Rapport de mini projet de programation webRapport de mini projet de programation web
Rapport de mini projet de programation web
 
Tp n 1 linux
Tp n 1 linuxTp n 1 linux
Tp n 1 linux
 
rapport de projet de fin d'étude_PFE
rapport de projet de fin d'étude_PFErapport de projet de fin d'étude_PFE
rapport de projet de fin d'étude_PFE
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menus
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
 
TP C++ : enoncé
TP C++ : enoncéTP C++ : enoncé
TP C++ : enoncé
 
Conception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIREConception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIRE
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec docker
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en Python
 
Administration réseaux sous linux cours 1
Administration réseaux sous linux   cours 1Administration réseaux sous linux   cours 1
Administration réseaux sous linux cours 1
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Bases de données réparties par la pratique
Bases de données réparties par la pratiqueBases de données réparties par la pratique
Bases de données réparties par la pratique
 
Installation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de TomcatInstallation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de Tomcat
 

En vedette

Au coeur de java 2 tome 1, notions fondamentales
Au coeur de java 2   tome 1, notions fondamentalesAu coeur de java 2   tome 1, notions fondamentales
Au coeur de java 2 tome 1, notions fondamentalesNadia RAOUANE
 
Java - implémentation des concepts objets
Java - implémentation des concepts objetsJava - implémentation des concepts objets
Java - implémentation des concepts objetsJean David Olekhnovitch
 
Laboratoire de transmission numérique : Présentation du projet
Laboratoire de transmission numérique : Présentation du projetLaboratoire de transmission numérique : Présentation du projet
Laboratoire de transmission numérique : Présentation du projetECAM Brussels Engineering School
 
La nueva educación para la sociedad del conocimiento
La nueva educación para la sociedad del conocimientoLa nueva educación para la sociedad del conocimiento
La nueva educación para la sociedad del conocimientocoty_point
 
Guide : Habiter une maison saine - CAUE de la Sarthe
Guide : Habiter une maison saine - CAUE de la SartheGuide : Habiter une maison saine - CAUE de la Sarthe
Guide : Habiter une maison saine - CAUE de la SartheBuild Green
 
Chanter La Vie Nana Mouskouri
Chanter La Vie Nana MouskouriChanter La Vie Nana Mouskouri
Chanter La Vie Nana MouskouriBeatris Lopes
 
[Odimat] ~ Presentation Du Referencement A La Performance
[Odimat] ~ Presentation Du Referencement A La Performance[Odimat] ~ Presentation Du Referencement A La Performance
[Odimat] ~ Presentation Du Referencement A La PerformanceODIMAT Referencement
 
Evaluaci%f3n de tce
Evaluaci%f3n de tceEvaluaci%f3n de tce
Evaluaci%f3n de tcejanieliza93
 
Soraya avendaño actividad1_mapa_conceptual
Soraya avendaño actividad1_mapa_conceptualSoraya avendaño actividad1_mapa_conceptual
Soraya avendaño actividad1_mapa_conceptualSoraya Ariza
 
Presentación Edad Media.
Presentación Edad Media.Presentación Edad Media.
Presentación Edad Media.mbelgon
 
^^Esther & Cristina & Este Maquillate^^
^^Esther & Cristina & Este Maquillate^^^^Esther & Cristina & Este Maquillate^^
^^Esther & Cristina & Este Maquillate^^guest273b76
 

En vedette (20)

Au coeur de java 2 tome 1, notions fondamentales
Au coeur de java 2   tome 1, notions fondamentalesAu coeur de java 2   tome 1, notions fondamentales
Au coeur de java 2 tome 1, notions fondamentales
 
Java - implémentation des concepts objets
Java - implémentation des concepts objetsJava - implémentation des concepts objets
Java - implémentation des concepts objets
 
Laboratoire de transmission numérique : Présentation du projet
Laboratoire de transmission numérique : Présentation du projetLaboratoire de transmission numérique : Présentation du projet
Laboratoire de transmission numérique : Présentation du projet
 
La nueva educación para la sociedad del conocimiento
La nueva educación para la sociedad del conocimientoLa nueva educación para la sociedad del conocimiento
La nueva educación para la sociedad del conocimiento
 
Guide : Habiter une maison saine - CAUE de la Sarthe
Guide : Habiter une maison saine - CAUE de la SartheGuide : Habiter une maison saine - CAUE de la Sarthe
Guide : Habiter une maison saine - CAUE de la Sarthe
 
Alcances de un Multinivel
Alcances de un MultinivelAlcances de un Multinivel
Alcances de un Multinivel
 
LWI n°49
LWI n°49LWI n°49
LWI n°49
 
Chanter La Vie Nana Mouskouri
Chanter La Vie Nana MouskouriChanter La Vie Nana Mouskouri
Chanter La Vie Nana Mouskouri
 
Camilo Saman
Camilo SamanCamilo Saman
Camilo Saman
 
Digital Divide
Digital DivideDigital Divide
Digital Divide
 
[Odimat] ~ Presentation Du Referencement A La Performance
[Odimat] ~ Presentation Du Referencement A La Performance[Odimat] ~ Presentation Du Referencement A La Performance
[Odimat] ~ Presentation Du Referencement A La Performance
 
lesson template
lesson templatelesson template
lesson template
 
Evaluaci%f3n de tce
Evaluaci%f3n de tceEvaluaci%f3n de tce
Evaluaci%f3n de tce
 
para todosss
para todossspara todosss
para todosss
 
Soraya avendaño actividad1_mapa_conceptual
Soraya avendaño actividad1_mapa_conceptualSoraya avendaño actividad1_mapa_conceptual
Soraya avendaño actividad1_mapa_conceptual
 
Presentación Edad Media.
Presentación Edad Media.Presentación Edad Media.
Presentación Edad Media.
 
^^Esther & Cristina & Este Maquillate^^
^^Esther & Cristina & Este Maquillate^^^^Esther & Cristina & Este Maquillate^^
^^Esther & Cristina & Este Maquillate^^
 
Proyecto de vida
Proyecto de vidaProyecto de vida
Proyecto de vida
 
FMP Peraget
FMP PeragetFMP Peraget
FMP Peraget
 
Apres l'ebook
Apres l'ebookApres l'ebook
Apres l'ebook
 

Similaire à Polymorphisme

intro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APPintro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APPfrwebhelp
 
Objets patterns et genie logiciel , par Julien Pauli
Objets patterns et genie logiciel , par Julien PauliObjets patterns et genie logiciel , par Julien Pauli
Objets patterns et genie logiciel , par Julien PauliALTER WAY
 
POO Licence L2 Partie I.pdf
POO Licence L2 Partie I.pdfPOO Licence L2 Partie I.pdf
POO Licence L2 Partie I.pdfLarbaSAWADOGO2
 
chapitre4-HeritageetPolymorphisme.pdf
chapitre4-HeritageetPolymorphisme.pdfchapitre4-HeritageetPolymorphisme.pdf
chapitre4-HeritageetPolymorphisme.pdfMoez Moezm
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scalaSOAT
 
Cours java smi_2011_2012_partie_i_29_octobre_2011
Cours java smi_2011_2012_partie_i_29_octobre_2011Cours java smi_2011_2012_partie_i_29_octobre_2011
Cours java smi_2011_2012_partie_i_29_octobre_2011yassine kchiri
 
Patrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnellePatrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnelleAssociation Agile Nantes
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_finalDuchess France
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_finalagnes_crepet
 
Langage Java et Programmation Orienté Objet
Langage Java et Programmation Orienté ObjetLangage Java et Programmation Orienté Objet
Langage Java et Programmation Orienté ObjetMohammed Jaafar
 

Similaire à Polymorphisme (20)

Polymorphisme
PolymorphismePolymorphisme
Polymorphisme
 
Langage C#
Langage C#Langage C#
Langage C#
 
intro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APPintro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APP
 
cours1.ppt
cours1.pptcours1.ppt
cours1.ppt
 
cours1.ppt
cours1.pptcours1.ppt
cours1.ppt
 
cours2.ppt
cours2.pptcours2.ppt
cours2.ppt
 
Objets patterns et genie logiciel , par Julien Pauli
Objets patterns et genie logiciel , par Julien PauliObjets patterns et genie logiciel , par Julien Pauli
Objets patterns et genie logiciel , par Julien Pauli
 
POO Licence L2 Partie I.pdf
POO Licence L2 Partie I.pdfPOO Licence L2 Partie I.pdf
POO Licence L2 Partie I.pdf
 
chapitre4-HeritageetPolymorphisme.pdf
chapitre4-HeritageetPolymorphisme.pdfchapitre4-HeritageetPolymorphisme.pdf
chapitre4-HeritageetPolymorphisme.pdf
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scala
 
Cours java smi_2011_2012_partie_i_29_octobre_2011
Cours java smi_2011_2012_partie_i_29_octobre_2011Cours java smi_2011_2012_partie_i_29_octobre_2011
Cours java smi_2011_2012_partie_i_29_octobre_2011
 
Hibernate
HibernateHibernate
Hibernate
 
Patrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnellePatrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnelle
 
4711538.pptx
4711538.pptx4711538.pptx
4711538.pptx
 
Playing With PHP 5.3
Playing With PHP 5.3Playing With PHP 5.3
Playing With PHP 5.3
 
Java
JavaJava
Java
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_final
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_final
 
Langage Java et Programmation Orienté Objet
Langage Java et Programmation Orienté ObjetLangage Java et Programmation Orienté Objet
Langage Java et Programmation Orienté Objet
 
XB-Java.ppt
XB-Java.pptXB-Java.ppt
XB-Java.ppt
 

Polymorphisme

  • 1. Exposé: Polymorphisme Réaliser par: Daoudi Ilhem Université Mohamed Chérif Messadia ‫ــ‬ Souk-Ahras ‫ــ‬
  • 2. Plan 1-Intoduction 2-Définition 3-Le polymorphisme dans la POO 4-Implémentation du polymorphisme 5-Types de polymorphisme en Java 6-La ligature dynamique des méthodes 7-Le polymorphisme pour les tableaux 8-Polymorphisme, redéfinition et surdéfinition 9-Avantages de polymorphisme 10-Conclusion
  • 3. 1-Intoduction • Après la notion de l'héritage, l'abstraction et l'encapsulation qui sont les principaux éléments constitutifs de la programmation orientée objet. • Il est une autre caractéristique la plus importante de la POO. Le concept de polymorphisme. • Voyons dans cet exposé comment Java permet de mettre en œuvre ce concept de polymorphisme.
  • 4. 2-Définition • Littéral sens : polymorphisme mot latin qui composé de Poly signifie plusieurs et Morphes signifie formes. • En général, le polymorphisme est la capacité d’avoir plus d'une forme d’une même entité.
  • 5. 3-Le polymorphisme dans la POO • Dans le contexte de la POO, en termes plus simples, le polymorphisme est la capacité par laquelle, nous pouvons créer des méthodes ou des variables de référence qui se comporte différemment dans différents contexte programmatique. • Il s’agit d’un concept extrêmement puissant en P.O.O., qui complète l’héritage. On peut caractériser le polymorphisme en disant qu’il permet de manipuler des objets sans en connaître le type. • Mais il ne s’agira pas de traiter ainsi n’importe quel objet. En se basant sur la relation d’héritage.
  • 6. 4-Implémentation du polymorphisme class Point { public Point (int x, int y) { ..... } public void affiche () { ..... } } class Pointcol extends Point { public Pointcol (int x, int y, byte couleur) public void affiche () { ..... } }
  • 7. // p de type Point contient la référence // a un objet de type Point (3, 5) ; • Point p ; • p = new Point (3, 5) ; // p de type Point contient la référence // a un objet de type Pointcolnt (4, 8,2) ; p = new Pointcol (4, 8, (byte)2) ;
  • 8. 5-Types de polymorphisme en Java • Il existe deux types de polymorphisme en java : 1. polymorphisme dynamique :(polymorphisme Runtime ) c'est le véritable polymorphisme. Le sens de la fonction est déterminé par le type effectif de l'objet à l'appel (effectuée à l'exécution). 2. polymorphisme statique: c'est la surcharge. Le sens de la fonction est déterminé statiquement par la signature des arguments à l'appel (effectuée à la compilation).
  • 9. 6-La ligature dynamique des méthodes Point p = new Point (3, 5) ; p.affiche () ; // appelle la méthode affiche de la classe Point p = new Poincol (4, 8, 2) ; p.affiche () ; // appelle la méthode affiche de la classe Pointcol • L’instruction p.affiche() appelle alors la méthode affiche de la classe Pointcol. • Autrement dit, elle se fonde, non pas sur le type de la variable p, mais bel et bien sur le type effectif de l’objet référencé par p au moment de l’appel. • Ce choix d’une méthode au moment de l’exécution (et non plus de la compilation) porte généralement le nom de ligature dynamique (ou encore de liaison dynamique).
  • 10. 7-Le polymorphisme pour les tableaux • Jusqu’ici, nous avons considéré les tableaux comme des objets. Cependant, il n’est pas possible de définir exactement leur classe. • Le polymorphisme peut s’appliquer à des tableaux d’objets. Plus précisément, si B dérive de A, un tableau de B est compatible avec un tableau de A : class B extends A { ..... } A ta[] ; B tb[] ; ..... ta = tb ; // OK car B dérive de A tb = ta ; // erreur
  • 11. Remarque : • Cette propriété des tableaux d’objets dérivés ne se retrouvera pas dans les collections génériques. • Ainsi un ArrayList <B> (collection d’objets de type B, ressemblant à un tableau) ne sera pas compatible avec un ArrayList <A>.
  • 12. 8-Polymorphisme, redéfinition et surdéfinition class A{ public void f (float x) { ..... } ..... } class B extends A{ public void f (float x) { ..... } // redéfinition de f de A public void f (int n) { ..... } // surdefinition de f pour A et B ..... }
  • 13. A a = new A(...) ; B b = new B(...) ; int n ; a.f(n) ; // appelle f (float) de A (ce qui est logique) b.f(n) ; // appelle f(int) de B comme on s’y attend a = b ; // a contient une référence sur un objet de type B a.f(n) ; // appelle f(float) de B et non f(int)
  • 14. 9-Avantages de polymorphisme • Simplicité : Si vous avez besoin d'écrire du code qui traite avec une famille de types, le code peut ignorer les détails spécifiques de type et juste interagir avec le type de la famille de base Même si le code pense qu'il utilise un objet de la classe de base, la classe de l'objet pourrait en fait être la classe de base ou l'un de ses sous-classes Cela rend votre code plus facile pour vous d'écrire et plus facile pour les autres à comprendre. • Extensibilité : D'autres sous-classes peuvent être ajoutés plus tard à la famille des types, et les objets de ces nouvelles sous-classes devraient également travailler avec le code existant.
  • 15. 10-Conclusion Le polymorphisme en Java se traduit par : • La compatibilité entre un type dérivée et un type ascendant. • La ligature dynamique des méthodes, dans le sens où il permet d’obtenir le comportement adapté à chaque type d’objet, sans avoir besoin de tester sa nature de quelque façon que ce soit.
  • 16. Les références : • http://www.slideshare.net/gauravsitu/polymorphism-12270448 • http://howtodoinjava.com/object-oriented/what-is-polymorphism-in- java/ • Programmer en Java. • http://www.slideshare.net/DrAZaanin/polymorphism-41840651 • http://www.technologuepro.com/Programmation-Oriente- Objets/Polymorphisme.pdf • http://www.slideshare.net/raffaele.doti/polymorphism