• Aucun résultat trouvé

UE 2I002 (ex LI230) : éléments de programmation par objets avec Java TD5 - Variables et méthodes de classes

N/A
N/A
Protected

Academic year: 2022

Partager "UE 2I002 (ex LI230) : éléments de programmation par objets avec Java TD5 - Variables et méthodes de classes"

Copied!
12
0
0

Texte intégral

(1)

UE 2I002 (ex LI230) : éléments de programmation par objets avec Java TD5 - Variables et méthodes de classes

!

Juliana Silva Bernardes

juliana.silva_bernardes@upmc.fr

(2)

2

‣Héritage

‣Redéfinition de méthodes

‣Polymorphisme

Sumary

(3)

3

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

(4)

4

‣ On suppose pour l’instant que la classe Forme est vide

public class Forme {}

$IBQJUSF )ÏSJUBHF

-B DMBTTF IÏSJUBOU EVOF DMBTTF WJEF FMMF OF QFVU QSPĕUFS EBVDVO EF TFT BUUSJCVUT FU EPJU EÏĕOJS UPVUFT TFT WBSJBCMFT FU NÏUIPEFT 6OF SFMBUJPO EIÏSJUBHF TF EÏĕOJU FO +BWB QBS MF NPUDMÏ

VUJMJTÏ DPNNF EBOT MFYFNQMF TVJWBOU

&O SFWBODIF MB DMBTTF QFVU CÏOÏĕDJFS EF MB DMBTTF FU OF OÏDFTTJUF QBT MB SÏ ÏDSJUVSF EF DFT NÏUIPEFT TJ DFMMFTDJ DPOWJFOOFOU Ë MB TPVTDMBTTF 5PVUFT MFT NÏUIPEFT FU WBSJBCMFT EF MB DMBTTF OF TPOU OÏBONPJOT QBT BDDFTTJCMFT EBOT MB DMBTTF 1PVS RVVO BUUSJCVU QVJTTF ÐUSF VUJMJTÏ EBOT VOF TPVTDMBTTF JM GBVU RVF TPO UZQF EBDDÒT TPJU PV PV TJ MFT EFVY DMBTTFT TPOU TJUVÏFT EBOT MF NÐNF QBDLBHF RVJM VUJMJTF MF UZQF EBDDÒT QBS EÏGBVU %BOT DFU FYFNQMF MFT WBSJBCMFT FU OF TPOU QBT BDDFTTJCMFT EBOT MB DMBTT RVJ EPJU

QBTTFS QBS MFT NÏUIPEFT FU EÏDMBSÏFT DPNNF QVCMJRVFT

3FEÏGJOJUJPO

-IÏSJUBHF JOUÏHSBM EFT BUUSJCVUT EF MB DMBTTF QPTF EFVY QSPCMÒNFT ŝ JM GBVU RVF DIBRVF DBSSÏ BJU VOF MPOHVFVS FU VOF MBSHFVS ÏHBMFT

Ş MB NÏUIPEF ÏDSJU MF NPU i w FO EÏCVU EF DIBÔOF *M TFSBJU TPVIBJUBCMF RVF DF TPJU i w RVJ TBďDIF

%F QMVT MFT DPOTUSVDUFVST OF TPOU QBT IÏSJUÏT QBS VOF TPVTDMBTTF *M GBVU EPOD ÏDSJSF VO DPOTUSVD UFVS TQÏDJĕRVF QPVS $FDJ OPVT QFSNFUUSB EF SÏTPVESF MF QSFNJFS QSPCMÒNF FO ÏDSJWBOU VO DPOTUSVDUFVS RVJ OF QSFOE RVVO QBSBNÒUSF RVJ TFSB BČFDUÏ Ë MB MPOHVFVS FU Ë MB MBSHFVS 1PVS BU USJCVFS VOF WBMFVS Ë DFT WBSJBCMFT RVJ TPOU QSJWÏFT MF DPOTUSVDUFVS EF EPJU GBJSF BQQFM BV

public class Carre extends Rectangle{

public Carre (int cote){

super(cote, cote);

}

}

Héritage

(5)

5

‣ On suppose pour l’instant que la classe Forme est vide

public class Forme {}

$IBQJUSF )ÏSJUBHF

-B DMBTTF IÏSJUBOU EVOF DMBTTF WJEF FMMF OF QFVU QSPĕUFS EBVDVO EF TFT BUUSJCVUT FU EPJU EÏĕOJS UPVUFT TFT WBSJBCMFT FU NÏUIPEFT 6OF SFMBUJPO EIÏSJUBHF TF EÏĕOJU FO +BWB QBS MF NPUDMÏ

