• Aucun résultat trouvé

UE 2I002 (ex LI230) : éléments de programmation par objets avec Java

N/A
N/A
Protected

Academic year: 2022

Partager "UE 2I002 (ex LI230) : éléments de programmation par objets avec Java"

Copied!
38
0
0

Texte intégral

(1)

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/

(2)

!

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

(3)

• 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

(4)

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

(5)

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;

(6)

Java, language à objets

Notion d’objet, 1ère notion de POO

(7)

Java, langage à objets

Pour savor plus :

https://www.youtube.com/watch?v=BNEtWb3WceQ

https://www.youtube.com/watch?v=bFJu2NvOhyY

(8)

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.

(9)

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;

}

}

(10)

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

(11)

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

(12)

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

(13)

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

(14)

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

(15)

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

(16)

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

}

(17)

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”;

(18)

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)

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.*;

(20)

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

(21)

!

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

(22)

!

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;

}

(23)

!

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.

(24)

!

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 !");

(25)

!

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)

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

2VFTUJPO

RVF TF QBTTFUJM TJ MF TJUVÏ BQSÒT MF FTU PNJT

(27)

!

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

(28)

!

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

(29)

!

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

(30)

!

Exercices

(31)

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)

32

Exercice 2 – Planete

Soit la classe Planete suivante situee dans le fichier Planete.java :

2i002 – Introduction `a la Programmation Objet page 7

1 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)

33

Exercice 2 – Planete

Soit la classe Planete suivante situee dans le fichier Planete.java :

2i002 – Introduction `a la Programmation Objet page 7

1 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)

34

Exercice 2 – Planete

Soit la classe Planete suivante situee dans le fichier Planete.java :

2i002 – Introduction `a la Programmation Objet page 7

1 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)

35

Exercice 2 – Planete

Soit la classe Planete suivante situee dans le fichier Planete.java :

2i002 – Introduction `a la Programmation Objet page 7

1 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)

36

Exercice 2 – Planete

Soit la classe Planete suivante situee dans le fichier Planete.java :

2i002 – Introduction `a la Programmation Objet page 7

1 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)

37

Exercice 2 – Planete

Soit la classe Planete suivante situee dans le fichier Planete.java :

2i002 – Introduction `a la Programmation Objet page 7

1 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.5 Quel doit être le nom du fichier contenant la classe SystemeSolaire ?

Quelles sont les commandes pour compiler les classes Planete et SystemeSolaire ?

Quelle est la commande pour exécuter ce programme ?

(38)

Exercice 3 – TME

En utilisant un boucle while Exercice 4 – Alphabet

Q 4.1.1 Afficher les chiffres de 0 à 9, ainsi que leur code ASCII.

Q 4.1.2 Afficher les lettres de l’alphabet de ’A’ à ’Z’, ainsi que leur code ASCII.

Références

Documents relatifs

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

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 &#34;JOTJ

-F DPODFQU EF DMBTTF BCTUSBJUF TF TJUVF FOUSF DFMVJ EF DMBTTF FU DFMVJ EJOUFSGBDF $FTU VOF DMBTTF RVPO OF QFVU QBT EJSFDUFNFOU JOTUBODJFS DBS DFSUBJOFT EF TFT NÏUIPEFT OF TPOU

‣ On peut affecter à un champ ou une variable d'un type une expression de type moins élevé dans la hiérarchie des types. int a

Depuis le début de l’année, nous utilisons systématiquement la méthode main avec un paramètre de type String[], c’est à dire un tableau de chaînes de caractères. Ce

‣ La classe Error représente une erreur grave intervenue dans la machine virtuelle