SlideShare une entreprise Scribd logo
1  sur  28
PROGRAMMATION OBJET
Héritage & Polymorphisme
Jihen HEDHLI
Héritage
 Présentation
o Concept de l’Orienté Objet
o Définir une hiérarchie de classes
classe mère // classe de base
classes héritées // classes dérivée // sous classes
o Une classe hérite toujours d’une seule classe
classe mère
classes dérivées
Animal
Chien Tortue
Teckel
Lion
Caniche Labrador
Labrador
Une tortue est un animal
Un chien est un animal
Un caniche est un chien
Jihen HEDHLI- Programmation Objet 2
 Avantages
o Hériter ce qui a été défini dans la classe de base
o Pouvoir enrichir les classes dérivées par de nouvelles méthodes
redéfinies
o Une instance de la classe fille encapsule une instance de la classe
mère
o Meilleure organisation des classes
 Syntaxe
class classe_fille extends classe mère
public class Chien extends Animal
class Labrador extends Chien
Héritage
Jihen HEDHLI- Programmation Objet 3
 Mots clés
o Accès au constructeur de la classe mère
super(liste des arguments)
o Accès à un attribut de la classe mère
super.nom_attribut
o Accès à une méthode de la classe mère
super.nom_méthode(liste des arguments)
Héritage
Jihen HEDHLI- Programmation Objet 4
 Exemple