VUJMJTÏ DPNNF EBOT MFYFNQMF TVJWBOU

&O SFWBODIF MB DMBTTF QFVU CÏOÏĕDJFS EF MB DMBTTF FU OF OÏDFTTJUF QBT MB SÏ ÏDSJUVSF EF DFT NÏUIPEFT TJ DFMMFTDJ DPOWJFOOFOU Ë MB TPVTDMBTTF 5PVUFT MFT NÏUIPEFT FU WBSJBCMFT EF MB DMBTTF OF TPOU OÏBONPJOT QBT BDDFTTJCMFT EBOT MB DMBTTF 1PVS RVVO BUUSJCVU QVJTTF ÐUSF VUJMJTÏ EBOT VOF TPVTDMBTTF JM GBVU RVF TPO UZQF EBDDÒT TPJU PV PV TJ MFT EFVY DMBTTFT TPOU TJUVÏFT EBOT MF NÐNF QBDLBHF RVJM VUJMJTF MF UZQF EBDDÒT QBS EÏGBVU %BOT DFU FYFNQMF MFT WBSJBCMFT FU OF TPOU QBT BDDFTTJCMFT EBOT MB DMBTT RVJ EPJU

QBTTFS QBS MFT NÏUIPEFT FU EÏDMBSÏFT DPNNF QVCMJRVFT

3FEÏGJOJUJPO

-IÏSJUBHF JOUÏHSBM EFT BUUSJCVUT EF MB DMBTTF QPTF EFVY QSPCMÒNFT ŝ JM GBVU RVF DIBRVF DBSSÏ BJU VOF MPOHVFVS FU VOF MBSHFVS ÏHBMFT

Ş MB NÏUIPEF ÏDSJU MF NPU i w FO EÏCVU EF DIBÔOF *M TFSBJU TPVIBJUBCMF RVF DF TPJU i w RVJ TBďDIF

%F QMVT MFT DPOTUSVDUFVST OF TPOU QBT IÏSJUÏT QBS VOF TPVTDMBTTF *M GBVU EPOD ÏDSJSF VO DPOTUSVD UFVS TQÏDJĕRVF QPVS $FDJ OPVT QFSNFUUSB EF SÏTPVESF MF QSFNJFS QSPCMÒNF FO ÏDSJWBOU VO DPOTUSVDUFVS RVJ OF QSFOE RVVO QBSBNÒUSF RVJ TFSB BČFDUÏ Ë MB MPOHVFVS FU Ë MB MBSHFVS 1PVS BU USJCVFS VOF WBMFVS Ë DFT WBSJBCMFT RVJ TPOU QSJWÏFT MF DPOTUSVDUFVS EF EPJU GBJSF BQQFM BV

public class Carre extends Rectangle{

public Carre (int cote){

super(cote, cote);

}

}

Héritage

public class Test{

public static void main(String []a){

Carre c1 = new Carre(2);

}

}

(6)

6

‣ 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);

}

}

Héritage

public class Test{

public static void main(String []a){

Carre c1 = new Carre(2);

}

}

larger = 2 longuer = 2 Carre

Rectangle

c1

(7)

7

‣ 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);

}

}

Héritage

public class Test{

public static void main(String []a){

Carre c1 = new Carre(2);

c1.affiche();

}

}

larger = 2 longuer = 2 Carre

Rectangle

c1

Rectangle 2x2

(8)

8

Redéfinition de méthodes

1SJODJQF EF MIÏSJUBHF

DPOTUSVDUFVS EF FO VUJMJTBOU MF NPUDMÏ RVJ GBJU BQQFM BV DPOTUSVDUFVS EF MB DMBTTF TVQÏSJFVSF DPNNF TVJU

3FNBSRVFT

● -BQQFM BV DPOTUSVDUFVS EVOF DMBTTF TVQÏSJFVSF EPJU UPVKPVST TF TJUVFS EBOT VO DPOTUSVD UFVS FU UPVKPVST FO UBOU RVF QSFNJÒSF JOTUSVDUJPO

● 4J BVDVO BQQFM Ë VO DPOTUSVDUFVS EVOF DMBTTF TVQÏSJFVSF OFTU GBJU MF DPOTUSVDUFVS GBJU BQQFM JNQMJDJUFNFOU Ë VO DPOTUSVDUFVS WJEF EF MB DMBTTF TVQÏSJFVSF DPNNF TJ MB MJHOF ÏUBJU QSÏTFOUF 4J BVDVO DPOTUSVDUFVS WJEF OFTU BDDFTTJCMF EBOT MB DMBTTF TVQÏSJFVSF VOF FSSFVS TF QSPEVJU MPST EF MB DPNQJMBUJPO

