UE 2I002 (ex LI230) : éléments de
programmation par objets avec Java
TD5 - Variables et méthodes de classes
!
Juliana Silva Bernardes
[email protected] Sumary
‣Héritage
‣Redéfinition de méthodes
‣Polymorphisme
2
Héritage
‣ Organize les classes de manière hiérarchique.
‣ Si la classe B herite de la class A : Class B EST UN Classe A
‣ Spécialiser une classe, ajouter des fonctionnalités dans une classe
‣ Hériter tout le comportement d’une classe existante
Forme
Rectangle Cercle
Carre
3
-B DMBTTF IÏSJUBOU EVOF DMBTTF WJEF FMMF OF QFVU QSPĕUFS EBVDVO EF TFT
Héritage
EÏĕOJS UPVUFT TFT WBSJBCMFT FU NÏUIPEFT 6OF SFMBUJPO EIÏSJUBHF TF EÏĕOJU FO +BW
VUJMJTÏ DPNNF EBOT MFYFNQMF TVJWBOU
‣ On suppose pour l’instant que la classe Forme est vide
public class Forme {}
public class Carre extends Rectangle{
public Carre (int cote){
super(cote, cote);
}
}
4
&O SFWBODIF MB DMBTTF QFVU CÏOÏĕDJFS EF MB DMBTTF FU OF OÏD
-B DMBTTF IÏSJUBOU EVOF DMBTTF WJEF FMMF OF QFVU QSPĕUFS EBVDVO EF TFT B
Héritage
EÏĕOJS UPVUFT TFT WBSJBCMFT FU NÏUIPEFT 6OF SFMBUJPO EIÏSJUBHF TF EÏĕOJU FO +BWB
VUJMJTÏ DPNNF EBOT MFYFNQMF TVJWBOU
‣ On suppose pour l’instant que la classe Forme est vide
public class Forme {}
public class Carre extends Rectangle{
public Carre (int cote){
super(cote, cote);
}
}
public class Test{
public static void main(String []a){
Carre c1 = new Carre(2);
}
}
5 MB DMBTTF
&O SFWBODIF QFVU CÏOÏĕDJFS EF MB DMBTTF FU OF OÏDF
Héritage
‣ On suppose pour l’instant que la classe Forme est vide
public class Forme {}
Carre
public class Carre extends Rectangle{
public Carre (int cote){
super(cote, cote);
c1
Rectangle
} larger = 2
} longuer = 2
public class Test{
public static void main(String []a){
Carre c1 = new Carre(2);
}
}
6
Héritage
‣ On suppose pour l’instant que la classe Forme est vide
public class Forme {}
Carre
public class Carre extends Rectangle{
public Carre (int cote){
super(cote, cote);
c1
Rectangle
} larger = 2
} longuer = 2
public class Test{
public static void main(String []a){
Carre c1 = new Carre(2);
c1.affiche();
}
}
Rectangle 2x2
7
NBJT RVF MF USBJUFNFOU FČFDUVÏ FTU SÏÏDSJU EBOT MB TPVTDMBTTF 7PJDJ MF DPEF EF MB DMBTTF Pá
Redéfinition de méthodes
TPOU SÏTPMVT MFT EFVY QSPCMÒNFT TPVMFWÏT
‣-PST
il est encore
EF MB possible
SFEÏĕOJUJPO accéderJM la
EVOF NÏUIPEF FTUmethode affiche
FODPSF QPTTJCMF de laË MBclasse
EBDDÏEFS rectangle?
NÏUIPEF SFEÏĕOJF
EBOT MB DMBTTF TVQÏSJFVSF $FU BDDÒT VUJMJTF ÏHBMFNFOU MF NPUDMÏ DPNNF QSÏĕYF Ë MB NÏUIPEF
%BOT OPUSF DBT JM GBVESBJU ÏDSJSF QPVS FČFDUVFS MF USBJUFNFOU EF MB NÏUIPEF
EF
&OĕO JM FTU QPTTJCMF EJOUFSEJSF MB SFEÏĕOJUJPO EVOF NÏUIPEF PV EVOF WBSJBCMF FO JOUSPEVJ
TBOU MF NPUDMÏ BV EÏCVU EVOF TJHOBUVSF EF NÏUIPEF PV EVOF EÏDMBSBUJPO EF WBSJBCMF *M
FTU BVTTJ QPTTJCMF EJOUFSEJSF MIÏSJUBHF EVOF DMBTTF FO VUJMJTBOU BV EÏCVU EF MB EÏDMBSBUJPO
EVOF DMBTTF BWBOU MF NPUDMÏ
1PMZNPSQIJTNF
-F QPMZNPSQIJTNF FTU MB GBDVMUÏ BUUSJCVÏF Ë VO PCKFU EÐUSF VOF JOTUBODF EF QMVTJFVST DMBTTFT
*M B VOF TFVMF DMBTTF iSÏFMMFw RVJ FTU DFMMF EPOU MF DPOTUSVDUFVS B ÏUÏ BQQFMÏ FO QSFNJFS DFTUËEJSF
8
MB DMBTTF ĕHVSBOU BQSÒT MF NBJT JM QFVU BVTTJ ÐUSF EÏDMBSÏ BWFD VOF DMBTTF TVQÏSJFVSF Ë TB DMBTTF
Redéfinition de méthodes
‣ il est encore possible accéder la methode affiche de la classe rectangle?
public class Test{
public class Carre extends Retangle {
public static void main(String []a){
Carre c1 = new Carre(2);
public Carre(int cote) {
c1.affiche();
super(cote, cote);
c1.afficheRec();
}
}
}
public void affiche() {
System.out.println("Carre" + getLonger());
}
public void afficheRec() {
super.affiche();
Carre 2
} Rectangle 2x2
}
9
Polymorphisme
‣ Un objet peut etre instance de plusieurs classes.
‣ Si la classe B hérite de la classe A :
‣ le type B «EST-UN» le type A
‣ les méthodes de A peut-être invoquée sur une instance de la class
‣ Absomption :
‣ Dans toute expression « qui attend » un A (type A), je peux « placer » un B à
la place
$IBQJUSF )ÏSJUBHF
-PQÏSBUFVS QFVU ÐUSF VUJMJTÏ QPVS UFTUFS MBQQBSUFOBODF Ë VOF DMBTTF DPNN
10
Polymorphisme
‣ Un objet peut etre instance de plusieurs classes.
‣ Si $IBQJUSF
la classe B hérite de la classe A :
)ÏSJUBHF
‣ le type B «EST-UN» le type A
‣ les méthodes de A peut-être invoquée sur une instance de la class
‣ Absomption :
‣ Dans toute expression « qui attend » un A (type A), je peux « placer » un B à
la place
-PQÏSBUFVS QFVU ÐUSF VUJMJTÏ QPVS UFTUFS MBQQBSUFOBODF Ë VOF DMBTTF DPNNF TVJU
11
Polymorphisme
‣ Un objet peut-FOTFNCMF
etre instance de plusieurs classes.
EFT DMBTTFT +BWB Z DPNQSJT DFMMFT ÏDSJUFT FO EFIPST EF M"1* GPSNF VOF IJÏSBSDIJF
‣ Si la classe
BWFDBVOF SBDJOFde
hérite VOJRVF $FUUFASBDJOF
la classe : FTU MB DMBTTF EPOU IÏSJUF UPVUF BVUSF DMBTTF &O FČFU TJ
WPVT OF QSÏDJTF[ QBT FYQMJDJUFNFOU VOF SFMBUJPO EIÏSJUBHF MPST EF MÏDSJUVSF EVOF DMBTTF DFMMFDJ
‣ le type B «EST-UN»
IÏSJUF QBS EÏGBVU EFleMB type
DMBTTFA (SÉDF Ë DFUUF QSPQSJÏUÏ EFT DMBTTFT HÏOÏSJRVFT Ƭ EF DSÏBUJPO
FU EF HFTUJPO
‣ les méthodes deEVO FOTFNCMF QMVT
A peut-être ÏMBCPSÏFT
invoquée RVFune
sur MFT UBCMFBVY
instanceSFHSPVQFOU
de la classEFT PCKFUT BQQBSUFOBOU Ë
MB DMBTTF EPOD EF OJNQPSUF RVFMMF DMBTTF
‣ Absomption 6OF EFT: QSPQSJÏUÏT JOEVJUFT QBS MF QPMZNPSQIJTNF FTU RVF MJOUFSQSÏUFVS +BWB FTU DBQBCMF EF
USPVWFS
‣ Dans MF USBJUFNFOU
toute Ë FČFDUVFS
expression « quiMPST EF MBQQFM
attend » unEVOF
A (typeNÏUIPEF
A), jeTVSpeux
VO PCKFU "JOTJ »
« placer QPVS
un QMVTJFVST
Bà
laPCKFUT
placeEÏDMBSÏT TPVT MB NÐNF DMBTTF NBJT OBZBOU QBT MB NÐNF DMBTTF SÏFMMF MF USBJUFNFOU BTTPDJÏ Ë
VOF NÏUIPEF EPOOÏ QFVU ÐUSF EJČÏSFOU 4J DFUUF NÏUIPEF FTU SFEÏĕOJF QBS MB DMBTTF SÏFMMF EVO PCKFU
PV QBS VOF DMBTTF TJUVÏF FOUSF MB DMBTTF SÏFMMF FU MB DMBTTF EF EÏDMBSBUJPO MF USBJUFNFOU FČFDUVÏ FTU
DFMVJ EÏĕOJ EBOT MB DMBTTF MB QMVT TQÏDJĕRVF EF MPCKFU FU RVJ SFEÏĕOJF MB NÏUIPEF
‣ Si la method affiche set redefinie dans routes les sous-classes de Forme, nous
%BOT OPUSF FYFNQMF MB NÏUIPEF FTU SFEÏĕOJF EBOT UPVUFT MFT TPVTDMBTTFT EF
pouvonsFUles appeller
MFT USBJUFNFOUT FČFDUVÏT TPOU
ŝ WPJS QBS FYFNQMF MFT DMBTTFT y
12