UE 2I002 (ex LI230) : éléments de programmation par objets
avec Java
Juliana Silva Bernardes
[email protected]
http://www.lcqb.upmc.fr/julianab/teaching/JAVA/
!
Contrôle des connaissances
• Règle de la licence : exam + CC
• Pour la note exam + CC, les pondérations sont :
– Examen : 60%
– Contrôle continu : 40%
• TMEsolo 20%
• contrôlesTD 15%
• participation 5%
!
Organisation de l’UE
• 1 - Classe : définition, syntaxe,
• 2 - Encapsulation, surcharge
• 3 -Tableaux, tableaux d’objets
• CC 1 - 5 Oct
• 4 - Composition, copie d’objets
• 5 - Variables et méthodes de classes
• 6 - Héritage et modélisation
• CC 1I - 9 Nov
• 7 - Héritage et classe abstract
• 8 - Héritage et liaison dynamique
• 9 - Exceptions
• 10 - Flux
Organisation de l’UE
• TME -SOLO
• 23 Nov
Type primitifs
Types numériques entiers : byte, short, int et long , Types numériques réels : float et double ,
Type caractère : char ,
Type booléen : boolean (2 valeurs false ou true)
• char est aussi numerique.
char int long float double
char a1 = ‘A';
!
int a2 = a1;
!
long a3 = a2;
!
float a4= a3;
!
double a5 = a4;
System.out.println(a1+" "+a2+" "+a3+" "+a4+" "+a5);
System.out.println(a1 + a2);
Output
Syntaxe du langage
‣ le caractère de fin d'une instruction est“;”
a = c + c;
‣ les commentaries de ligne “
//” et commentaries de blocks “
/*”et“
*/”
! !
int a; // ce commentaire tient sur une ligne
/*Ce commentaire nécessite 2 lignes*/
int a;
Java, language à objets
Notion d’objet, 1ère notion de POO
Java, langage à objets
Pour savor plus :
https://www.youtube.com/watch?v=BNEtWb3WceQ
https://www.youtube.com/watch?v=bFJu2NvOhyY
Java, langage à objets
Nom
attributs
methodes
Les propriétés
Fonctions associées à la définition d’une classe.
constructers
Notion d’objet, 1ère notion de POO
Creation des objets.
Java, langage à objets
Exemples de classes?
Carre
cote
int surface() carre(int cote)
public class Carre { private int cote;
public Carre(int cote) { this.cote = cote;
}
public int surface() { return cote*cote;
}
}
Java, langage à objets
Exemples de objets?
Carre carre1 = new Carre(5);
Carre carre2 = new Carre(10);
Carre carre3;
System.out.println(carre1.surface());
System.out.println(carre2.surface());
System.out.println(carre3.surface());
public class Carre { int cote;
Carre(int cote) { this.cote = cote;
}
public int surface() { return cote*cote;
} }
Classe
Creation des objets et appelle à methodes
Memoire
cote=5
carre1
Output
cote=10
carre2 carre3
$ 25
$ 100
$ ERROR
Premiers pas
‣ Un programme écrit en Java consiste en un ensemble de classes
!
‣ L’exécution du programme commence par l’exécution d’une classe qui doit avoir (implémenter) une méthode particulière
“ public static void main(String[] args) ”
! public class HelloWorld {
public static void main(String[] args) {
System.out.println(”Hello world”);
} }
javac HelloWorld.java
java HelloWorld.class
Compilation
Execution
Premiers pas
public class HelloWorld2 {
public static void main(String[] args) {
System.out.println(”Hello world”);
} }
javac HelloWorld.java java HelloWorld.class
Compilation Execution
Hello world
HelloWorld.java:1: error: class HelloWorld2 is public, should be declared in a file named HelloWorld2.java
public class HelloWorld2 { ^
1 error
A
Premiers pas
public class HelloWorld {
public void main(String[] args) {
System.out.println(”Hello world”);
} }
javac HelloWorld.java
Compilation
java HelloWorld
Error: Main method is not static in class HelloWorld, please define the main method as:
public static void main(String[] args)
java HelloWorld.class
Execution
B
Premiers pas
public class HelloWorld {
public static void main(String args) {
System.out.println(”Hello world”);
} }
javac HelloWorld.java
Compilation
java HelloWorld.class
Execution
Error: Main method not found in class HelloWorld, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
C
Premiere class
public class Rectangle {
private int longueur;
private int largeur;
private int origine_x;
private int origine_y;
public Rectangle (int longueur, int largeur) { this.longueur = longueur;
this.largeur = largeur;
}
public void deplace(int x, int y) {
this.origine_x = this.origine_x + x;
this.origine_y = this.origine_y + y;
}
public int surface() {
return this.longueur * this.largeur;
Quelles sont (a) les variables d’instance ?
Les variables qui sont des parametres de methodes ?
Où est le constructeur ?
Quelles sont les methodes de cette classe ?
D
E
F
G
Premiere class
public class Forme {
public static void main(String[] args) {
//Cree un retangle de longueur 5 et largeur 10 Rectangle mon_rectangle = new Rectangle(5,10);
//Deplacer à la position 3,4 mon_rectangle.deplacer(3,4);
//Calcule et afficher la surface
System.out.println(”la surface est :” + mon_rectangle.surface());
}
La methode toString
public class Rectangle {
private int longueur, largeur, origine_x; origine_y;
public Rectangle (int longueur, int largeur) { this.longueur = longueur;
this.largeur = largeur;
}
public void deplace(int x, int y) {
this.origine_x = this.origine_x + x;
this.origine_y = this.origine_y + y;
}
public int surface() {
return this.longueur * this.largeur;
}
public String toString() { String s;
s = “Position (“ + this.origine_x + “,” + this.origine_y + “)\n”;
La methode toString
public class Forme {
public static void main(String[] args) { Rectangle r1 = new Rectangle(5, 10);
r1.deplace(4,5);
System.out.println(r1.toString());
}
19
Packages
‣
Un grand nombre de classes, fournies par Java SE, implémentent des données et traitements génériques utilisables par un grand nombre d’applications.
‣
Ces classes forment l’API (Application Programmer Interface) du langage Java.
‣
Une documentation en ligne pour l’API java est disponible à l’URL : http://docs.oracle.com/javase/7/docs/api/
‣
Toutes ces classes sont organisées en packages (ou bibliothèques) dédiés à un thème précis.
$IBQJUSF ²MÏNFOUT EF QSPHSBNNBUJPO +BWB
☛ 3FNBSRVF JNQPSUBOUF JM FTU PCMJHBUPJSF EJNQMÏNFOUFS DIBRVF DMBTTF QVCMJRVF EBOT VO ĕDIJFS TÏQBSÏ FU JM FTU JOEJTQFOTBCMF RVF DF ĕDIJFS BJU MF NÐNF OPN RVF DFMVJ EF MB DMBTTF %BOT
MF DBT QSÏDÏEFOU EFVY ĕDIJFST POU BJOTJ ÏUÏ DSÏÏT FU
1BDLBHFT
6O HSBOE OPNCSF EF DMBTTFT GPVSOJFT QBS +BWB 4& JNQMÏNFOUFOU EFT EPOOÏFT FU USBJUFNFOUT HÏOÏSJRVFT VUJMJTBCMFT QBS VO HSBOE OPNCSF EBQQMJDBUJPOT $FT DMBTTFT GPSNFOU M"1* "QQMJDBUJPO 1SPHSBNNFS *OUFSGBDF EV MBOHBHF +BWB 6OF EPDVNFOUBUJPO FO MJHOF QPVS M"1* KBWB FTU EJTQPOJCMF Ë M63-
5PVUFT DFT DMBTTFT TPOU PSHBOJTÏFT FO QBDLBHFT PV CJCMJPUIÒRVFT EÏEJÏT Ë VO UIÒNF QSÏDJT 1BSNJ MFT QBDLBHFT MFT QMVT VUJMJTÏT PO QFVU DJUFS MFT TVJWBOUT
1BDLBHF %FTDSJQUJPO
KBWBBXU $MBTTFT HSBQIJRVFT FU EF HFTUJPO EJOUFSGBDFT KBWBJP (FTUJPO EFT FOUSÏFTTPSUJFT
KBWBMBOH $MBTTFT EF CBTF JNQPSUÏ QBS EÏGBVU KBWBVUJM $MBTTFT VUJMJUBJSFT
KBWBYTXJOH "VUSFT DMBTTFT HSBQIJRVFT
1PVS BDDÏEFS Ë VOF DMBTTF EVO QBDLBHF EPOOÏ JM GBVU QSÏBMBCMFNFOU JNQPSUFS DFUUF DMBTTF PV TPO QBDLBHF 1BS FYFNQMF MB DMBTTF BQQBSUFOBOU BV QBDLBHF RVJ JNQMÏNFOUF VO FOTFNCMF EF NÏUIPEFT EF USBJUFNFOU TVS VOF EBUF QFVU ÐUSF JNQPSUÏF EF EFVY NBOJÒSFT
● VOF TFVMF DMBTTF EV QBDLBHF FTU JNQPSUÏF
● UPVUFT MFT DMBTTFT EV QBDLBHF TPOU JNQPSUÏFT NÐNF MFT DMBTTFT OPO VUJMJTÏFT
-F QSPHSBNNF TVJWBOU VUJMJTF DFUUF DMBTTF QPVS BďDIFS MB EBUF BDUVFMMF
‣
Pour accéder à une classe d’un package donné, il faut importer cette classe ou son package
import java.util.Date;
import java.util.*;
Packages
‣
Le programme suivant utilise cette classe pour afficher la date actuelle :
import java.util.Date;
public class DateMain {
public static void main(String[] args) {
Date today = new Date();
System.out.println(”Nous sommes le ” + today.toString());
} }
‣
Vous pouvez créer vos propres packages en précisant, avant la déclaration d’une classe, le package auquel elle appartient.
package myPack;
public class HelloWorld {
public static void main(String[] args) { System.out.println(”Hello world”);
mkdir myPack
!
Variables et méthodes
‣
Visibilité des champs !
‣
Le mot-clé public autorise n’importe quel objet à utiliser la classe, les variables ou la méthode déclarée comme publique.
7BSJBCMFT FU NÏUIPEFT
*M FTU QPTTJCMF EF DSÏFS WPT QSPQSFT QBDLBHFT FO QSÏDJTBOU BWBOU MB EÏDMBSBUJPO EVOF DMBTTF MF QBDLBHF BVRVFM FMMF BQQBSUJFOU 1PVS BTTJHOFS MB DMBTTF QSÏDÏEFOUF Ë VO QBDLBHF OPNNÏ JM GBVU NPEJĕFS MF ĕDIJFS EF DFUUF DMBTTF DPNNF TVJU
&OĕO JM GBVU RVF MF DIFNJO EBDDÒT EV ĕDIJFS DPSSFTQPOEF BV OPN EF TPO QBDLBHF $FMVJDJ EPJU EPOD ÐUSF TJUVÏ EBOT VO SÏQFSUPJSF BDDFTTJCMF Ë QBSUJS EFT DIFNJOT EBDDÒT EÏĕOJT MPST EF MB DPNQJMBUJPO PV EF MFYÏDVUJPO WPJS TFDUJPO ŝŝŝ
7BSJBCMFT FU NÏUIPEFT
7JTJCJMJUÏ EFT DIBNQT
%BOT MFT FYFNQMFT QSÏDÏEFOUT MF NPUDMÏ BQQBSBÔU QBSGPJT BV EÏCVU EVOF EÏDMBSBUJPO EF DMBTTF PV EF NÏUIPEF TBOT RVJM BJU ÏUÏ FYQMJRVÏ KVTRVJDJ $F NPUDMÏ BVUPSJTF OJNQPSUF RVFM PCKFU Ë VUJMJTFS MB DMBTTF PV MB NÏUIPEF EÏDMBSÏF DPNNF QVCMJRVF -B QPSUÏF EF DFUUF BVUPSJTBUJPO EÏQFOE EF MÏMÏNFOU Ë MBRVFMMF FMMF TBQQMJRVF WPJS MF UBCMFBV şŝ
5ĮįĹIJ şŝ o 1PSUÏF EFT BVUPSJTBUJPOT
²MÏNFOU "VUPSJTBUJPOT 7BSJBCMF -FDUVSF FU ÏDSJUVSF .ÏUIPEF "QQFM EF MB NÏUIPEF
$MBTTF *OTUBODJBUJPO EPCKFUT EF DFUUF DMBTTF FU BDDÒT BVY WBSJBCMFT FU NÏUIPEFT EF DMBTTF
-F NPEF OFTU CJFO TßS QBT MF TFVM UZQF EBDDÒT EJTQPOJCMF FO +BWB %FVY BVUSFT NPU DMÏT QFVWFOU ÐUSF VUJMJTÏT FO QMVT EV UZQF EBDDÒT QBS EÏGBVU FU -F UBCMFBV şŞ SÏDBQJUVMF DFT EJČÏSFOUT UZQFT EBDDÒT MB OPUJPO EF TPVTDMBTTF FTU FYQMJRVÏF EBOT MB TFDUJPO Š
5ĮįĹIJ şŞ o "VUPSJTBUJPOT EBDDÒT
EÏGBVU
%BOT MB NÐNF DMBTTF 0VJ 0VJ 0VJ 0VJ
%BOT VOF DMBTTF EV 0VJ 0VJ 0VJ /PO
NÐNF QBDLBHF
%BOT VOF TPVTDMBTTF 0VJ 0VJ /PO /PO
EVO BVUSF QBDLBHF
%BOT VOF DMBTTF RVFMDPO 0VJ /PO /PO /PO
‣
Deux autres mot- clés peuvent être utilisés pour limiter l’accès: protected et private.
7BSJBCMFT FU NÏUIPEFT
*M FTU QPTTJCMF EF DSÏFS WPT QSPQSFT QBDLBHFT FO QSÏDJTBOU BWBOU MB EÏDMBSBUJPO EVOF DMBTTF MF QBDLBHF BVRVFM FMMF BQQBSUJFOU 1PVS BTTJHOFS MB DMBTTF QSÏDÏEFOUF Ë VO QBDLBHF OPNNÏ JM GBVU NPEJĕFS MF ĕDIJFS EF DFUUF DMBTTF DPNNF TVJU
&OĕO JM GBVU RVF MF DIFNJO EBDDÒT EV ĕDIJFS DPSSFTQPOEF BV OPN EF TPO QBDLBHF $FMVJDJ EPJU EPOD ÐUSF TJUVÏ EBOT VO SÏQFSUPJSF BDDFTTJCMF Ë QBSUJS EFT DIFNJOT EBDDÒT EÏĕOJT MPST EF MB DPNQJMBUJPO PV EF MFYÏDVUJPO WPJS TFDUJPO ŝŝŝ
7BSJBCMFT FU NÏUIPEFT
7JTJCJMJUÏ EFT DIBNQT
%BOT MFT FYFNQMFT QSÏDÏEFOUT MF NPUDMÏ BQQBSBÔU QBSGPJT BV EÏCVU EVOF EÏDMBSBUJPO EF DMBTTF PV EF NÏUIPEF TBOT RVJM BJU ÏUÏ FYQMJRVÏ KVTRVJDJ $F NPUDMÏ BVUPSJTF OJNQPSUF RVFM PCKFU Ë VUJMJTFS MB DMBTTF PV MB NÏUIPEF EÏDMBSÏF DPNNF QVCMJRVF -B QPSUÏF EF DFUUF BVUPSJTBUJPO EÏQFOE EF MÏMÏNFOU Ë MBRVFMMF FMMF TBQQMJRVF WPJS MF UBCMFBV şŝ
5ĮįĹIJ şŝ o 1PSUÏF EFT BVUPSJTBUJPOT
²MÏNFOU "VUPSJTBUJPOT 7BSJBCMF -FDUVSF FU ÏDSJUVSF .ÏUIPEF "QQFM EF MB NÏUIPEF
$MBTTF *OTUBODJBUJPO EPCKFUT EF DFUUF DMBTTF FU BDDÒT BVY WBSJBCMFT FU NÏUIPEFT EF DMBTTF
-F NPEF OFTU CJFO TßS QBT MF TFVM UZQF EBDDÒT EJTQPOJCMF FO +BWB %FVY BVUSFT NPU DMÏT QFVWFOU ÐUSF VUJMJTÏT FO QMVT EV UZQF EBDDÒT QBS EÏGBVU FU -F UBCMFBV şŞ SÏDBQJUVMF DFT EJČÏSFOUT UZQFT EBDDÒT MB OPUJPO EF TPVTDMBTTF FTU FYQMJRVÏF EBOT MB TFDUJPO Š
5ĮįĹIJ şŞ o "VUPSJTBUJPOT EBDDÒT
EÏGBVU
%BOT MB NÐNF DMBTTF 0VJ 0VJ 0VJ 0VJ
%BOT VOF DMBTTF EV 0VJ 0VJ 0VJ /PO
NÐNF QBDLBHF
%BOT VOF TPVTDMBTTF 0VJ 0VJ /PO /PO
EVO BVUSF QBDLBHF
%BOT VOF DMBTTF RVFMDPO 0VJ /PO /PO /PO RVF EVO BVUSF QBDLBHF
!
Structures de contrôle
!
‣
Instructions conditionnelles !
0QÏSBUFVST
$IBÔOFT EF DBSBDUÒSFT
-FT DIBÔOFT EF DBSBDUÒSFT OF TPOU QBT DPOTJEÏSÏFT FO +BWB DPNNF VO UZQF QSJNJUJG PV DPNNF VO UBCMFBV 0O VUJMJTF VOF DMBTTF QBSUJDVMJÒSF OPNNÏF GPVSOJF EBOT MF QBDLBHF -FT WBSJBCMFT EF UZQF 4USJOH POU MFT DBSBDUÏSJTUJRVFT TVJWBOUFT
● MFVS WBMFVS OF QFVU QBT ÐUSF NPEJĕÏF
● PO QFVU VUJMJTFS MPQÏSBUFVS QPVS DPODBUÏOFS EFVY DIBÔOFT EF DBSBDUÒSFT
● MJOJUJBMJTBUJPO EVOF DIBÔOF EF DBSBDUÒSFT TÏDSJU
● VO FOTFNCMF EF NÏUIPEFT EF MB DMBTTF QFSNFUUFOU EFČFDUVFS EFT PQÏ SBUJPOT PV EFT UFTUT TVS VOF DIBÔOF EF DBSBDUÒSFT WPJS MB EPDVNFOUBJPO EF MB DMBTTF
0QÏSBUFVST
6OF MJTUF EFT PQÏSBUFVST EJTQPOJCMFT FO +BWB FTU QSÏTFOUÏF QBS PSESF EF QSJPSJUÏ EÏDSPJTTBOUF EBOT MF UBCMFBV ŞŞ
4USVDUVSFT EF DPOUSÙMF
-FT TUSVDUVSFT EF DPOUSÙMF QFSNFUUFOU EFYÏDVUFS VO CMPD EJOTUSVDUJPOT TPJU QMVTJFVST GPJT JOTUSVDUJPOT JUÏSBUJWFT TPJU TFMPO MB WBMFVS EVOF FYQSFTTJPO JOTUSVDUJPOT DPOEJUJPOOFMMFT PV EF DIPJY NVMUJQMF %BOT UPVT DFT DBT VO CMPD EJOTUSVDUJPO FTU
● TPJU VOF JOTUSVDUJPO VOJRVF
● TPJU VOF TVJUF EJOTUSVDUJPOT DPNNFOÎBOU QBS VOF BDDPMBEF PVWSBOUF i w FU TF UFSNJOBOU QBS VOF BDDPMBEF GFSNBOUF i w
*OTUSVDUJPOT DPOEJUJPOOFMMFT
4ZOUBYF
< >
PV
EPJU SFOWPZFS VOF WBMFVS CPPMÏFOOF 4J DFMMFDJ FTU WSBJF DFTU SFTQ RVJ FTU FYÏDVUÏ TJOPO SFTQ FTU FYÏDVUÏ -B QBSUJF FTU GBDVMUBUJWF
&YFNQMF
if (a == b) { a = 50;
b = 0;
}else {
a = a - 1;
}
!
Structures de contrôle
!
‣
Instructions conditionnelles !
« == » : permet de tester l'égalité.
! « != » : permet de tester l’inégalité.
! « < » : strictement inférieur.
! « <= » : inférieur ou égal.
! « > » : strictement supérieur.
! « >= » : supérieur ou égal.
! « && » : l'opérateur ET. Il permet de préciser une condition
! « || » : le OU. Même combat que le précédent.
! « ? : » : l'opérateur ternaire. Pour celui-ci, vous comprendrez mieux avec un exemple
qui sera donné vers la fin de ce chapitre.
!
Structures de contrôle
!
‣
Instructions conditionnelles !
Faire une méthode pour tester si un entier est positif ou négatif. H
public void testNombre(int i){
!
if (i < 0)
System.out.println("Ce nombre est négatif !");
else if(i > 0)
System.out.println("Ce nombre est positif !");
else
System.out.println("Ce nombre est nul !");
!
Structures de contrôle
!
‣
Instructions conditionnelles !
Faire une méthode pour vérifier si un entier est compris entre 50 et 100 I
public void testIntervalle(int i){
!
if (i < 100 && i > 50)
System.out.println("Le nombre est bien dans l'intervalle.");
else
System.out.println("Le nombre n'est pas dans l'intervalle.");
}
26
!
Structures de contrôle
!
!
‣
Instructions itératives
‣
Les instruction itératives permettent d’exécuter plusieurs fois un bloc d’instructions
4USVDUVSFT EF DPOUSÙMF
ş SFUPVS Ë MÏUBQF ŝ
Š MB CPVDMF FTU UFSNJOÏF FU MF QSPHSBNNF DPOUJOVF TPO FYÏDVUJPO FO JOUFSQSÏUBOU MFT JOTUSVD UJPO TVJWBOU MF CMPD
4ZOUBYF
&YFNQMF
'BJSF5BOU2VF
-FYÏDVUJPO EF DFUUF JOTUSVDUJPO TVJU MFT ÏUBQFT TVJWBOUFT ŝ MF CMPD FTU FYÏDVUÏ
Ş MB DPOEJUJPO RVJ EPJU SFOWPZFS VOF WBMFVS CPPMÏFOOF FTU ÏWBMVÏF 4J DFMMFDJ FTU WSBJF PO SFUPVSOF Ë MÏUBQF ŝ TJOPO PO QBTTF Ë MÏUBQF ş
ş MB CPVDMF FTU UFSNJOÏF FU MF QSPHSBNNF DPOUJOVF TPO FYÏDVUJPO FO JOUFSQSÏUBOU MFT JOTUSVD UJPO TVJWBOU MF CMPD
4ZOUBYF
&YFNQMF
1PVS'BJSF
$FUUF CPVDMF FTU DPOTUJUVÏF EF USPJT QBSUJFT J VOF JOJUJBMJTBUJPO MB EÏDMBSBUJPO EF WBSJBCMFT MPDBMFT Ë MB CPVDMF FTU BVUPSJTÏF EBOT DFUUF QBSUJF JJ VOF DPOEJUJPO EBSSÐU JJJ VO FOTFNCMF EJOTUSVDUJPOT Ë FYÏDVUFS BQSÒT DIBRVF JUÏSBUJPO DIBDVOF EF DFT JOTUSVDUJPOT FTU TÏQBSÏF QBS VOF WJSHVMF -FYÏDVUJPO EF DFUUF JOTUSVDUJPO TVJU MFT ÏUBQFT TVJWBOUFT
ŝ MFT JOJUJBMJTBUJPOT TPOU FČFDUVÏFT
Ş MB DPOEJUJPO RVJ EPJU SFOWPZFS VOF WBMFVS CPPMÏFOOF FTU ÏWBMVÏF 4J DFMMFDJ FTU WSBJF PO QBTTF Ë MÏUBQF Ş TJOPO PO QBTTF Ë MÏUBQF Ţ
ş MF CMPD QSJODJQBM FTU FYÏDVUÏ
Š MFT JOTUSVDUJPOT Ë FYÏDVUFS BQSÒT DIBRVF JUÏSBUJPO TPOU FYÏDVUÏFT š SFUPVS Ë MÏUBQF Ş
Ţ MB CPVDMF FTU UFSNJOÏF FU MF QSPHSBNNF DPOUJOVF TPO FYÏDVUJPO FO JOUFSQSÏUBOU MFT JOTUSVD UJPOT TVJWBOU MF CMPD QSJODJQBM
4ZOUBYF
&YFNQMF
4USVDUVSFT EF DPOUSÙMF
ş SFUPVS Ë MÏUBQF ŝ
Š MB CPVDMF FTU UFSNJOÏF FU MF QSPHSBNNF DPOUJOVF TPO FYÏDVUJPO FO JOUFSQSÏUBOU MFT JOTUSVD UJPO TVJWBOU MF CMPD
4ZOUBYF
&YFNQMF
'BJSF5BOU2VF
-FYÏDVUJPO EF DFUUF JOTUSVDUJPO TVJU MFT ÏUBQFT TVJWBOUFT ŝ MF CMPD FTU FYÏDVUÏ
Ş MB DPOEJUJPO RVJ EPJU SFOWPZFS VOF WBMFVS CPPMÏFOOF FTU ÏWBMVÏF 4J DFMMFDJ FTU WSBJF PO SFUPVSOF Ë MÏUBQF ŝ TJOPO PO QBTTF Ë MÏUBQF ş
ş MB CPVDMF FTU UFSNJOÏF FU MF QSPHSBNNF DPOUJOVF TPO FYÏDVUJPO FO JOUFSQSÏUBOU MFT JOTUSVD UJPO TVJWBOU MF CMPD
4ZOUBYF
&YFNQMF
1PVS'BJSF
$FUUF CPVDMF FTU DPOTUJUVÏF EF USPJT QBSUJFT J VOF JOJUJBMJTBUJPO MB EÏDMBSBUJPO EF WBSJBCMFT MPDBMFT Ë MB CPVDMF FTU BVUPSJTÏF EBOT DFUUF QBSUJF JJ VOF DPOEJUJPO EBSSÐU JJJ VO FOTFNCMF EJOTUSVDUJPOT Ë FYÏDVUFS BQSÒT DIBRVF JUÏSBUJPO DIBDVOF EF DFT JOTUSVDUJPOT FTU TÏQBSÏF QBS VOF WJSHVMF -FYÏDVUJPO EF DFUUF JOTUSVDUJPO TVJU MFT ÏUBQFT TVJWBOUFT
ŝ MFT JOJUJBMJTBUJPOT TPOU FČFDUVÏFT
Ş MB DPOEJUJPO RVJ EPJU SFOWPZFS VOF WBMFVS CPPMÏFOOF FTU ÏWBMVÏF 4J DFMMFDJ FTU WSBJF PO QBTTF Ë MÏUBQF Ş TJOPO PO QBTTF Ë MÏUBQF Ţ
ş MF CMPD QSJODJQBM FTU FYÏDVUÏ
Š MFT JOTUSVDUJPOT Ë FYÏDVUFS BQSÒT DIBRVF JUÏSBUJPO TPOU FYÏDVUÏFT š SFUPVS Ë MÏUBQF Ş
Ţ MB CPVDMF FTU UFSNJOÏF FU MF QSPHSBNNF DPOUJOVF TPO FYÏDVUJPO FO JOUFSQSÏUBOU MFT JOTUSVD UJPOT TVJWBOU MF CMPD QSJODJQBM
4ZOUBYF
&YFNQMF
➲ 2VFTUJPO
RVF TF QBTTFUJM TJ MF TJUVÏ BQSÒT MF FTU PNJT
for(int i=0,(i<10);i++) { System.out.print(i + “ “) }
4USVDUVSFT EF DPOUSÙMF
ş SFUPVS Ë MÏUBQF ŝ
Š MB CPVDMF FTU UFSNJOÏF FU MF QSPHSBNNF DPOUJOVF TPO FYÏDVUJPO FO JOUFSQSÏUBOU MFT JOTUSVD UJPO TVJWBOU MF CMPD
4ZOUBYF
&YFNQMF
'BJSF5BOU2VF
-FYÏDVUJPO EF DFUUF JOTUSVDUJPO TVJU MFT ÏUBQFT TVJWBOUFT ŝ MF CMPD FTU FYÏDVUÏ
Ş MB DPOEJUJPO RVJ EPJU SFOWPZFS VOF WBMFVS CPPMÏFOOF FTU ÏWBMVÏF 4J DFMMFDJ FTU WSBJF PO SFUPVSOF Ë MÏUBQF ŝ TJOPO PO QBTTF Ë MÏUBQF ş
ş MB CPVDMF FTU UFSNJOÏF FU MF QSPHSBNNF DPOUJOVF TPO FYÏDVUJPO FO JOUFSQSÏUBOU MFT JOTUSVD UJPO TVJWBOU MF CMPD
4ZOUBYF
&YFNQMF
1PVS'BJSF
$FUUF CPVDMF FTU DPOTUJUVÏF EF USPJT QBSUJFT J VOF JOJUJBMJTBUJPO MB EÏDMBSBUJPO EF WBSJBCMFT MPDBMFT Ë MB CPVDMF FTU BVUPSJTÏF EBOT DFUUF QBSUJF JJ VOF DPOEJUJPO EBSSÐU JJJ VO FOTFNCMF EJOTUSVDUJPOT Ë FYÏDVUFS BQSÒT DIBRVF JUÏSBUJPO DIBDVOF EF DFT JOTUSVDUJPOT FTU TÏQBSÏF QBS VOF WJSHVMF -FYÏDVUJPO EF DFUUF JOTUSVDUJPO TVJU MFT ÏUBQFT TVJWBOUFT
ŝ MFT JOJUJBMJTBUJPOT TPOU FČFDUVÏFT
Ş MB DPOEJUJPO RVJ EPJU SFOWPZFS VOF WBMFVS CPPMÏFOOF FTU ÏWBMVÏF 4J DFMMFDJ FTU WSBJF PO QBTTF Ë MÏUBQF Ş TJOPO PO QBTTF Ë MÏUBQF Ţ
ş MF CMPD QSJODJQBM FTU FYÏDVUÏ
Š MFT JOTUSVDUJPOT Ë FYÏDVUFS BQSÒT DIBRVF JUÏSBUJPO TPOU FYÏDVUÏFT š SFUPVS Ë MÏUBQF Ş
Ţ MB CPVDMF FTU UFSNJOÏF FU MF QSPHSBNNF DPOUJOVF TPO FYÏDVUJPO FO JOUFSQSÏUBOU MFT JOTUSVD UJPOT TVJWBOU MF CMPD QSJODJQBM
4ZOUBYF
&YFNQMF
➲
2VFTUJPORVF TF QBTTFUJM TJ MF TJUVÏ BQSÒT MF FTU PNJT
!
Structures de contrôle
!
!
‣
Instructions itératives
‣
Qu’est-ce qu’affiche le code suivant
for (int i = 0, j = 2; (i < 10 && j < 6); i++, j+=2){
System.out.println("i = " + i + ", j = " + j);
}
J
i j Output
0 2 i = 0, j=2
1 4 i = 1, j=4
!
Structures de contrôle
!
!
‣
Iterations sur char
for(int i=0;(i<=9);i++) { System.out.print(i + “ “) }
0 1 2 3 4 5 6 7 8 9
for(char c='0';(c<='9');c++) { System.out.print(c + “ “) }
0 1 2 3 4 5 6 7 8 9
for(char c='A';(c<='Z');c++) { System.out.print(c + “ “) }
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
for(int i='A';(i<='Z');i++) { System.out.print(i + “ “)
K L M
N
!
Materiaux et cours WEB
!
• Chez coursera, une plateforme d'Enseignement en ligne, il y a des cours en !
français, il faut créer une compte, mais c'est gratuit.
!
https://fr.coursera.org/learn/init-prog-java https://fr.coursera.org/learn/java-poo
https://openclassrooms.com/courses/apprenez-a-programmer-en-java
!
• Les video class que peuvent aider https://www.youtube.com/watch?
v=wZuxBgbCNto&list=PLFFD959BEDF9DFEE2
!
• d'autre materiaux
http://www.emse.fr/~picard/cours/1A/java/livretJava.pdf
https://fr.wikibooks.org/wiki/Programmation_Java/Bases_du_langage
!
Exercices
Exercice 1 – Premier programme Java
1.1) Ecrire une classe Bonjour qui affiche ”Bonjour Monde”.
1.2) Quel est le rôle de la methode main ?
32
Exercice 2 – Planete
Soit la classe Planete suivante situee dans le fichier Planete.java :
2i002 – Introduction `a la Programmation Objet page 71 public c l a s s P l a n e t e {
2 private S t r i n g nom ;
3 private double rayon ; // en k i l o m e t r e
4
5 public P l a n e t e ( S t r i n g n ,double r ) {
6 nom=n ;
7 rayon=r ;
8 }
9
10 public S t r i n g t o S t r i n g ( ) {
11 S t r i n g s=" Planete "+nom+" de rayon "+rayon ;
12 return s ;
13 }
14
15 public double getRayon ( ) {
16 return rayon ;
17 }
18 }
Q 2.1 Dans cette classe, quelles sont (a) les variables d’instance ? (b) les variables qui sont des param`etres de m´ethodes ? (c) les variables qui sont des variables locales `a une m´ethode ?
(a) Les variables d’instance sont : nom et rayon (ligne 2 et 3)
On les reconnaˆıt car ces variables ne sont pas d´eclar´ees dans une m´ethode (b) ligne 5 : n et r sont des param`etres de m´ethode
(c) ligne 11 : s est une variable locale `a la m´ethode toString() quand la m´ethode toString() se termine, cette variable n’existe plus. Remarque : la variable s est inutile.
Q 2.2 O`u est le constructeur ? Comment le reconnaˆıt-on ? Quel est le rˆole des constructeurs en g´en´eral ? Quand sont-ils appel´es ?
Le constructeur commence `a la ligne 5 et termine `a la ligne 8.
On reconnaˆıt les constructeurs car ils : – portent le mˆeme nom que la classe,
– seules m´ethodes qui par convention commencent par une majuscule – n’ont pas de valeur de retour.
Le rˆole des constructeurs est :
– d’initialiser les variables d’instance
– 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 classe
Q 2.3 Quelles sont les m´ethodes de cette classe ?
Les m´ethodes sont la m´ethode standard toString() et l’accesseur : getRayon()
2.1 Dans cette classe, quelles sont (a) les variables d’instance ?
(b) les variables qui sont des parametres de methodes ?
(c) les variables qui sont des variables locales à une methode ?
33
Exercice 2 – Planete
Soit la classe Planete suivante situee dans le fichier Planete.java :
2i002 – Introduction `a la Programmation Objet page 71 public c l a s s P l a n e t e {
2 private S t r i n g nom ;
3 private double rayon ; // en k i l o m e t r e
4
5 public P l a n e t e ( S t r i n g n ,double r ) {
6 nom=n ;
7 rayon=r ;
8 }
9
10 public S t r i n g t o S t r i n g ( ) {
11 S t r i n g s=" Planete "+nom+" de rayon "+rayon ;
12 return s ;
13 }
14
15 public double getRayon ( ) {
16 return rayon ;
17 }
18 }
Q 2.1 Dans cette classe, quelles sont (a) les variables d’instance ? (b) les variables qui sont des param`etres de m´ethodes ? (c) les variables qui sont des variables locales `a une m´ethode ?
(a) Les variables d’instance sont : nom et rayon (ligne 2 et 3)
On les reconnaˆıt car ces variables ne sont pas d´eclar´ees dans une m´ethode (b) ligne 5 : n et r sont des param`etres de m´ethode
(c) ligne 11 : s est une variable locale `a la m´ethode toString() quand la m´ethode toString() se termine, cette variable n’existe plus. Remarque : la variable s est inutile.
Q 2.2 O`u est le constructeur ? Comment le reconnaˆıt-on ? Quel est le rˆole des constructeurs en g´en´eral ? Quand sont-ils appel´es ?
Le constructeur commence `a la ligne 5 et termine `a la ligne 8.
On reconnaˆıt les constructeurs car ils : – portent le mˆeme nom que la classe,
– seules m´ethodes qui par convention commencent par une majuscule – n’ont pas de valeur de retour.
Le rˆole des constructeurs est :
– d’initialiser les variables d’instance
– 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 classe
Q 2.3 Quelles sont les m´ethodes de cette classe ?
Les m´ethodes sont la m´ethode standard toString() et l’accesseur : getRayon()
2.2 Où est le constructeur ? Comment le reconnaît-on ?
Quel est le rôle des constructeurs en general ?
Quand sont-ils appeles ?
34
Exercice 2 – Planete
Soit la classe Planete suivante situee dans le fichier Planete.java :
2i002 – Introduction `a la Programmation Objet page 71 public c l a s s P l a n e t e {
2 private S t r i n g nom ;
3 private double rayon ; // en k i l o m e t r e
4
5 public P l a n e t e ( S t r i n g n ,double r ) {
6 nom=n ;
7 rayon=r ;
8 }
9
10 public S t r i n g t o S t r i n g ( ) {
11 S t r i n g s=" Planete "+nom+" de rayon "+rayon ;
12 return s ;
13 }
14
15 public double getRayon ( ) {
16 return rayon ;
17 }
18 }
Q 2.1 Dans cette classe, quelles sont (a) les variables d’instance ? (b) les variables qui sont des param`etres de m´ethodes ? (c) les variables qui sont des variables locales `a une m´ethode ?
(a) Les variables d’instance sont : nom et rayon (ligne 2 et 3)
On les reconnaˆıt car ces variables ne sont pas d´eclar´ees dans une m´ethode (b) ligne 5 : n et r sont des param`etres de m´ethode
(c) ligne 11 : s est une variable locale `a la m´ethode toString() quand la m´ethode toString() se termine, cette variable n’existe plus. Remarque : la variable s est inutile.
Q 2.2 O`u est le constructeur ? Comment le reconnaˆıt-on ? Quel est le rˆole des constructeurs en g´en´eral ? Quand sont-ils appel´es ?
Le constructeur commence `a la ligne 5 et termine `a la ligne 8.
On reconnaˆıt les constructeurs car ils : – portent le mˆeme nom que la classe,
– seules m´ethodes qui par convention commencent par une majuscule – n’ont pas de valeur de retour.
Le rˆole des constructeurs est :
– d’initialiser les variables d’instance
– 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 classe
Q 2.3 Quelles sont les m´ethodes de cette classe ?
Les m´ethodes sont la m´ethode standard toString() et l’accesseur : getRayon()
2.3 Quelles sont les methodes de cette classe ?
35
Exercice 2 – Planete
Soit la classe Planete suivante situee dans le fichier Planete.java :
2i002 – Introduction `a la Programmation Objet page 71 public c l a s s P l a n e t e {
2 private S t r i n g nom ;
3 private double rayon ; // en k i l o m e t r e
4
5 public P l a n e t e ( S t r i n g n ,double r ) {
6 nom=n ;
7 rayon=r ;
8 }
9
10 public S t r i n g t o S t r i n g ( ) {
11 S t r i n g s=" Planete "+nom+" de rayon "+rayon ;
12 return s ;
13 }
14
15 public double getRayon ( ) {
16 return rayon ;
17 }
18 }
Q 2.1 Dans cette classe, quelles sont (a) les variables d’instance ? (b) les variables qui sont des param`etres de m´ethodes ? (c) les variables qui sont des variables locales `a une m´ethode ?
(a) Les variables d’instance sont : nom et rayon (ligne 2 et 3)
On les reconnaˆıt car ces variables ne sont pas d´eclar´ees dans une m´ethode (b) ligne 5 : n et r sont des param`etres de m´ethode
(c) ligne 11 : s est une variable locale `a la m´ethode toString() quand la m´ethode toString() se termine, cette variable n’existe plus. Remarque : la variable s est inutile.
Q 2.2 O`u est le constructeur ? Comment le reconnaˆıt-on ? Quel est le rˆole des constructeurs en g´en´eral ? Quand sont-ils appel´es ?
Le constructeur commence `a la ligne 5 et termine `a la ligne 8.
On reconnaˆıt les constructeurs car ils : – portent le mˆeme nom que la classe,
– seules m´ethodes qui par convention commencent par une majuscule – n’ont pas de valeur de retour.
Le rˆole des constructeurs est :
– d’initialiser les variables d’instance
– 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 classe
Q 2.3 Quelles sont les m´ethodes de cette classe ?
Les m´ethodes sont la m´ethode standard toString() et l’accesseur : getRayon()
2.4 Ecrire une nouvelle classe appelee SystemeSolaire.
On souhaite que cette classe soit le point d’entrée du programme, que doit-elle
contenir?
36
Exercice 2 – Planete
Soit la classe Planete suivante situee dans le fichier Planete.java :
2i002 – Introduction `a la Programmation Objet page 71 public c l a s s P l a n e t e {
2 private S t r i n g nom ;
3 private double rayon ; // en k i l o m e t r e
4
5 public P l a n e t e ( S t r i n g n ,double r ) {
6 nom=n ;
7 rayon=r ;
8 }
9
10 public S t r i n g t o S t r i n g ( ) {
11 S t r i n g s=" Planete "+nom+" de rayon "+rayon ;
12 return s ;
13 }
14
15 public double getRayon ( ) {
16 return rayon ;
17 }
18 }
Q 2.1 Dans cette classe, quelles sont (a) les variables d’instance ? (b) les variables qui sont des param`etres de m´ethodes ? (c) les variables qui sont des variables locales `a une m´ethode ?
(a) Les variables d’instance sont : nom et rayon (ligne 2 et 3)
On les reconnaˆıt car ces variables ne sont pas d´eclar´ees dans une m´ethode (b) ligne 5 : n et r sont des param`etres de m´ethode
(c) ligne 11 : s est une variable locale `a la m´ethode toString() quand la m´ethode toString() se termine, cette variable n’existe plus. Remarque : la variable s est inutile.
Q 2.2 O`u est le constructeur ? Comment le reconnaˆıt-on ? Quel est le rˆole des constructeurs en g´en´eral ? Quand sont-ils appel´es ?
Le constructeur commence `a la ligne 5 et termine `a la ligne 8.
On reconnaˆıt les constructeurs car ils : – portent le mˆeme nom que la classe,
– seules m´ethodes qui par convention commencent par une majuscule – n’ont pas de valeur de retour.
Le rˆole des constructeurs est :
– d’initialiser les variables d’instance
– 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 classe
Q 2.3 Quelles sont les m´ethodes de cette classe ?
Les m´ethodes sont la m´ethode standard toString() et l’accesseur : getRayon()
2.4 Ecrire une nouvelle classe appelee SystemeSolaire.
• Créer un objet de la classe Planete pour Mercure qui a un rayon de 2439.7 km et un autre objet pour la Terre qui a un rayon de 6378.137 km.
• Afficher la valeur de retour de la methode toString() pour la planete Mercure,
puis afficher le rayon de la Terre.
37
Exercice 2 – Planete
Soit la classe Planete suivante situee dans le fichier Planete.java :
2i002 – Introduction `a la Programmation Objet page 71 public c l a s s P l a n e t e {
2 private S t r i n g nom ;
3 private double rayon ; // en k i l o m e t r e
4
5 public P l a n e t e ( S t r i n g n ,double r ) {
6 nom=n ;
7 rayon=r ;
8 }
9
10 public S t r i n g t o S t r i n g ( ) {
11 S t r i n g s=" Planete "+nom+" de rayon "+rayon ;
12 return s ;
13 }
14
15 public double getRayon ( ) {
16 return rayon ;
17 }
18 }
Q 2.1 Dans cette classe, quelles sont (a) les variables d’instance ? (b) les variables qui sont des param`etres de m´ethodes ? (c) les variables qui sont des variables locales `a une m´ethode ?
(a) Les variables d’instance sont : nom et rayon (ligne 2 et 3)
On les reconnaˆıt car ces variables ne sont pas d´eclar´ees dans une m´ethode (b) ligne 5 : n et r sont des param`etres de m´ethode
(c) ligne 11 : s est une variable locale `a la m´ethode toString() quand la m´ethode toString() se termine, cette variable n’existe plus. Remarque : la variable s est inutile.
Q 2.2 O`u est le constructeur ? Comment le reconnaˆıt-on ? Quel est le rˆole des constructeurs en g´en´eral ? Quand sont-ils appel´es ?
Le constructeur commence `a la ligne 5 et termine `a la ligne 8.
On reconnaˆıt les constructeurs car ils : – portent le mˆeme nom que la classe,
– seules m´ethodes qui par convention commencent par une majuscule – n’ont pas de valeur de retour.
Le rˆole des constructeurs est :
– d’initialiser les variables d’instance
– 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 classe
Q 2.3 Quelles sont les m´ethodes de cette classe ?
Les m´ethodes sont la m´ethode standard toString() et l’accesseur : getRayon()