-F TFDPOE QSPCMÒNF QFVU ÐUSF SÏTPMV QBS VOF SFEÏĕOJUJPO EF NÏUIPEF 0O EJU RVVOF NÏUIPEF EVOF TPVTDMBTTF SFEÏĕOJU VOF NÏUIPEF EF TB DMBTTF TVQÏSJFVSF TJ FMMFT POU MB NÐNF TJHOBUVSF NBJT RVF MF USBJUFNFOU FČFDUVÏ FTU SÏÏDSJU EBOT MB TPVTDMBTTF 7PJDJ MF DPEF EF MB DMBTTF Pá TPOU SÏTPMVT MFT EFVY QSPCMÒNFT TPVMFWÏT

-PST EF MB SFEÏĕOJUJPO EVOF NÏUIPEF JM FTU FODPSF QPTTJCMF EBDDÏEFS Ë MB 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 MB DMBTTF ĕHVSBOU BQSÒT MF NBJT JM QFVU BVTTJ ÐUSF EÏDMBSÏ BWFD VOF DMBTTF TVQÏSJFVSF Ë TB DMBTTF SÏFMMF $FUUF QSPQSJÏUÏ FTU USÒT VUJMF QPVS MB DSÏBUJPO EFOTFNCMFT SFHSPVQBOU EFT PCKFUT EF DMBTTFT EJČÏSFOUFT DPNNF EBOT MFYFNQMF TVJWBOU

‣ il est encore possible accéder la methode affiche de la classe rectangle?

(9)

9

Redéfinition de méthodes

‣ il est encore possible accéder la methode affiche de la classe rectangle?

public class Test{

public static void main(String []a){

Carre c1 = new Carre(2);

c1.affiche();

c1.afficheRec();

}

}

public class Carre extends Retangle {

public Carre(int cote) { super(cote, cote);

}

public void affiche() {

System.out.println("Carre" + getLonger());

}

public void afficheRec() { super.affiche();

} }

Carre 2

Rectangle 2x2

(10)

10

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 DPNNF TVJU

-FYÏDVUJPO EF DF DPEF TVS MF UBCMFBV QSÏDÏEFOU BďDIF MF UFYUF TVJWBOU

-FOTFNCMF EFT DMBTTFT +BWB Z DPNQSJT DFMMFT ÏDSJUFT FO EFIPST EF M"1* GPSNF VOF IJÏSBSDIJF BWFD VOF SBDJOF VOJRVF $FUUF SBDJOF 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 IÏSJUF QBS EÏGBVU EF MB DMBTTF (SÉDF Ë DFUUF QSPQSJÏUÏ EFT DMBTTFT HÏOÏSJRVFT Ƭ EF DSÏBUJPO FU EF HFTUJPO EVO FOTFNCMF QMVT ÏMBCPSÏFT RVF MFT UBCMFBVY SFHSPVQFOU EFT PCKFUT BQQBSUFOBOU Ë MB DMBTTF EPOD EF OJNQPSUF RVFMMF DMBTTF

6OF EFT QSPQSJÏUÏT JOEVJUFT QBS MF QPMZNPSQIJTNF FTU RVF MJOUFSQSÏUFVS +BWB FTU DBQBCMF EF USPVWFS MF USBJUFNFOU Ë FČFDUVFS MPST EF MBQQFM EVOF NÏUIPEF TVS VO PCKFU "JOTJ QPVS QMVTJFVST PCKFUT EÏ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

%BOT OPUSF FYFNQMF MB NÏUIPEF FTU SFEÏĕOJF EBOT UPVUFT MFT TPVTDMBTTFT EF FU MFT USBJUFNFOUT FČFDUVÏT TPOU

ŝ WPJS QBS FYFNQMF MFT DMBTTFT y

(11)

11

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 DPNNF TVJU

-FYÏDVUJPO EF DF DPEF TVS MF UBCMFBV QSÏDÏEFOU BďDIF MF UFYUF TVJWBOU