o Classe de base
public class Personne {
o 2 classes dérivées : enseignant et étudiant
public class Personne {
protected String nom; protected int age;
protected String adresse;
public Personne(String nom ,int age, String adr){
this.nom=nom; this.age=age; adresse=adr; }
public void affiche(){
System.out.println("nom= "+nom+" age= "+age+" adresse=
"+adresse);}
}
o 2 classes dérivées : enseignant et étudiant
Héritage
5
Jihen HEDHLI- Programmation Objet
o Classe dérivée1
Appel du constructeur de la classe mère, comme
première instruction les attributs de la super classe sont hérités implicitement et passés au
constructeur
l’affichage d’un objet enseignant se base sur l’appel de la méthode
affiche() de la super classe avec l’affichage de l’attribut spécifique à la classe enseignant
"discipline"
}
public class Enseignant extends Personne {
public String discipline;
public Enseignant(String nom ,int age, String adr, String disp){
super( nom, age, adr); discipline=disp; }
public void affiche(){
super.affiche();
System.out.println("discipline= "+discipline);}
}
Héritage
Jihen HEDHLI- Programmation Objet 6
o Classe dérivée2
o méthode redéfinie: conserve la même signature que la méthode affiche() de
la classe mère ( le nom, le nombre et le type d’arguments), avec une
implémentation (partiellement ou totalement) différente
o La covariance est le fait de modifier le type de retour d’une méthode lors
de sa redéfinition.
public class Etudiant extends Personne {
Public String section;
public Etudiant(String nom ,int age, String adr, String sect){
super( nom, age, adr); section=sect; }
public void affiche() {
super.affiche();
System.out.println("section= "+section);}
}
Héritage
7
Jihen HEDHLI- Programmation Objet
 Construction d’objets dérivés
o Cas1: la classe de base et la classe dérivée possède chacune un constructeur
Le constructeur de la classe héritée appelle celui de la classe mère pour construire
un objet dérivé (exemple précédent)
o Cas2: la classe de base ne possède pas de constructeur
Le constructeur de la classe dérivée appelle optionnellement dans sa première
instruction, le constructeur fournit par défaut de la classe mère moyennant
l’instruction super();
public class X {
// pas de constructeur définit }
public classY extends X {
publicY() { //constructeur de la classeY
super(); // appel du constructeur de la classe
mère généré par MVJ
… }
} // fin de la classeY
Y y=newY(); // création d’un objet dérivé deY
Héritage
8
Jihen HEDHLI- Programmation Objet
o Cas3: la classe dérivée ne possède pas de constructeur
Pour construire un objet dérivé, Le constructeur par défaut de la classe dérivée doit
appeler:
 Le constructeur par défaut de la classe de base, si elle ne possède pas de
constructeur
 Le constructeur sans argument de la classe de base, si elle possède au
moins un constructeur
 Si la classe de base possède d’autre constructeur avec argument, la
création échoue, le compilateur génère des erreurs
public class Personne {
public String nom; public int age; public String adresse;
public Personne(String nom ,int age, String adr){
this.nom=nom; this.age=age; adresse=adr; }
public void affiche(){
System.out.println("nom= "+nom+" age= "+age+" adresse= "+adresse);}}
Héritage
9
Jihen HEDHLI- Programmation Objet
La classe Personne possède un constructeur avec arguments
La classe Enseignant ne possède pas de constructeur
une erreur est générée
la solution
ajouter un constructeur sans argument dans la classe de base
Héritage
10
Jihen HEDHLI- Programmation Objet
 Accès aux propriétés héritées
o Une propriété déclarée public dans la classe de base est héritée
par ses classes dérivées
o Une propriété déclarée néant dans la classe de base est héritée
par ses classes dérivées si les classes sont dans le même package
o Une propriété déclarée private dans la classe de base n’est
héritée par ses classes dérivées qu’en utilisant seulement les
méthodes d’accès aux données( getter et setter)
o Une propriété déclarée protected dans la classe de base est
héritée par ses classes dérivées
Héritage
11
Jihen HEDHLI- Programmation Objet
Exemple
Package test_utilisation;
public class Personne {
public String nom; public int age;
protected String adresse;
public Personne(String nom ,int age, String adr){
this.nom=nom; this.age=age; adresse=adr; }
public void affiche(){
System.out.println("nom= "+nom+" age= "+age+" adresse=
"+adresse);}}
Héritage
12
Jihen HEDHLI- Programmation Objet
Exemple
}
Package test_utilisation;
public class Enseignant extends Personne {
Public String discipline;
public Enseignant(String nom ,int age, String adr, String disp){
super( nom, age, adr); discipline=disp; }
public void affiche(){
super.affiche();
System.out.println("discipline= "+discipline);}
public static void main(String args[])
{
Enseignant ens=new Enseignant("ali",25," AouinaTunis", "électrique");
System.out.println("adresse= " + ens.adresse);}
}
Héritage
13
Jihen HEDHLI- Programmation Objet
 Redéfinition d’une méthode
o Une méthode static ou final ne peut pas être redéfinie.
o Le droit d’accès d’une méthode redéfinie de la classe dérivée ne doit
pas être moins élevé que la méthode initiale de la classe ascendante
 Soit la méthode affiche() de la classe de base Personne présentée avec le
modificateur public
 Si la méthode redéfinie affiche() de la classe dérivée se présente comme
suit
Héritage
14
Jihen HEDHLI- Programmation Objet
 Une erreur est générée
 Les solutions:
 La méthode affiche() redéfinie doit avoir l’accès public
ou
 La méthode initiale de la classe de base change son modificateur
d’accès à néant, les deux classes doivent appartenir au même
package
Héritage
15
Jihen HEDHLI- Programmation Objet
 Surcharge d’une méthode
o Une classe dérivée peut surcharger une méthode de la classe de
base
Exemple
Class A
{ public void f (int n) {…..}
…}
méthode surchargée
Class B extends A
{ public void f (float n) {…..}
…}
A a , B b ;
int n; float x;
a.f(n) // appelle f(int) de A
a.f(x) // Erreur, on a pas dans A f(float)
b.f(n) // appelle f(int) de A
b.f(x) // appelle f(float) de B
Héritage
16
Jihen HEDHLI- Programmation Objet
Polymorphisme
 Présentation
o Concept de l’orienté objet
o Permet de manipuler des objets sans en connaitre leurs types
spécifiques en se basant sur la relation d’héritage
o Traduit la compatibilité entre un type ascendant et un type
dérivé
o Permet de choisir dynamiquement la méthode qui correspond
au type réel de l’objet
la liaison dynamique de méthodes
17
Jihen HEDHLI- Programmation Objet
 Exemple1
o Considérons la classe de base Animal
Polymorphisme
18
Jihen HEDHLI- Programmation Objet
o Soit la classe dérivée cheval
o La classe définit un constructeur cheval(),
o La classe redéfinit les méthodes identifie() et se_deplacer() en appelant ces
méthodes de la classe mère moyennant super()
Polymorphisme
19
Jihen HEDHLI- Programmation Objet
o soit les classes dérivées poisson et pigeon
Polymorphisme
20
Jihen HEDHLI- Programmation Objet
o Chacune des deux classes définit un constructeur
o La classe pigeon redéfinit les méthodes identifie() et
se_deplacer() sans appel aux méthodes de la classe mère
o Considérons la classe de test TestPolymo
Polymorphisme
21
Jihen HEDHLI- Programmation Objet
o L’instance a de type Animal est utilisé pour créer d’autres
instances de type cheval, poisson et pigeon
compatibilité entre le type d’une classe de base et la référence
d’une classe dérivée.
o Qu’elle est la différence entre les appels successifs des méthodes
identifie() et se_deplacer() sur l’instance a ?
o Interprétons l’exécution:
Polymorphisme
22
Jihen HEDHLI- Programmation Objet
o Interprétons l’exécution:
Polymorphisme
23
Jihen HEDHLI- Programmation Objet
o La liaison dynamique des méthodes apparait au niveau exécution
o À ce moment, le choix de la méthode dépend du type effectif de
l’instance a
Exemple2
o Le polymorphisme permet de créer un tableau d’objets
hétérogènes
o Considérons la classe TableauHeterogene
Polymorphisme
24
Jihen HEDHLI- Programmation Objet
o Tab est un tableau contenant des instances d’objets de types
différents mais reliés entre eux par une relation d’héritage
L’ exécution donne:
o Pendant l’exécution et à chaque itération de la boucle for, on
détermine le type effectif de la référence de l’objet tab[i] et on
appelle la méthode adéquate redéfinie dans sa classe,
Polymorphisme
25
Jihen HEDHLI- Programmation Objet
 Transtypage
o (cast en anglais) est la conversion d'une expression d'un certain
type en une expression d'un autre type.
https://fr.wikibooks.org/wiki/Programmation_Java/Transtypage
o La conversion d’un type dérivé en un type de base est une
conversion implicite légale
o La conversion d’un type de base en un type dérivé est une
conversion implicite illégale, nécessite une conversion explicite
o Cette conversion peut être accepté au niveau de la compilation
mais refusée au niveau de l’exécution vu l’incompatibilité entre
les types
Polymorphisme
26
Jihen HEDHLI- Programmation Objet
 Exemple
o L’instruction « ch1=an1; » génère une erreur de compilation
Polymorphisme
27
Jihen HEDHLI- Programmation Objet
 Exemple
o Une conversion explicite est nécessaire,
o La conversion résout l’erreur
de la compilation et réussit
l’exécution
Polymorphisme
28
Jihen HEDHLI- Programmation Objet

Contenu connexe

Tendances

Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objetAmir Souissi
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeAmir Souissi
 
Chap 03 poo en java partie1
Chap 03 poo en java partie1Chap 03 poo en java partie1
Chap 03 poo en java partie1Yassine Badri
 
POO Java Introduction
POO Java IntroductionPOO Java Introduction
POO Java IntroductionMouna Torjmen
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielleECAM Brussels Engineering School
 
Atelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniAtelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniShellmates
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Aziz Darouichi
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfslimyaich3
 
La gestion des exceptions avec Java
La gestion des exceptions avec JavaLa gestion des exceptions avec Java
La gestion des exceptions avec JavaPapa Cheikh Cisse
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfacesAziz Darouichi
 
Java 8 - collections et stream
Java 8 - collections et streamJava 8 - collections et stream
Java 8 - collections et streamFranck SIMON
 
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
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objetsAziz Darouichi
 

Tendances (20)

Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphisme
 
Chap 03 poo en java partie1
Chap 03 poo en java partie1Chap 03 poo en java partie1
Chap 03 poo en java partie1
 
POO Java Introduction
POO Java IntroductionPOO Java Introduction
POO Java Introduction
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielle
 
Polymorphisme
PolymorphismePolymorphisme
Polymorphisme
 
Java RMI
Java RMIJava RMI
Java RMI
 
Servlets et JSP
Servlets et JSPServlets et JSP
Servlets et JSP
 
Atelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniAtelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El Hassani
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
 
La gestion des exceptions avec Java
La gestion des exceptions avec JavaLa gestion des exceptions avec Java
La gestion des exceptions avec Java
 
Cours c++
Cours c++Cours c++
Cours c++
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
 
Java 8 - collections et stream
Java 8 - collections et streamJava 8 - collections et stream
Java 8 - collections et stream
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfaces
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
 

Similaire à Héritage et polymorphisme- Jihen HEDHLI

chapitre4-HeritageetPolymorphisme.pdf
chapitre4-HeritageetPolymorphisme.pdfchapitre4-HeritageetPolymorphisme.pdf
chapitre4-HeritageetPolymorphisme.pdfMoez Moezm
 
Chapitre 4 la programmation oriénté objet
Chapitre 4 la programmation oriénté objetChapitre 4 la programmation oriénté objet
Chapitre 4 la programmation oriénté objetSäß Ŕî
 
Cours de C++, en français, 2002 - Cours 2.2
Cours de C++, en français, 2002 - Cours 2.2Cours de C++, en français, 2002 - Cours 2.2
Cours de C++, en français, 2002 - Cours 2.2Laurent BUNIET
 
POO - Chapitre6.pptx
POO - Chapitre6.pptxPOO - Chapitre6.pptx
POO - Chapitre6.pptxRAYENBOUAFIF1
 
Tutoriel-PHP-Introduction-à-la-POoooooooooooO.pdf
Tutoriel-PHP-Introduction-à-la-POoooooooooooO.pdfTutoriel-PHP-Introduction-à-la-POoooooooooooO.pdf
Tutoriel-PHP-Introduction-à-la-POoooooooooooO.pdfRihabBENLAMINE
 
Héritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdfHéritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdfAabidiHafid
 
classes-anonymes.pdf
classes-anonymes.pdfclasses-anonymes.pdf
classes-anonymes.pdfArouNa3
 

Similaire à Héritage et polymorphisme- Jihen HEDHLI (20)

chapitre4-HeritageetPolymorphisme.pdf
chapitre4-HeritageetPolymorphisme.pdfchapitre4-HeritageetPolymorphisme.pdf
chapitre4-HeritageetPolymorphisme.pdf
 
Chapitre 4 la programmation oriénté objet
Chapitre 4 la programmation oriénté objetChapitre 4 la programmation oriénté objet
Chapitre 4 la programmation oriénté objet
 
Cours5-heritage.pptx
Cours5-heritage.pptxCours5-heritage.pptx
Cours5-heritage.pptx
 
Héritage et redéfinition de méthode
Héritage et redéfinition de méthodeHéritage et redéfinition de méthode
Héritage et redéfinition de méthode
 
Cours de C++, en français, 2002 - Cours 2.2
Cours de C++, en français, 2002 - Cours 2.2Cours de C++, en français, 2002 - Cours 2.2
Cours de C++, en français, 2002 - Cours 2.2
 
POO - Chapitre6.pptx
POO - Chapitre6.pptxPOO - Chapitre6.pptx
POO - Chapitre6.pptx
 
Tutoriel-PHP-Introduction-à-la-POoooooooooooO.pdf
Tutoriel-PHP-Introduction-à-la-POoooooooooooO.pdfTutoriel-PHP-Introduction-à-la-POoooooooooooO.pdf
Tutoriel-PHP-Introduction-à-la-POoooooooooooO.pdf
 
Héritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdfHéritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdf
 
Theme 10
Theme 10Theme 10
Theme 10
 
Polymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraitePolymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraite
 
classes-anonymes.pdf
classes-anonymes.pdfclasses-anonymes.pdf
classes-anonymes.pdf
 
22-reflection.pdf
22-reflection.pdf22-reflection.pdf
22-reflection.pdf
 
Chapitre3 2013 POO
Chapitre3 2013 POOChapitre3 2013 POO
Chapitre3 2013 POO
 
Theme 10
Theme 10Theme 10
Theme 10
 
test doc
test doctest doc
test doc
 
Playing With PHP 5.3
Playing With PHP 5.3Playing With PHP 5.3
Playing With PHP 5.3
 
Java
JavaJava
Java
 
cours1.ppt
cours1.pptcours1.ppt
cours1.ppt
 
cours1.ppt
cours1.pptcours1.ppt
cours1.ppt
 
cours2.ppt
cours2.pptcours2.ppt
cours2.ppt
 

Dernier

Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre françaisTxaruka
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfRiDaHAziz
 
Pharmacologie des cardiotoniques pour Pharmacie
Pharmacologie des cardiotoniques pour PharmaciePharmacologie des cardiotoniques pour Pharmacie
Pharmacologie des cardiotoniques pour PharmacieLoloshka
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 37
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxMartin M Flynn
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...NaimDoumissi
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfRiDaHAziz
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfSylvianeBachy
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 37
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film françaisTxaruka
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 37
 
Cours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationCours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationpapediallo3
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxJCAC
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx      Film   françaisPas de vagues.  pptx      Film   français
Pas de vagues. pptx Film françaisTxaruka
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursStagiaireLearningmat
 

Dernier (20)

Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre français
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdf
 
Pharmacologie des cardiotoniques pour Pharmacie
Pharmacologie des cardiotoniques pour PharmaciePharmacologie des cardiotoniques pour Pharmacie
Pharmacologie des cardiotoniques pour Pharmacie
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdf
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film français
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
 
Cours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationCours de Management des Systèmes d'information
Cours de Management des Systèmes d'information
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx      Film   françaisPas de vagues.  pptx      Film   français
Pas de vagues. pptx Film français
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceurs
 

Héritage et polymorphisme- Jihen HEDHLI

  • 1. PROGRAMMATION OBJET Héritage & Polymorphisme Jihen HEDHLI
  • 2. Héritage  Présentation o Concept de l’Orienté Objet o Définir une hiérarchie de classes classe mère // classe de base classes héritées // classes dérivée // sous classes o Une classe hérite toujours d’une seule classe classe mère classes dérivées Animal Chien Tortue Teckel Lion Caniche Labrador Labrador Une tortue est un animal Un chien est un animal Un caniche est un chien Jihen HEDHLI- Programmation Objet 2
  • 3.  Avantages o Hériter ce qui a été défini dans la classe de base o Pouvoir enrichir les classes dérivées par de nouvelles méthodes redéfinies o Une instance de la classe fille encapsule une instance de la classe mère o Meilleure organisation des classes  Syntaxe class classe_fille extends classe mère public class Chien extends Animal class Labrador extends Chien Héritage Jihen HEDHLI- Programmation Objet 3
  • 4.  Mots clés o Accès au constructeur de la classe mère super(liste des arguments) o Accès à un attribut de la classe mère super.nom_attribut o Accès à une méthode de la classe mère super.nom_méthode(liste des arguments) Héritage Jihen HEDHLI- Programmation Objet 4
  • 5.  Exemple o Classe de base public class Personne { o 2 classes dérivées : enseignant et étudiant public class Personne { protected String nom; protected int age; protected String adresse; public Personne(String nom ,int age, String adr){ this.nom=nom; this.age=age; adresse=adr; } public void affiche(){ System.out.println("nom= "+nom+" age= "+age+" adresse= "+adresse);} } o 2 classes dérivées : enseignant et étudiant Héritage 5 Jihen HEDHLI- Programmation Objet
  • 6. o Classe dérivée1 Appel du constructeur de la classe mère, comme première instruction les attributs de la super classe sont hérités implicitement et passés au constructeur l’affichage d’un objet enseignant se base sur l’appel de la méthode affiche() de la super classe avec l’affichage de l’attribut spécifique à la classe enseignant "discipline" } public class Enseignant extends Personne { public String discipline; public Enseignant(String nom ,int age, String adr, String disp){ super( nom, age, adr); discipline=disp; } public void affiche(){ super.affiche(); System.out.println("discipline= "+discipline);} } Héritage Jihen HEDHLI- Programmation Objet 6
  • 7. o Classe dérivée2 o méthode redéfinie: conserve la même signature que la méthode affiche() de la classe mère ( le nom, le nombre et le type d’arguments), avec une implémentation (partiellement ou totalement) différente o La covariance est le fait de modifier le type de retour d’une méthode lors de sa redéfinition. public class Etudiant extends Personne { Public String section; public Etudiant(String nom ,int age, String adr, String sect){ super( nom, age, adr); section=sect; } public void affiche() { super.affiche(); System.out.println("section= "+section);} } Héritage 7 Jihen HEDHLI- Programmation Objet
  • 8.  Construction d’objets dérivés o Cas1: la classe de base et la classe dérivée possède chacune un constructeur Le constructeur de la classe héritée appelle celui de la classe mère pour construire un objet dérivé (exemple précédent) o Cas2: la classe de base ne possède pas de constructeur Le constructeur de la classe dérivée appelle optionnellement dans sa première instruction, le constructeur fournit par défaut de la classe mère moyennant l’instruction super(); public class X { // pas de constructeur définit } public classY extends X { publicY() { //constructeur de la classeY super(); // appel du constructeur de la classe mère généré par MVJ … } } // fin de la classeY Y y=newY(); // création d’un objet dérivé deY Héritage 8 Jihen HEDHLI- Programmation Objet
  • 9. o Cas3: la classe dérivée ne possède pas de constructeur Pour construire un objet dérivé, Le constructeur par défaut de la classe dérivée doit appeler:  Le constructeur par défaut de la classe de base, si elle ne possède pas de constructeur  Le constructeur sans argument de la classe de base, si elle possède au moins un constructeur  Si la classe de base possède d’autre constructeur avec argument, la création échoue, le compilateur génère des erreurs public class Personne { public String nom; public int age; public String adresse; public Personne(String nom ,int age, String adr){ this.nom=nom; this.age=age; adresse=adr; } public void affiche(){ System.out.println("nom= "+nom+" age= "+age+" adresse= "+adresse);}} Héritage 9 Jihen HEDHLI- Programmation Objet
  • 10. La classe Personne possède un constructeur avec arguments La classe Enseignant ne possède pas de constructeur une erreur est générée la solution ajouter un constructeur sans argument dans la classe de base Héritage 10 Jihen HEDHLI- Programmation Objet
  • 11.  Accès aux propriétés héritées o Une propriété déclarée public dans la classe de base est héritée par ses classes dérivées o Une propriété déclarée néant dans la classe de base est héritée par ses classes dérivées si les classes sont dans le même package o Une propriété déclarée private dans la classe de base n’est héritée par ses classes dérivées qu’en utilisant seulement les méthodes d’accès aux données( getter et setter) o Une propriété déclarée protected dans la classe de base est héritée par ses classes dérivées Héritage 11 Jihen HEDHLI- Programmation Objet
  • 12. Exemple Package test_utilisation; public class Personne { public String nom; public int age; protected String adresse; public Personne(String nom ,int age, String adr){ this.nom=nom; this.age=age; adresse=adr; } public void affiche(){ System.out.println("nom= "+nom+" age= "+age+" adresse= "+adresse);}} Héritage 12 Jihen HEDHLI- Programmation Objet
  • 13. Exemple } Package test_utilisation; public class Enseignant extends Personne { Public String discipline; public Enseignant(String nom ,int age, String adr, String disp){ super( nom, age, adr); discipline=disp; } public void affiche(){ super.affiche(); System.out.println("discipline= "+discipline);} public static void main(String args[]) { Enseignant ens=new Enseignant("ali",25," AouinaTunis", "électrique"); System.out.println("adresse= " + ens.adresse);} } Héritage 13 Jihen HEDHLI- Programmation Objet
  • 14.  Redéfinition d’une méthode o Une méthode static ou final ne peut pas être redéfinie. o Le droit d’accès d’une méthode redéfinie de la classe dérivée ne doit pas être moins élevé que la méthode initiale de la classe ascendante  Soit la méthode affiche() de la classe de base Personne présentée avec le modificateur public  Si la méthode redéfinie affiche() de la classe dérivée se présente comme suit Héritage 14 Jihen HEDHLI- Programmation Objet
  • 15.  Une erreur est générée  Les solutions:  La méthode affiche() redéfinie doit avoir l’accès public ou  La méthode initiale de la classe de base change son modificateur d’accès à néant, les deux classes doivent appartenir au même package Héritage 15 Jihen HEDHLI- Programmation Objet
  • 16.  Surcharge d’une méthode o Une classe dérivée peut surcharger une méthode de la classe de base Exemple Class A { public void f (int n) {…..} …} méthode surchargée Class B extends A { public void f (float n) {…..} …} A a , B b ; int n; float x; a.f(n) // appelle f(int) de A a.f(x) // Erreur, on a pas dans A f(float) b.f(n) // appelle f(int) de A b.f(x) // appelle f(float) de B Héritage 16 Jihen HEDHLI- Programmation Objet
  • 17. Polymorphisme  Présentation o Concept de l’orienté objet o Permet de manipuler des objets sans en connaitre leurs types spécifiques en se basant sur la relation d’héritage o Traduit la compatibilité entre un type ascendant et un type dérivé o Permet de choisir dynamiquement la méthode qui correspond au type réel de l’objet la liaison dynamique de méthodes 17 Jihen HEDHLI- Programmation Objet
  • 18.  Exemple1 o Considérons la classe de base Animal Polymorphisme 18 Jihen HEDHLI- Programmation Objet
  • 19. o Soit la classe dérivée cheval o La classe définit un constructeur cheval(), o La classe redéfinit les méthodes identifie() et se_deplacer() en appelant ces méthodes de la classe mère moyennant super() Polymorphisme 19 Jihen HEDHLI- Programmation Objet
  • 20. o soit les classes dérivées poisson et pigeon Polymorphisme 20 Jihen HEDHLI- Programmation Objet
  • 21. o Chacune des deux classes définit un constructeur o La classe pigeon redéfinit les méthodes identifie() et se_deplacer() sans appel aux méthodes de la classe mère o Considérons la classe de test TestPolymo Polymorphisme 21 Jihen HEDHLI- Programmation Objet
  • 22. o L’instance a de type Animal est utilisé pour créer d’autres instances de type cheval, poisson et pigeon compatibilité entre le type d’une classe de base et la référence d’une classe dérivée. o Qu’elle est la différence entre les appels successifs des méthodes identifie() et se_deplacer() sur l’instance a ? o Interprétons l’exécution: Polymorphisme 22 Jihen HEDHLI- Programmation Objet
  • 24. o La liaison dynamique des méthodes apparait au niveau exécution o À ce moment, le choix de la méthode dépend du type effectif de l’instance a Exemple2 o Le polymorphisme permet de créer un tableau d’objets hétérogènes o Considérons la classe TableauHeterogene Polymorphisme 24 Jihen HEDHLI- Programmation Objet
  • 25. o Tab est un tableau contenant des instances d’objets de types différents mais reliés entre eux par une relation d’héritage L’ exécution donne: o Pendant l’exécution et à chaque itération de la boucle for, on détermine le type effectif de la référence de l’objet tab[i] et on appelle la méthode adéquate redéfinie dans sa classe, Polymorphisme 25 Jihen HEDHLI- Programmation Objet
  • 26.  Transtypage o (cast en anglais) est la conversion d'une expression d'un certain type en une expression d'un autre type. https://fr.wikibooks.org/wiki/Programmation_Java/Transtypage o La conversion d’un type dérivé en un type de base est une conversion implicite légale o La conversion d’un type de base en un type dérivé est une conversion implicite illégale, nécessite une conversion explicite o Cette conversion peut être accepté au niveau de la compilation mais refusée au niveau de l’exécution vu l’incompatibilité entre les types Polymorphisme 26 Jihen HEDHLI- Programmation Objet
  • 27.  Exemple o L’instruction « ch1=an1; » génère une erreur de compilation Polymorphisme 27 Jihen HEDHLI- Programmation Objet
  • 28.  Exemple o Une conversion explicite est nécessaire, o La conversion résout l’erreur de la compilation et réussit l’exécution Polymorphisme 28 Jihen HEDHLI- Programmation Objet