-FOTFNCMF EFT DMBTTFT +BWB Z DPNQSJT DFMMFT ÏDSJUFT FO EFIPST EF M"1* GPSNF VOF IJÏSBSDIJF BWFD VOF SBDJOF VOJRVF $FUUF SBDJOF 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 IÏSJUF QBS EÏGBVU EF MB DMBTTF (SÉDF Ë DFUUF QSPQSJÏUÏ EFT DMBTTFT HÏOÏSJRVFT Ƭ EF DSÏBUJPO FU EF HFTUJPO EVO FOTFNCMF QMVT ÏMBCPSÏFT RVF MFT UBCMFBVY SFHSPVQFOU EFT PCKFUT BQQBSUFOBOU Ë MB DMBTTF EPOD EF OJNQPSUF RVFMMF DMBTTF

6OF EFT QSPQSJÏUÏT JOEVJUFT QBS MF QPMZNPSQIJTNF FTU RVF MJOUFSQSÏUFVS +BWB FTU DBQBCMF EF USPVWFS MF USBJUFNFOU Ë FČFDUVFS MPST EF MBQQFM EVOF NÏUIPEF TVS VO PCKFU "JOTJ QPVS QMVTJFVST PCKFUT EÏ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

%BOT OPUSF FYFNQMF MB NÏUIPEF FTU SFEÏĕOJF EBOT UPVUFT MFT TPVTDMBTTFT EF FU MFT USBJUFNFOUT FČFDUVÏT TPOU

ŝ WPJS QBS FYFNQMF MFT DMBTTFT y

(12)

12

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 DPNNF TVJU

-FYÏDVUJPO EF DF DPEF TVS MF UBCMFBV QSÏDÏEFOU BďDIF MF UFYUF TVJWBOU

-FOTFNCMF EFT DMBTTFT +BWB Z DPNQSJT DFMMFT ÏDSJUFT FO EFIPST EF M"1* GPSNF VOF IJÏSBSDIJF BWFD VOF SBDJOF VOJRVF $FUUF SBDJOF 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 IÏSJUF QBS EÏGBVU EF MB DMBTTF (SÉDF Ë DFUUF QSPQSJÏUÏ EFT DMBTTFT HÏOÏSJRVFT Ƭ EF DSÏBUJPO FU EF HFTUJPO EVO FOTFNCMF QMVT ÏMBCPSÏFT RVF MFT UBCMFBVY SFHSPVQFOU EFT PCKFUT BQQBSUFOBOU Ë MB DMBTTF EPOD EF OJNQPSUF RVFMMF DMBTTF

6OF EFT QSPQSJÏUÏT JOEVJUFT QBS MF QPMZNPSQIJTNF FTU RVF MJOUFSQSÏUFVS +BWB FTU DBQBCMF EF USPVWFS MF USBJUFNFOU Ë FČFDUVFS MPST EF MBQQFM EVOF NÏUIPEF TVS VO PCKFU "JOTJ QPVS QMVTJFVST PCKFUT EÏ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

%BOT OPUSF FYFNQMF MB NÏUIPEF FTU SFEÏĕOJF EBOT UPVUFT MFT TPVTDMBTTFT EF FU MFT USBJUFNFOUT FČFDUVÏT TPOU

ŝ WPJS QBS FYFNQMF MFT DMBTTFT y

‣ Si la method affiche set redefinie dans routes les sous-classes de Forme, nous

pouvons les appeller

Références

Documents relatifs

1PVS BWBODFS EBOT MB DPNQSÏIFOTJPO EV WÏDV EF MBNCJBODF FU QPVS USPVWFS EFT EPVUJMT JOUÏHSBUFVST QSPQSFT Ë BJEFS MB EÏNBSDIF EF QSPKFU BSDIJUFDUVSBM FU VSCBJO VO

1.1.1.Grandeurs cinétiques moyennées sur des collections de particules 1.1.2.L’échelle mésoscopique : grandeurs locales. 1.2.Les

– et d’e↵ectuer les instructions n´ecessaires pour la cr´eation d’un objet de cette classe Les constructeurs sont appel´es quand on cr´ee (mot-cl´e new) un objet de cette

On ne peut pas utiliser l’opérateur « point » (.) sur les variables de la classe Chien ailleurs que dans la classe Chien

UE 2I002 (ex LI230) : éléments de programmation par objets avec Java!. TD4 - Composition,

‣ Un tableau est une structure de données contenant un groupe d'éléments tous du même type. ‣ Le type des éléments peut être un type primitif ou

‣ boolean, byte, short, char, int, long, float et double, sont associées des classes Boolean, Byte, Short, Character, Integer, Long, Float et Double. ‣ Ces classes ont des

Dans cette partie sont détaillées les décisions opérationnelles en matière de gestion et de finance : construction du bilan, affectation des opérations comptables, calcul