Vous êtes sur la page 1sur 49

A. U. . 10-11 S. Elkosantini S.

Elkosantini 1
Programmation oriente objet II Programmation oriente objet II
2
e
anne S..L
Sabeur ELKOSANTINI
sabeur.eIkosantini@isima.rnu.tn
A. U. . 10-11 S. Elkosantini S. Elkosantini 2
BibIiographie
Livrcs Livrcs
MicheI Divay , }ava el Ia rogrammalion orienlee ob|el , Dunod eds, 2006.
Renaud IavIak , }ean-IhiIie RelaiIIe , LioneI Seinlurier, Irogrammalion
orienlee asecl our }ava / }2II , IyroIIes eds, 2004.
ruce IckeI, Thinking in }ava , 2nd revision, 2000 (DisonibIe sur inlernel).
Autrcs suppnrts dc cnurs Autrcs suppnrts dc cnurs
Cours de }ean-MicheI DOUDOUX :
hll://vvv.|mdoudoux.fr/|ava/de|/
Cours de MickaI ARON :
hll://mbaron.fl-deveIoez.com/|avase/|ava.df
A. U. . 10-11 S. Elkosantini S. Elkosantini 3
PIan
Chapitre 1 : ntroduction
Chapitre 2 : Les premiers pas en Java
Chapitre 3 : POO avec Java
A. U. . 10-11 S. Elkosantini S. Elkosantini 4
PIan
Chapitre 1 : ntroduction
Chapitre 2 : Les premiers pas en Java
Chapitre 3 : POO avec Java
A. U. . 10-11 S. Elkosantini S. Elkosantini 5
Introduction
Histnriquc dc !a POO Histnriquc dc !a POO
Les annees 60 : Ie Iangage SimuIa-67, Iangage de simuIalion informalique
Les remiers as de Ia rogrammalion orienlee ob|el
Les annees 70 : SmaIITaIk , aarilion des concels de base :
ob|el, encasuIalion, oIymorhisme, herilage , elc.
Les annees 80 : La Monlee en uissance de I'orienle ob|el
Aarilion de nouveaux Iangages : Ob|eclive C ,C++, IiffeI, Common Lis Ob|ecl
Syslem
A. U. . 10-11 S. Elkosantini S. Elkosantini 6
Introduction
Histnriquc dc !a POO Histnriquc dc !a POO
Les annees 90 : I'ge d'or de I'exlension de Ia IOO :
Slandardisalion de C++
Aarilion du Iangage de rogrammalion }ava
Deuis, evoIulion de I'orienlee ob|el:
AnaIyse ar ob|el (AOO).
La concelion orienlee ob|el COO
Les bases de donnees orienlees ob|els (SGDOO)
A. U. . 10-11 S. Elkosantini S. Elkosantini 7
Introduction
Prngrammatinn prncdura!c Vs Prngrammatinn OO Prngrammatinn prncdura!c Vs Prngrammatinn OO
Irogrammalion roceduraIe (C, CoboI, Iorlran, IascaI, elc.) :
Irogrammes slruclures en rocedures el fonclions,
Des robIemes en cas de modificalion de Ia slruclures des donnees,
Chaque fonclion ou rocedure resoul une arlie du robIeme,
Irogrammalion OO (}ava, C++, C-, DeIhi, elc.):
Unile Iogique : ob|el,
Irogrammalion ar comosanls ,
IaciIile de I'evoIulion du code,
AmeIiorer Ia concelion el Ia mainlenance des grands syslemes,

A. U. . 10-11 S. Elkosantini S. Elkosantini 8
Introduction
Prngrammatinn par Ob|cts ? Prngrammatinn par Ob|cts ?
Unile Iogique : I'ob|el
Ob|el esl defini ar :
Une idenlile : ermel de dislinguer un ob|el d'un aulre ob|el.
Un elal : reresenle ar des allribuls (variabIes) qui slockenl des vaIeurs.
Un comorlemenl : defini ar des melhodes (rocedures) qui modifienl
des elals.
Mntn
Cnu!cur : nnir
Vitcssc : 150 Km/h
Acc!rcr
Frcincr
A. U. . 10-11 S. Elkosantini S. Elkosantini 9
Introduction
Lc !angagc Java : histnriquc Lc !angagc Java : histnriquc
1990 - Sle Sun Microsyslems (}ames GosIing, Naughlon, Sheridan) : ro|el de
Iangage elils syslemes
1991 : Inlroduclion du Iangage Oak
1993 : Issor d'Inlernel : adaler }ava au Web
1993 a 1995 : adalalion d'Oak our Ie Web (Ixeculion d'aIels)
1995 : resenlalion de }ava
TM
ar Sun el mise a disosilion graluile du }DK sur
Ie nel
A. U. . 10-11 S. Elkosantini S. Elkosantini 10
Introduction
Lc !angagc Java Lc !angagc Java
Iresenle dans de lres nombreux domaines d'aIicalion : des serveurs
d'aIicalions aux leIehone orlabIes el carles a uces (}MI)
QueIques chiffres (}ava One 2005):
4,5 miIIions de deveIoeurs }ava
700 miIIions de IC equies d'une }VM
708 miIIions de leIehones }ava
600 miIIions de eriheriques mobiIes
1 miIIiard de }ava Cards
A. U. . 10-11 S. Elkosantini S. Elkosantini 11
Introduction
Qua!its ma|curcs dc Java Qua!its ma|curcs dc Java
SimIe (comare a C++)
Gere Ies debordemenls memoire.
Gere Iui-mme Ia desaIIocalion memoire (ramasse-mielles).
Ias de maniuIalion exIicile de oinleurs.
Ias de surcharge d'oeraleurs.
IondamenlaIemenl Orienle-Ob|el : as de fonclions/rocedures : que des
melhodes !
IorlabIe : rincie de machine virlueIIe
A. U. . 10-11 S. Elkosantini S. Elkosantini 12
Introduction
Lc principc dc !a machinc virtuc!!c Lc principc dc !a machinc virtuc!!c
A. U. . 10-11 S. Elkosantini S. Elkosantini 13
Introduction
Lc principc dc !a machinc virtuc!!c Lc principc dc !a machinc virtuc!!c
Le byle-code esl :
roche d'un Iangage machine
indeendanl de Ia Ialeforme d'execulion (malerieI + OS)
A. U. . 10-11 S. Elkosantini S. Elkosantini 14
Introduction
Un prngrammc Java, pnur vnir . Un prngrammc Java, pnur vnir .
Scurcc . ccurs !c Gcncu!
A. U. . 10-11 S. Elkosantini S. Elkosantini 15
Introduction
Un prngrammc Java, pnur vnir . Un prngrammc Java, pnur vnir .
// IxemIe de rogramme minimaI : SaIul.|ava
imorl |ava.io., //..
ubIic cIass SaIul
ubIic slalic void main (Slring args|j)
Syslem.oul.rinlIn("SaIul loul Ie monde"),

dition du programme source :


CompiIution : C:\Temp\~ javac Salut.java gnration du Iichier ...
Ecution D:\Temp\~ java Salut
A. U. . 10-11 S. Elkosantini S. Elkosantini 16
Introduction
Java Vs C++ Java Vs C++
In C++:
// IxemIe de rogramme minimaI : SaIul.|ava
imorl |ava.io., //.....
ubIic cIass SaIul
ubIic slalic void main (Slring args|j)
Syslem.oul.rinlIn("SaIul loul Ie monde"),

In }ava:
// IxemIe de rogramme minimaI : SaIul.c
-incIude <sldio.h> //..
void main ()
sld::coul<<"SaIul loul Ie monde",

A. U. . 10-11 S. Elkosantini S. Elkosantini 17


Introduction
Lcs diIIrcntcs app!icatinn Java Lcs diIIrcntcs app!icatinn Java
Les aIicalions indeendanles:
Les aIels : Irogrammes execulees dans I'environnemenl d'un navigaleur Web
el charges au lravers de ages HTML
A. U. . 10-11 S. Elkosantini S. Elkosantini 18
Introduction
Lcs diIIrcntcs p!atcInrmcs Java Lcs diIIrcntcs p!atcInrmcs Java
Iourni Ies comiIaleurs, ouliIs, runlimes, el AIIs our ecrire, deIoyer, el
execuler des aIels el aIicalions dans Ia Iangage de rogrammalion
}ava
Deslinee au deveIoemenl d'aIicalions d'enlrerise (business
aIicalions) robusles el inleroerabIes. SimIifier Ie deveIoemenl el
Ie deIoiemenl d'aIicalions dislribuees el arlicuIees aulours du veb.
Invironnemenl d'execulion olimise our Ies disosilifs Iegers :
Carle a uce (smarl cards)
TeIehones mobiIes
Assislanls ersonneIs (IDA)
A. U. . 10-11 S. Elkosantini S. Elkosantini 19
Introduction
Lcs diIIrcntcs p!atcInrmcs Java : nrganisatinn Lcs diIIrcntcs p!atcInrmcs Java : nrganisatinn
JDK
JRE
}RI (}ava Runlime Invironnemenl) our I'execulion de code |ava comiIe
}DK (}ava DeveIoer's Kil) ouliIs de base our Ie deveIoemenl d'aIicalions }ava
A. U. . 10-11 S. Elkosantini S. Elkosantini 20
Introduction
Lcs diIIrcntcs p!atcInrmcs Java : nrganisatinn Lcs diIIrcntcs p!atcInrmcs Java : nrganisatinn
IIaleforme definie ar SUN our Ie deveIoemenl d'aIicalions rearlies
asee sur un ensembIe de lechnoIogies }ava
ServIels, }SI(}ava Server Iages), }SI (}ava Server Iaces) : ages veb
dynamiques
I} (Inlrerise }ava eans) : ob|els meliers
}DC : AII d'acces a des SGD
}NDI (}ava Naming an Direclory Inlerface) : AII our nommage des ob|els
}TA (}ava Transaclion AII) , AII our geslion des lransaclions
}AAS (}ava Aulhenlicalion and Aulhorizalion Service)
Il de nombreuses aulres.
S'auie sur un modeIe d'archileclure muIli-liers (muIli-couches)
A. U. . 10-11 S. Elkosantini S. Elkosantini 21
PIan
Chapitre 1 : ntroduction
Chapitre 2 : Les premiers pas en Java
Chapitre 3 : POO avec Java
A. U. . 10-11 S. Elkosantini S. Elkosantini 22
Les premiers pas en Java
P!an P!an
Les oeraleurs malhemaliques , Iogiques el de conversion
Les boucIes el Ies slruclures de conlrIes
Les labIeaux
Les commenlaires
A. U. . 10-11 S. Elkosantini S. Elkosantini 23
Les premiers pas en Java
La structurc d'un prngrammc Java La structurc d'un prngrammc Java
imorl |ava.io.,
ubIic cIass SaIul
ubIic slalic void main (Slring args|j)
afficher (5),

ubIic void afficher (inl vaI )


Syslem.oul.rinlIn('' Ie nombre a afficher esl '' +vaI),

.
.
Nnm du Iichicr = nnm dc !a c!assc
.
.
.
A. U. . 10-11 S. Elkosantini S. Elkosantini 24
Les premiers pas en Java
Lcs typcs primitiIs Lcs typcs primitiIs
Ne as confondre Ies lyes rimilifs el Ies ob|els
Les lyes rimilifs :
Inliers : byle (1 oclel) - shorl (2 oclels) - inl (4 oclels) - Iong (8 oclels)
IIollanls : fIoal (4 oclels) - doubIe (8 oclels)
ooIeens : booIean (lrue ou faIse)
Caracleres : char
Dc!aratinn cn |ava :
Inl a, b, c ,
fIoal x,
char ch
ooIeens u, b,
Dcs crrcurs ??!!
Quc!!c cst !a
diIIrcncc ??
A. U. . 10-11 S. Elkosantini S. Elkosantini 25
Les premiers pas en Java
Lcs va!curs I!nttantcs Lcs va!curs I!nttantcs
UliIise Ia norme IIII 754 our reresenler Ies vaIeurs a virguIe fIollanle.
CaIcuI securise :
Ixisle +0.0 el -0.0
+Infinily el -Infinily
NaN (Nol A Number)
doub1e va1ues=0.0,
-0.0:
tor[doub1evva1ues)
System.out.pr1nt1n[J/v):
System.out.pr1nt1n[v/0.0)
:

3.0 esl un doubIe (64bils), 3.0f (ou 3.0I) esl un fIoal (32 bils)
!N;N\\
N rN
!N;N\\
N rN
Rsu!tat :
A. U. . 10-11 S. Elkosantini S. Elkosantini 26
Les premiers pas en Java
InIini ct NaN InIini ct NaN
La norme IIII 754 inlroduil lrois vaIeurs arlicuIieres ar lyes de fIollanls
+Infinily esl Ie resuIlal de i/0 avec i osilif
-Infinily esl Ie resuIlal de i/0 avec i negalif
NaN esl Ie resuIlal de 0/0
x x esl faux si x vaul DoubIe.NaN
On dnit tcstcr NaN avcc
F!nat.isNaN() nu Dnub!c.isNaN()
A. U. . 10-11 S. Elkosantini S. Elkosantini 27
Les premiers pas en Java
Lcs cnnstantcs Lcs cnnstantcs
Le mol cIe finaI ermel de decIarer une conslanle: Ia vaIeur ne doil as lre
modifiee endanl I'execulion du rogramme.
Dc!aratinn cn |ava :
finaI inl n10, m ,
nn+1,
Lc rsu!tat dc !'instructinn cst ...
I! cst impnssib!c dc crcr nu d'nbtcnir un
tab!cau dc va!curs cnnstantcs cn Java !!
A. U. . 10-11 S. Elkosantini S. Elkosantini 28
Les premiers pas en Java
Lcs npratcurs ct !'aIIcctatinn Lcs npratcurs ct !'aIIcctatinn
Les oeraleurs malhemaliques
Opratcur Excmp!c Equiva!cnt a
Nole 18 Nole 18
+ Nole+ 2 Nole Nole + 2
- Nole- 2 Nole Nole - 2
Nole 1.5 Nole Nole 1.5
/ Nole/ 2 Nole Nole / 2
% Nole% 2 Nole Nole % 2
^ Nole^ 2 Nole Nole ^ 2
doubIe nb1,
fIoal nb2,
nb1/nb2 ...
QueI esl Ie lye du resuIlal de
I'oeralion `
fIoal nb1,
inl nb2,
nb1 + nb2 ...
A. U. . 10-11 S. Elkosantini S. Elkosantini 29
Les premiers pas en Java
Lcs npratcurs ct !'aIIcctatinn Lcs npratcurs ct !'aIIcctatinn
Iriorile
Les inslruclions
finaI inl N50,
shorl 10,
char c2N+3, // Ia variabIe c conlienl ..
byle b 10N, // Ie resuIlal esl ..
Quc! cst !c rsu!tat dc chaquc
instructinn ??
() ++ , -- , / , % + , - < , > ==,!= &&, !! =, += , -=
P!us Inrt
P!us Iaib!c
A. U. . 10-11 S. Elkosantini S. Elkosantini 30
Les premiers pas en Java
Lcs npratcurs ct !'aIIcctatinn Lcs npratcurs ct !'aIIcctatinn
I'incremenlalion el Ia decremenlalion aulomalique
Incremenlalion : Nb++ ou ++Nb
Decremenlalion : Nb-- ou --Nb
Quc!!c cst !a diIIrcncc ??
i2,
ji++,
i2,
j++i,
Quc!!cs snnt !cs va!curs dc i ct |
dans !cs dcux cas ?
A. U. . 10-11 S. Elkosantini S. Elkosantini 31
Les premiers pas en Java
Lcs npratcurs ct !'aIIcctatinn Lcs npratcurs ct !'aIIcctatinn
Aulres oeraleurs
Les oeraleurs de conversion (casi)
Opratcur
&& L'oeraleur IT Iogique
++ L'oeraleur OU Iogique
Oeraleur d'egaIile
! Oeraleur de difference
! L'oeraleur negalion
doubIe nb1,
doubIe nb2,
booIean res1, res2,
res1 ( nb1nb2)
res2 ( nb1nb2) && (nb1>10)
inl i 200,
Iong I (Iong)i,
Iong I2 (Iong)200,
.
.
A. U. . 10-11 S. Elkosantini S. Elkosantini 32
Les premiers pas en Java
Lcs npratcurs ct !'aIIcctatinn Lcs npratcurs ct !'aIIcctatinn
Conversion de lyes rimilifs
byteb=J://okcar-19=J=17
1nt1=b:
t1oatt=1://okma1speut-etreperte
doub1ed=.0
1nt]=d://erreurdecomp11at1on
1nt]=[1nt)d://ok
Scurcc . ccurs !c Gcncu!
A. U. . 10-11 S. Elkosantini S. Elkosantini 33
Les premiers pas en Java
Lcs npratcurs ct !'aIIcctatinn Lcs npratcurs ct !'aIIcctatinn
Les oeraleurs bils a bils
Opratcur
& L'oeraleur IT
+ L'oeraleur OU
^ Oeraleur OU excIusif
L'oeraleur negalion
Excmp!c :
Nb1
Nb2
00000101
00000011
Nb1 & Nb2 ....
Nb1 | Nb2 ....
Nb1 ^ Nb2 ....
Nb1 ....
A. U. . 10-11 S. Elkosantini S. Elkosantini 34
Les premiers pas en Java
Lcs npratcurs ct !'aIIcctatinn Lcs npratcurs ct !'aIIcctatinn
Les oeraleurs de decaIage :
ManiuIes des bils,
UliIisabIes uniquemenl avec des lyes rimilifs enliers,
Les oeraleurs sonl :
o Nb << n : decaIage vers Ia gauche du nombre Nb de n bils
o Nb >> n : decaIage vers Ia droile du nombre Nb de n bils
Excmp!c :
N10000101 N<< 2 donne ........
inl N 6, N>>1 donne .......
A. U. . 10-11 S. Elkosantini S. Elkosantini 35
Les premiers pas en Java
Lcs bnuc!cs ct !cs structurcs dc cnntr!cs Lcs bnuc!cs ct !cs structurcs dc cnntr!cs
if. eIse.
Synlaxe:
iI (condilion Iogique)
Inslruclions execulees si Ia condilion Iogique esl vraie
eIse
|nsiruciicns cxccuiccs si |a ccn!iiicn |cgiquc csi jaussc
IxemIe 1:
II (moyenne > 10)
Syslem.oul.rinlIn('' I'eludianl a reussi''),
c!sc
Syslem.oul.rinlIn('' I'eludianl doil reasser ses examens''),
A. U. . 10-11 S. Elkosantini S. Elkosantini 36
Les premiers pas en Java
Lcs bnuc!cs ct !cs structurcs dc cnntr!cs Lcs bnuc!cs ct !cs structurcs dc cnntr!cs
if. eIse.
Ixercice 1:
Icrire Ia arlie du rogramme }ava qui verifie si un enlier n esl aire ou
imaire el affiche Ie resuIlal.
A. U. . 10-11 S. Elkosantini S. Elkosantini 37
Les premiers pas en Java
Lcs bnuc!cs ct !cs structurcs dc cnntr!cs Lcs bnuc!cs ct !cs structurcs dc cnntr!cs
svilch. case.defauIl
Synlaxe:
switch(exression)
case conslanle_1: suile d'inslruclions, break,
...
case conslanle_n: suile d'inslruclions, break,
defuuIt . suiic !insiruciicn,
A. U. . 10-11 S. Elkosantini S. Elkosantini 38
Les premiers pas en Java
Lcs bnuc!cs ct !cs structurcs dc cnntr!cs Lcs bnuc!cs ct !cs structurcs dc cnntr!cs
svilch. case.defauIl
Ixercice 2:
Icrire Ia arlie du rogramme }ava qui affiche:
o
Tres bien si Ia nole esl 'A',
o
ien si Ia nole esl '',
o
Insuffisanl si Ia nole esl 'C',
o
un message d'erreur sinon
A. U. . 10-11 S. Elkosantini S. Elkosantini 39
Les premiers pas en Java
Lcs bnuc!cs ct !cs structurcs dc cnntr!cs Lcs bnuc!cs ct !cs structurcs dc cnntr!cs
Les boucIes ileralives
whi!c . :
whi!c ( condilion Iogique)
... // code a execuler dans Ia boucIe

dn . whi!c :
dn
Ioc d'inslruclions ,

whi!c ( condilion Iogique)

A. U. . 10-11 S. Elkosantini S. Elkosantini 40
Les premiers pas en Java
Lcs bnuc!cs ct !cs structurcs dc cnntr!cs Lcs bnuc!cs ct !cs structurcs dc cnntr!cs
Les boucIes ileralives
for. :
Inr (iniliaIisalion du comleur , condilion , modificalion)
... // code a execuler dans Ia boucIe

IxemIe :
Inr (i 0 , i > 10, i++ )

Syslem.oul.rinlIn (i),

QueI esl Ie resuIlal de Ia boucIe `


A. U. . 10-11 S. Elkosantini S. Elkosantini 41
Les premiers pas en Java
Lcs bnuc!cs ct !cs structurcs dc cnntr!cs Lcs bnuc!cs ct !cs structurcs dc cnntr!cs
Les boucIes ileralives
for. :
Inr (decI/var :array/ilerabIe)
... // code a execuler dans Ia boucIe

IxemIe :
ubIic slalic void main(Slring|j args)
Inr(Slring s:args)
Syslem.oul.rinlIn(s),

A. U. . 10-11 S. Elkosantini S. Elkosantini 42


Les premiers pas en Java
Lcs bnuc!cs ct !c ca!cu! I!nttant Lcs bnuc!cs ct !c ca!cu! I!nttant
IIII 754, our chaque oeralion +, -, , /
On caIcuI Ie resuIlal recis infinie
On arrondie au nombre reresenlabIe Ie Ius roche
Attcntinn a !'uti!isatinn dcs I!nttants
dans !cs bnuc!cs
tor[doub1ev=0.0:v1=1.0:v=v-1.0)

System.out.pr1nt1n[v):

//9ouc1e1nt1n1e
//ut111sep1utot''
A. U. . 10-11 S. Elkosantini S. Elkosantini 43
Les premiers pas en Java
Lcs bnuc!cs ct !cs structurcs dc cnntr!cs Lcs bnuc!cs ct !cs structurcs dc cnntr!cs
Ixercice :
La suile de Syracuse

avec > 1 esl definie de Ia faon suivanle :


a
0

a
n+1
a
n
/2 si a
n
esl air
a
n+1
3 a
n
+ 1 si a
n
esl imair
Icrire une melhode slalic inl syracuse (inl , inl n) qui caIcuIe Ia vaIeur du n
ieme

lerme de Ia suile Syracuse

.
A. U. . 10-11 S. Elkosantini S. Elkosantini 44
Les premiers pas en Java
Lcs bnuc!cs ct !cs structurcs dc cnntr!cs Lcs bnuc!cs ct !cs structurcs dc cnntr!cs
break el conlinue
break : ermel de sorlir d'une boucIe sans execuler Ia suile des inslruclions
conlinue : arrle I'execulion de I'ileralion couranle, el I'execulion rerend en
debul de boucIe avec I'ileralion suivanle
A. U. . 10-11 S. Elkosantini S. Elkosantini 45
Les premiers pas en Java
Lcs tab!caux Lcs tab!caux
TabIeau unidimensionneIs
Dc!aratinn : inl |j lab,
ou inl lab|j,
NULL
lab
Pas dc dimcnsinns dans !a dc!aratinn
Dimcnsinnncmcnt: inl |j lab ncw inl |3j
lab
. . .
A!!ncatinn dans !a mmnirc sc!nn !c typc du tab!cau
Initia!isatinn: lab |0j3, lab |1j2, lab |2j1
lab
3 2 1
ou aulremenl , inl |j lab3,2,1,
A. U. . 10-11 S. Elkosantini S. Elkosantini 46
Les premiers pas en Java
Lcs tab!caux Lcs tab!caux
TabIeau muIlidimensionneIs
Dc!aratinn : lye |j|j lab,
NULL
lab
Dimcnsinnncmcnt: lab ncw lye |2j|3j,
lab
. . .
. . .
.
.
nu aussi
lab ncw lye |2j,
lab |0j ncw lye|2j,
lab |1j ncw lye|3j
lab
.
.
. .
. . .
A. U. . 10-11 S. Elkosantini S. Elkosantini 47
Les premiers pas en Java
Lcs tab!caux Lcs tab!caux
Ixercice 3:
Soil T une malrice carree de 3 Iignes el 3 coIonnes. Icrire un aIgorilhme qui affiche un
message informanl si Ia malrice esl symelrique ou as.
A. U. . 10-11 S. Elkosantini S. Elkosantini 48
Les premiers pas en Java
Lcs tab!caux Lcs tab!caux
Ixercice 4:
Icrire un aIgorilhme qui lri un labIeau en uliIisanl Ia melhode de lri ar inserlion.
A. U. . 10-11 S. Elkosantini S. Elkosantini 49
Les premiers pas en Java
Lcs vcctcurs Lcs vcctcurs
La cIasse vecleur ermel de gerer des Iisles conlenanl Iusieurs lyes
La laiIIe du vecleur esl dynamique, conlrairemenl a ceIIe d'un labIeau.
Dc!aratinn : Veclor v nev Veclor()
Veclor v nev Veclor(5)
QueI esl Ia difference `
A|nut d'!mcnt dans !c vcctcur :
v.addIIemenl(nev Inleger(1)), // A|ouler un remier eIemenl
v.addIIemenl(nev IIoal(1.9999)), // A|ouler un aulre eIemenl
for (inl i2, i<10, i++)
inl IaslInl ((Number) v.IaslIIemenl()).inlVaIue(),
v.addIIemenl(nev Inleger(i + IaslInl)), // A|ouler d'aulres eIemenls
A. U. . 10-11 S. Elkosantini S. Elkosantini 50
Les premiers pas en Java
Lcs cnmmcntaircs Lcs cnmmcntaircs
Imorlance des commenlaire
CIarele du code
ReuliIisalion faciIe du code
Generalion aulomalique du |avadoc ou Ie HeI du rogramme deveIoe
Deux lyes de commenlaire
Commenlaire cIassique / ./ ou // .
Generalion d'un fichier (HTML) de documenlalion / ./
/
Ccci csi un ccnncniairc pcur jata!cc
+auincr Sa|cur
+tcrsicn 2.0
/
?
A. U. . 10-11 S. Elkosantini S. Elkosantini 51
PIan
Chapitre 1 : ntroduction
Chapitre 2 : Les premiers pas en Java
Chapitre 3 : Le concept d'objets
Chapitre 4 : POO avec Java
Chapitre 5 : . et avec C++
A. U. . 10-11 S. Elkosantini S. Elkosantini 52
POO avec Java
Lcs nb|cts ct !cs c!asscs cn Java Lcs nb|cts ct !cs c!asscs cn Java
Mntn
Cnu!cur
Vitcssc_!imitc
Acc!rcr
Frcincr
.
.
.
L'imp!mcntatinn dc ccttc c!assc cn Java cst :
A. U. . 10-11 S. Elkosantini S. Elkosantini 53
POO avec Java
La visibi!it dcs variab!cs ct dcs attributs La visibi!it dcs variab!cs ct dcs attributs
Lcs paramctrcs snnt aussi cnnsidrs
cnmmc dcs variab!cs !nca!cs
A. U. . 10-11 S. Elkosantini S. Elkosantini 54
POO avec Java
La visibi!it dcs variab!cs ct dcs attributs La visibi!it dcs variab!cs ct dcs attributs
Unc variab!c a pnur pnrtc !c b!nc dans
!cquc! c!!c cst dIinic
pub11cc1ass|oca1Var1ab1e
pr1vatestat1cdoub1esum[doub1e va1ues)
doub1esum=0.0:
tor[doub1evva1ues)
sum-=v:
//vn'estp1usaccess1b1e
returnsum://va1uesetsumpasaccess1b1e

pr1vatestat1cvo1dtest[1nt1)
tor[1nt1=0:1S:1--)//erreur
do1t[1):

A. U. . 10-11 S. Elkosantini S. Elkosantini 55


POO avec Java
Lcs mthndcs Lcs mthndcs
In }ava, iI esl imossibIe de definir du code hors d'une melhode.
Une melhode esl searee en 2 arlies :
La signalure (lyes des aramelres, lye de relour).
Le code de Ia melhode.
Le code d'une melhode esl conslilue de differenls bIocs imbriques. Chaque
bIoc definil el uliIise des variabIes IocaIes.
inl vaIeur()
inl amorlissemenl,
amorlissemenl 0.05,
relurn Prix Prix amorlissemenl Agc,

A. U. . 10-11 S. Elkosantini S. Elkosantini 56


POO avec Java
. . ct !c cnnstructcur cn Java ct !c cnnstructcur cn Java
Chaque aeI a un conslrucleur cree un nouveI ob|el (inslance) qui obeil au
alron defini ar Ia cIasse :
I'inslance creee aura Ies allribuls el Ie comorlemenl definis dans Ia cIasse.
reservalion d'un esace memoire our Ia memorisalion de I'elal.
Le conslrucleur esl generaIemenl I'occasion d'iniliaIiser Ies allribuls (
ersonnaIiser I'elal de I'inslance).
II eul y avoir Iusieurs conslrucleurs our une mme cIasse.
IIusieurs iniliaIisalions ossibIes.
A. U. . 10-11 S. Elkosantini S. Elkosantini 57
POO avec Java
. . ct !c cnnstructcur cn Java ct !c cnnstructcur cn Java
La cnnstructinn cn JAVA :
ncw + nnm dc !a c!assc (paramctrcs)
C'cst !c cnnstructcur
Iroduil 1 nev Iroduil ( IorlabIe , 1) ,
Iroduil 2 nev Iroduil () ,
Cnmmcnt prngrammcr
!a c!assc Prnduit ??
A. U. . 10-11 S. Elkosantini S. Elkosantini 58
POO avec Java
. . ct !c cnnstructcur cn Java ct !c cnnstructcur cn Java
Mntn
Cnu!cur
Vitcssc_!imitc
Mntn
Acc!rcr
Frcincr
L'imp!mcntatinn dc ccttc c!assc cn Java cst :
Mntn
Et si !cs paramctrcs du cnnstructcur
pnrtcnt !c mmc nnm quc !cs attributs ??
A. U. . 10-11 S. Elkosantini S. Elkosantini 59
POO avec Java
L'instanciatinn L'instanciatinn
Mntn : Kawasaki
Cnu!cur : nnir
Vitcssc_!imitc : 200
Acc!rcr
Frcincr
Mntn : Yamaha
Cnu!cur : rnugc
Vitcssc_!imitc : 250
Acc!rcr
Frcincr
Mntn
Cnu!cur
Vitcssc_!imitc
Acc!rcr
Frcincr
Lc mnt c!cI ncu cst uti!is
pnur crcr unc instancc dynamiquc
d'un nb|ct a chaquc Inis qu'nn cn a
bcsnin.
A. U. . 10-11 S. Elkosantini S. Elkosantini 60
POO avec Java
Lc cyc!c dc vic d'un nb|ct Lc cyc!c dc vic d'un nb|ct
La crealion d'un ob|el ou, aulremenl dil, ...
Ob|el ob| , NULL
ob|
Ccttc npratinn dc!arc uniqucmcnt !c nnm
ct !c typc dc !'nb|ct. Lcs attributs ct !cs
mthndcs nc snnt pas cncnrc crcr.
A. U. . 10-11 S. Elkosantini S. Elkosantini 61
POO avec Java
Lc cyc!c dc vic d'un nb|ct Lc cyc!c dc vic d'un nb|ct
La crealion d'un ob|el ou, aulremenl dil, ...
Ob|el ob| , NULL
ob|
Ob|el ob| nev Ob|el() , Allribul 1
Allribul 2
.
Melhode 1
.
ob|
C'cst a cc mnmcnt quc !'a!!ncatinn mmnirc
cst ra!isc
A. U. . 10-11 S. Elkosantini S. Elkosantini 62
POO avec Java
Lcs nb|cts, !cs c!asscs ct !'instanciatinn cn Java Lcs nb|cts, !cs c!asscs ct !'instanciatinn cn Java
Acces aux allribuls el melhodes d'un ob|el a arlir d'un aulre ob|el .
Nomob|el.Nommelhode() ,
Nomob|el.NomAllribul,
L'envoi de messages enlre ob|els :
...
I! nc Iaut pas nub!i !cs paramctrcs dans !cs
mcssagcs
Les cascades sonl ossibIes : Magasin.roduil.nom
A. U. . 10-11 S. Elkosantini S. Elkosantini 63
POO avec Java
Lcs nb|cts, !cs c!asscs ct !'instanciatinn cn Java Lcs nb|cts, !cs c!asscs ct !'instanciatinn cn Java
Dans Ie lrailemenl de I'une de ses melhodes, un ob|el eul avoir a s'envoyer
un message (our acceder a un de ses allribuls ou invoquer une des ses
melhodes).
UliIisalion de I'aulo-reference, en |ava : lhis.
|xcnp|c : on se Iace dans une melhode de Ia cIasse Mcic .
Lors du lrailemenl, I'ob|el aeIanl Ia melhode esl une inslance de Ia cIasse
Mcic.
this.Frcincr() signiIic cnvnycr a this (= mni-mmc) !c mcssagc
Frcincr()
A. U. . 10-11 S. Elkosantini S. Elkosantini 64
POO avec Java
Lcs nb|cts, !cs c!asscs ct !'instanciatinn cn Java Lcs nb|cts, !cs c!asscs ct !'instanciatinn cn Java
L'aeI a I'ob|el couranl : uliIisalion du mol cIe thls
lhis.melhode() ,
lhis.allribul,
IxemIe d'uliIisalion
ubIic cIass Molo
inl Vilesse,
inl Irix,

Molo( inl Vilesse , inl Irix)
.
.

A. U. . 10-11 S. Elkosantini S. Elkosantini 65
POO avec Java
Lcs nb|cts, !cs c!asscs ct !'instanciatinn cn Java Lcs nb|cts, !cs c!asscs ct !'instanciatinn cn Java
Si as d'ambigule, Ie mol cIe lhis eul lre oubIie :
lhis.Ireiner () , Ireiner(),
lhis.Irix, Irix,
Ixercice 5 :
Icrire une cIasse Livre, caraclerisee ar Ies allribuls lilre, auleur el annee el ar Ies
melhodes suivanles :
- Une melhode affichanl Ies caraclerisliques d'un Iivre
- Une melhode qui rend en aramelre un Iivre el qui ermel d'afficher Ies deux
Iivres el de Ie comarer Ie nom du Iivre asse en aramelre.
A. U. . 10-11 S. Elkosantini S. Elkosantini 66
POO avec Java
Lcs nb|cts, !cs c!asscs ct !'instanciatinn cn Java Lcs nb|cts, !cs c!asscs ct !'instanciatinn cn Java
Ixercice 6 :
Creer une cIasse Segmenl qui esl definie ar ses exlremiles (des oinls) el ar sa
couIeur. Avec celle cIasse, on eul caIcuIer Ia Iongueur d'un segmenl, Ie deIacer
el changer sa couIeur.
A. U. . 10-11 S. Elkosantini S. Elkosantini 67
POO avec Java
La surchargc La surchargc
La surcharge de melhodes : un mecanisme donnanl Ia ossibiIile d'aeIer
Iusieurs melhodes avec Ie mme nom.
inl somme( inl 1, inl 2)
relurn (1 + 2),
fIoal somme( fIoal 1, fIoal 2)
relurn (1 + 2),
fIoal somme( fIoal 1, fIoal 2, fIoal 3)
relurn (1 + 2 + 3),

inl somme( fIoal 1, inl 2)
relurn (inl(1) + 2),
IxemIe : Ia surcharge
de Ia melhode
somme
Dcs mthndcs surchargcs pcuvcnt avnir dcs typcs dc rctnur
diIIrcnts a cnnditinn qu'c!!cs aicnt dcs argumcnts diIIrcnts.
A. U. . 10-11 S. Elkosantini S. Elkosantini 68
POO avec Java
La surchargc La surchargc
Ixercice 7:
1. Creez une cIasse avec un conslrucleur ar defaul qui imrime un message.
2. A|oulez a celle cIasse un conslrucleur surcharge qui rend un Slring en argumenl el
qui I'imrime avec volre message.
3. Creez, dans Ie rogramme rinciaIe, deux inslances de celle ob|el our lesler Ies
deux conslrucleurs.
A. U. . 10-11 S. Elkosantini S. Elkosantini 69
POO avec Java
La manipu!atinn dcs nb|cts La manipu!atinn dcs nb|cts
L'affeclalion el Ia comaraison :
Ob|el a nev Ob|el (),
Ob|el b nev Ob|el (),
a b ,
Quc! cst !a diIIrcncc cntrc !cs dcux
instanccs a ct b ?
A. U. . 10-11 S. Elkosantini S. Elkosantini 70
POO avec Java
La manipu!atinn dcs nb|cts La manipu!atinn dcs nb|cts
L'affeclalion el Ia comaraison :
Ob|el a nev Ob|el (),
Ob|el b nev Ob|el (),
booIean re (a b) ,
Quc signiIic ccttc cnmparaisnn ?
Verifier si Ies deux ob|els onl Ia mme reference.
A. U. . 10-11 S. Elkosantini S. Elkosantini 71
POO avec Java
La manipu!atinn dcs nb|cts La manipu!atinn dcs nb|cts
L'affeclalion el Ia comaraison :
Vniturc : BMW
Puissancc : 9
Cnu!cur: nnir
Acc!rcr
Frcincr
Vniturc : Mcrccdcs
Puissancc: 9
Cnu!cur : nnir
Acc!rcr
Frcincr
Cnmmcnt crcr dcux nb|cts avcc !a
mmc rIrcncc
Les deux ob|els onl Ies mmes vaIeurs d'allribuls mais Ia reference esl differenle.
Quc! cst !c rsu!tat dc !'instructinn
BMW==Mcrccdcs ?
A. U. . 10-11 S. Elkosantini S. Elkosantini 72
POO avec Java
La dcstructinn dcs nb|cts La dcstructinn dcs nb|cts
Le deslrucleur de cIasse consisle en une melhode qui sera aeIee Iors de
loule deslruclion d'un ob|el.
Avanl que I'ob|el ne soil recycIe ar Ie ramasse-mielles, Ie sysleme aeIIe Ia
melhode jina|izc :
jina|izc esl une melhode dans IaqueIIe on ourra imIemenler roremenl Ia
fermelure evenlueIIe de fichiers/sockels ouverls ou loul aulres oeralions.
In }ava, Ie ramasse-mielles (ou Ie garbage coIIeclor), esl un mecanisme qui
s'occue de Ia Iiberalion ou non d'une zone memoire. C'esl un mecanisme
aulomalique.
Le sysleme essaye d'abord d'aeIer I'ob|el jina|izc avanl de |eler I'ob|el
A. U. . 10-11 S. Elkosantini S. Elkosantini 73
POO avec Java
La dcstructinn dcs nb|cts La dcstructinn dcs nb|cts
c!ass Mntn

int vitcssc,
5tring cnu!cur,
Mntn()

...
5ystcm.nut.print!n("L'nb|ct a t cr"),

vnid Iina!izc()

5ystcm.nut.print!n("Ob|ct ncttny dc !a mmnirc"),

A. U. . 10-11 S. Elkosantini S. Elkosantini 74


POO avec Java
Encapsu!atinn cn Java Encapsu!atinn cn Java
Cnmptc_Bancairc
- Num_RIB
- Nnm
- Mnntant
+ Crditcr()
+ Dbitcr()
II exisle lrois niveaux de visibiIile :
Irive : en }ava, pritaic
ubIique: en }ava, pu||ic
rolege: en }ava, prciccic!
ubIic Slring var1,
ubIic inl melhode1(),
rolecled char var2,
rolecled void melhode2(),
rivale inl var3,
rivale void melhode3(),
A. U. . 10-11 S. Elkosantini S. Elkosantini 75
POO avec Java
Encapsu!atinn cn Java Encapsu!atinn cn Java
L'idee de reslreindre Ia visibiIile des melhodes el des allribuls :
Rendre rive Ies allribuls caraclerisanl I'elal de I'ob|el el de fournir des melhodes
ubIiques ermellanl de modifier/acceder a I'allribuls.
Des gellers el des sellers
Attribut Monlanl : gelMonlanl () : Ie geller
selMonlanl (.) : Ie seller
A. U. . 10-11 S. Elkosantini S. Elkosantini 76
POO avec Java
Encapsu!atinn cn Java Encapsu!atinn cn Java
IxemIe : AIicalion our Ia geslion des comles en banques.
La cIasse anque ayanl comme allribul soIde.
Dans un remier lems, I'allribul esl decIare comme ubIique.
Quc! cst !'incnnvnicnt d'un tc!
prngrammc ?
Quc!!c am!inratinn prnpnscz-vnus ?
A. U. . 10-11 S. Elkosantini S. Elkosantini 77
POO avec Java
L'acccs aux c!asscs cn Java L'acccs aux c!asscs cn Java
On ne eul as rendre une cIasse rive ou rolege, arce que ...
Cnmmcnt rcndrc unc c!assc priv nu prntg cn Java ?
On eul rendre une cIasse (d'une bibIiolheque) ubIique.
La cIasse de Ia bibIiolheque esl accessibIe our Ies uliIisaleurs.
Quc sc passc t-i! si nn nc mcts ricn avant !c mnt c!ass ?
A. U. . 10-11 S. Elkosantini S. Elkosantini 78
POO avec Java
Encapsu!atinn cn Java Encapsu!atinn cn Java
+ Cnmptc_Bancairc
- Num_RIB
- Nnm
- Mnntant
+ Crditcr()
+ Dbitcr()
Imp!mcntcr ccttc
c!assc cn |ava
A. U. . 10-11 S. Elkosantini S. Elkosantini 79
POO avec Java
Lc mnt c! static Lc mnt c! static
Aucune melhodes ni allribuls n'esl accessibIe avanl I'inslancialion de Ia
cIasse en uliIisanl Ie mol cIe . .
La zone memoire n'esl as encore aIIouee.
Lcs mthndcs ct !cs attributs snnt a!nrs
assncis a !'nb|ct ct nnn a !a c!assc.
. el si on veul que Ia donnee ou Ia melhode n'esl as secifiquemenl
rallachee a un ob|el inslance d'une cIasse `
Uti!isatinn du mnt c! static
A. U. . 10-11 S. Elkosantini S. Elkosantini 80
POO avec Java
Lc mnt c! static Lc mnt c! static
cIass SlalicTesl
slalic inl i 47,

SlalicTesl sl1 nev SlalicTesl(),


SlalicTesl sl2 nev SlalicTesl(),
Il dans une aulre cIasse:
Cnmmcnt incrmcntcr !'attribut i ?
A. U. . 10-11 S. Elkosantini S. Elkosantini 81
POO avec Java
L'hritagc L'hritagc
Fnrmc
Rcctang!c Triang!c
Ccrc!c
In }ava, en uliIisanl Ie mol cIe exlends
c!ass Fnrmc

// ..

c!ass Rcctang!c cxtcnds Fnrmc

// ..

c!ass Triang!c cxtcnds Fnrmc

// ..

Et !c mnt c! protected ?
C'cst quni unc mthndc flnuI
d'unc c!assc mcrc?
A. U. . 10-11 S. Elkosantini S. Elkosantini 82
POO avec Java
L'hritagc L'hritagc
Fnrmc
dessiner ()
effacer()
deIacer()
gelcouIeur()
selcouIeur()
Carrc
Triang!c
RelournerHor()
RelournerVer()
Ccrc!c
L'imIemenlalion en }ava de Ia cIasse TriangIe
A. U. . 10-11 S. Elkosantini S. Elkosantini 83
POO avec Java
L'hritagc : !c pn!ymnrphismc L'hritagc : !c pn!ymnrphismc
Fnrmc
dessiner ()
effacer()
deIacer()
gelcouIeur()
selcouIeur()
Carrc
dessiner()
effacer()
Triang!c
dessiner()
effacer()
Ccrc!c
dessiner()
effacer()
L'imIemenlalion en }ava de Ia cIasse TriangIe
A. U. . 10-11 S. Elkosantini S. Elkosantini 84
POO avec Java
L'hritagc a p!usicurs nivcaux L'hritagc a p!usicurs nivcaux
Fnrmc
dessiner ()
effacer()
deIacer()
gelcouIeur()
selcouIeur()
Carrc
dessiner()
effacer()
Triang!c
dessiner()
effacer()
Ccrc!c
dessiner()
effacer()
L'imIemenlalion en }ava de Ia cIasse TriangIe reclangIe
Triang!c
isncc!c
Triang!c
rcctang!c
A. U. . 10-11 S. Elkosantini S. Elkosantini 85
POO avec Java
L'hritagc : !a rcdIinitinn ct !c pn!ymnrphismc L'hritagc : !a rcdIinitinn ct !c pn!ymnrphismc
La redefinilion : redefinir des melhodes herilees de Ia suer-cIasse.
La sous-cIasse doil imeralivemenl conserver Ia decIaralion de Ia melhode
arenl (mme lye el nombre de aramelres el vaIeur de relour)
Le oIymorhisme : a|oule des melhodes dans Ia sous-cIasse.
IxemIe : Touls Ies cIasses de }ava herilenl de Ia cIasse Ob|ecl. II herilenl
ainsi des melhodes leIIes que gelCIass(), cIone(), icSiring().
Fnrmc
dessiner ()
effacer()
Triang!c
dessiner()
dessiner(inl )
Redefinilion
IoIymorhisme
A. U. . 10-11 S. Elkosantini S. Elkosantini 86
POO avec Java
L'hritagc : !'acccs aux mthndcs dc !a supcr c!assc L'hritagc : !'acccs aux mthndcs dc !a supcr c!assc
Iour invoquer une melhode d'une cIasse arenl, iI suffil d'indiquer Ia
melhode refixee ar suer.
c!ass Fnrmc

vnid cIIaccr ()

5ystcm.nut.print!n(''!a Inrmc cst cIIacc''),

c!ass Rcctang!c cxtcnds Fnrmc

vnid cIIaccr ()

5ystcm.nut.print!n(''!c rcctang!c cst cIIac''),
supcr.cIIaccr(),

Quc! cst !c rsu!tat ?


A. U. . 10-11 S. Elkosantini S. Elkosantini 87
POO avec Java
L'hritagc : !'acccs au cnnstructcur dc !a supcr c!assc L'hritagc : !'acccs au cnnstructcur dc !a supcr c!assc
Iour aeIer Ie conslrucleur de Ia cIasse arenl iI suffil d'ecrire
suer(aramelres) avec Ies aramelres adequals.
c!ass Mntn

Mntn ()
this(0,100) ,
Mntn (int km)
this(km,100) ,
Mntn (int km, int prix)
this.km = km ,
this.prix=prix,

c!ass Quad cxtcnds Mntn

int nb-rnucs,
Quad (int k, int p)
supcr(k, p),
nb_rnucs = 4,

II esl obIigaloire dans un conslrucleur d'une cIasse fiIIe de faire aeI


exIicilemenl ou imIicilemenl au conslrucleur de Ia cIasse mere.
Et s'i! n'y a pas dc cnnstructcur
dans !a c!assc mcrc ?
A. U. . 10-11 S. Elkosantini S. Elkosantini 88
POO avec Java
L'hritagc : !c transtypagc L'hritagc : !c transtypagc
Le lranslyage : Trailer un lye derive comme s'iI elail son lye de base.
AeIe aussi lranslyage ascendanl, surlyage ou casling.
Changer un lye vers son lye de base revienl a remonler dans Ie
diagramme d'herilage : c'esl Ie lranslyage ascendanl .
Creer lrois ob|els de lye cercIe, carre el lriangIe. Icrire dans Ia cIasse rinciaIe
Ies melhodes ermellanl d'afficher Ia couIeur de chaque inslance.
A. U. . 10-11 S. Elkosantini S. Elkosantini 89
POO avec Java
L'hritagc : !c transtypagc L'hritagc : !c transtypagc
Le lranslyage en |ava :
|crnc j ncu Triang|c () ,
On cree un ob|el TriangIe aeIe f el qui esl assignee au lye Iorme, ce
qui sembIerail lre une erreur (assigner un lye a un aulre).
Fnrmc
dessiner ()
effacer()
Carrc
dessiner()
effacer()
Triang!c
dessiner()
effacer()
Ccrc!c
dessiner()
effacer()
5c!nn !c diagrammc suivant, quc!!c
mthndc dcssincr () va trc cxcutcr ?
j.!cssincr() ,
A. U. . 10-11 S. Elkosantini S. Elkosantini 90
POO avec Java
L'hritagc : !c transtypagc L'hritagc : !c transtypagc
La cIasse mere Iorme elabIil I'inlerface commune our loules Ies cIasses
fiIIes .
loules Ies formes euvenl lre dessinees el effacees.
Les cIasses derivees redefinissenl ces melhodes our fournir un
comorlemenl unique our chaque lye de forme secifique.
Imp!mcntatinn
IntcrIacc
C!assc Fnrmc
|crnc j ncu Triang|c () ,
Imp!mcntatinn
IntcrIacc
C!assc Triang!c
Iinsiancc j
IntcrIacc
Imp!mcntatinn
A. U. . 10-11 S. Elkosantini S. Elkosantini 91
POO avec Java
L'hritagc : !c transtypagc L'hritagc : !c transtypagc
Iour I'exemIe suivanl :
Imp!mcntatinn
IntcrIacc
C!assc Fnrmc
Iinsiancc j
IntcrIacc
Imp!mcntatinn
Fnrmc
dessiner ()
effacer()
gelcouIeur()
Carrc
dessiner()
effacer()
Triang!c
dessiner()
effacer()
Ccrc!c
dessiner()
effacer()
Triang!c
isncc!c
Triang!c
rcctang!c
|crnc j ncu Triang|crcciang|c () ,
Imp!mcntatinn
IntcrIacc
C!assc Triang!crcctang!c
5c!nn !c diagrammc suivant, quc! cst !c
rsu!tat dc !'instructinn f.desslner() ?
A. U. . 10-11 S. Elkosantini S. Elkosantini 92
POO avec Java
L'hritagc : !c transtypagc L'hritagc : !c transtypagc
RecailuIalion : Dans queI cas Ie lranslyage el Ie oIymorhisme sonl
uliIises `
........
cIass ImIoye
Slring nom,
inl id, saIaire,

ubIic ImIoye(Slring n)
nomn,

cIass magasinier exlends ImIoye
ubIic magasinier(Slring n)
suer (n),
saIaire 250,

void affiche ()

Syslem.oul.rinlIn("}e suis un magasinier"),

Dans Ie rogramme rinciaI, creer un magasinier en uliIisanl Ie lranslyage el
execuler Ia melhode affiche de I'ob|el creer. QueI esl Ie resuIlal `
A. U. . 10-11 S. Elkosantini S. Elkosantini 93
POO avec Java
L'hritagc L'hritagc
Ixercice 8: Creer une hierarchie d'herilage de Rnngcur: 5nuris, Gcrbi!!c, el
Hamstcr. Dans Ia cIasse de base, fournir des melhodes qui sonl communes a lous
Ies Rongeurs, el Ies redefinir dans Ies cIasses derivees our execuler des
comorlemenls differenls deendanl du lye secifique du Rongeur. Creer un
labIeau de Rongeur, Ie remIir avec differenl lyes secifiques de Rongeurs, el
aeIer vos melhodes de Ia cIasse de base our voir ce qui arrive.
A. U. . 10-11 S. Elkosantini S. Elkosantini 94
POO avec Java
L'hritagc L'hritagc
Ixercice 9:
Icrivez Ies cIasses necessaires au fonclionnemenl du rogramme suivanl. Donnez
uniquemenl Ie nom des cIasses el Ies melhodes (sans delaiIIer Ie conlenu).
ubIic cIass Teslalimenls
ubIic slalic void main(Slring args|j)
alimenls|j nev alimenls|3j ,
|0j nev Aarlemenl(''Alef''),
|1j nev ViIIa(''WaIid''),
|2j nev Sludio(''Anis''),
Ior (inl i 0, i<3 , i++)
|ij.affiche(),

Le resuIlal de ce rogramme esl:


L'aarlemenl aarlienl a Alef
La viIIa aarlienl a WaIid
Le sludio aarlienl a Anis
A. U. . 10-11 S. Elkosantini S. Elkosantini 95
POO avec Java
C!asscs abstraitcs C!asscs abstraitcs
Fnrmc
erimelre ()
Carrc
erimelre ()
Triang!c
erimelre ()
Ccrc!c
erimelre ()
Cnmmcnt imp!mcntcr !a mthndc primctrc () dc !a c!assc Fnrmc ?
La mthndc primctrc () nc pcut pas trc imp!mcnt dans !a dc!aratinn
dc !a c!assc Fnrmc, car nn nc sait pas cnmmcnt ca!cu!cr !c primctrc d'unc
Inrmc quc!cnnquc
A. U. . 10-11 S. Elkosantini S. Elkosantini 96
POO avec Java
C!asscs abstraitcs C!asscs abstraitcs
I! Iaut dnnncr !a signaturc dc !a mthndc primctrc () mais pas snn
imp!mcntatinn dans !a c!assc Fnrmc
C'esl une melhode abslraile
Sntuxe . ubstruct pubIlc doubIe perlmetre ( )
L'imIemenlalion de Ia melhode sera dans Ies cIasses fiIIes ermellanl ainsi de
secifier un comorlemenl differenl our chacune des cIasses
A. U. . 10-11 S. Elkosantini S. Elkosantini 97
POO avec Java
C!asscs abstraitcs C!asscs abstraitcs
LxempIe.
Une cIasse abslraile esl une cIasse conlenanl au moins une melhode abslraile
esl aeIee une cIasse abslraile
a b stra c tp u b 11c c 1a ssf0fM0 {
p r1va te $lfl 0M,
p u b 11c f0fM0 If0fM0 0Ml { th 1s.0M0M, )
a b stra c tp u b 11c d o u b 1e #0flM0lf0I l ,
p u b 11c vo 1d d e ss1n e rI l
{$8l0M.00l.#flll I " l0 80l8 " th 1s. 0Ml , )
)
A. U. . 10-11 S. Elkosantini S. Elkosantini 98
POO avec Java
C!asscs abstraitcs C!asscs abstraitcs
LlmpIementutlon des cIusses flIIes .
p u b 11c c 1a ss00f0l0 e x te n d sf0fM0{
p r1va te d o u b 1e f80 ,
p u b 11c 00f0l0 I d o u b 1e f80 l
{su p e rI " 00f0l0 " l , th 1s. f80 f80 , )
p u b 11c d o u b 1e #0flM0lf0 I l
{ re tu rn 0000l0.Fl `th 1s.f80 , ) )
p u b 11c c 1a ss800l8l0 e x te n d sf0fM0{
p r1va te d o u b 1e l 8 f 0 0 f ,
p r1va te d o u b 1e l 0 0 0 0 f ,
p u b 11c 800l8l0 I d o u b 1e l 8 f 0 0 f , d o u b 1e l 0 0 0
0 f l
{su p e rI " f00l80 " l , th 1s. l 8 f 0 0 f l 8 f 0 0 f ,
th 1s. l 0 0 0 0 f l 0 0 0 0 f , )
p u b 11c d o u b 1e #0flM0lf0I l
{ re tu rn [th 1s. l 8 f 0 0 f th 1s. l 0 0 0 0 fllZ , ) )
A. U. . 10-11 S. Elkosantini S. Elkosantini 99
POO avec Java
C!asscs abstraitcs C!asscs abstraitcs
La resence d'une melhode virlueIIe ure dans une cIasse a 3 consequences:
La cIasse ne eul Ius lre inslanciee,
Une cIasse abslraile n'exisle que our lre herilee,
Toule cIasse fiIIe de celle cIasse doil redefinir Ia melhode en queslion,
Une cIasse fiIIe herilanl d'une cIasse mere abslraile doil imIemenler
loules ses melhodes abslrailes, sinon eIIe esl aussi une cIasse abslraile.
Unc mthndc static nc pcut trc abstraitc car nn nc pcut rcdIinir unc
mthndc static)?
A. U. . 10-11 S. Elkosantini S. Elkosantini 100
POO avec Java
C!asscs abstraitcs C!asscs abstraitcs
LxempIe 2 .
public abstract class CentrenfoBourse {
private URL[] urlsCentre;
. . .
abstract protected String lireDonnees(String[] titres);
public String calcule(String[] titres) {
. . .
donnees = lireDonnees(titres);
// Traitement effectu sur donnees
// indpendant du site boursier
. . .
Melhode non abslraile maIgre
qu'eIIe uliIise une melhode
abslraile
Melhode abslraile
A. U. . 10-11 S. Elkosantini S. Elkosantini 101
POO avec Java
C!asscs abstraitcs C!asscs abstraitcs
LxempIe 2 .
ubIic cIass LesIchos exlends CenlreInfoourse
. . .
ubIic Slring IireDonnees(Slring|j lilres)
// ImIanlalion our Ie sile des Ichos
. . .

ImIemenlalion de Ia melhode
abslraile
La cIasse mere definil Ia slruclure gIobaIe de Ia cIasse.
IIIe Iaisse aux cIasses fiIIes Ie soin de definir des melhodes (melhode
IireDonnees).
A. U. . 10-11 S. Elkosantini S. Elkosantini 102
POO avec Java
C!asscs intcrIaccs C!asscs intcrIaccs
Une inlerface esl une cIasse uremenl abslraile donl loules Ies melhodes
sonl abslrailes el ubIiques.
Unc intcrIacc cst un prntntypc dc c!assc. E!!c dIinit !a signaturc dcs
mthndcs qui dnivcnt trc imp!mcntcs dans !cs c!asscs cnnstruitcs a
partir dc cc prntntypc
Unc intcrIacc cst unc c!assc purcmcnt abstraitc dnnt tnutcs !cs mthndcs
snnt abstraitcs ct pub!iqucs ct sans attributs (!cs mnts-c!s abstract ct
pub!ic snnt nptinnnc!s).
Sntuxe . lnter fuce Nomlnterfuce j . . . )
A. U. . 10-11 S. Elkosantini S. Elkosantini 103
POO avec Java
C!asscs intcrIaccs C!asscs intcrIaccs
public interface Figure {
public abstract void dessiner ();
public abstract void deplacer(int x, int y);
public abstract Position getPosition();
}
public interface Comparable {
/** renvoie vrai si this est plus grand que o */
boolean plusGrand(Object o);
}
Lcs mnts-c!s abstract ct pub!ic snnt nptinnnc!s
A. U. . 10-11 S. Elkosantini S. Elkosantini 104
POO avec Java
C!asscs intcrIaccs C!asscs intcrIaccs
Cnmmcnt imp!mcntcr !cs mthndcs d'unc
intcrIacc?
Une cIasse imIemenle une inlerface A si eIIe decIare inp|cncnisA dans
son en-lle.
Sntuxe . cIuss CIusse lmpIements lnterfucej . . . )
La c!assc dnit imp!mcntcr tnutcs !cs mthndcs dc !'intcrIacc,
sinnn c!!c dnit trc dc!arc abstract
A. U. . 10-11 S. Elkosantini S. Elkosantini 105
POO avec Java
C!asscs intcrIaccs C!asscs intcrIaccs
Une cIasse eul imIemenler Iusieurs inlerfaces .
Sntuxe . cIuss A lmpIements lnter1, lnter2,...j . . . )
Une cIasse eul heriler d'une aulre cIasse el imIemenler une ou Iusieurs
inlerfaces.
Sntuxe . cIuss A extends B lmpIements lnter1, lnter2 ,...j . . . )
A. U. . 10-11 S. Elkosantini S. Elkosantini 106
POO avec Java
C!asscs intcrIaccs C!asscs intcrIaccs
Une inlerface eul remIacer une cIasse our decIarer une variabIe, un
aramelre, une vaIeur de relour, elc.
LxempIe llgure f
j conliendra des ob|els donl Ia cIasse imIemenlera I'inlerface ComarabIe.
LxempIe llgure f=neu CercIe()
A. U. . 10-11 S. Elkosantini S. Elkosantini 107
POO avec Java
C!asscs intcrIaccs C!asscs intcrIaccs
Une inlerface ne ossede as de d'allribul. Les inlerfaces ne sonl as inslanciabIes
(comme Ies cIasses abslrailes).
Une inlerface n'a as de conslrucleurs.
Une inlerface eul definir des conslanles, c'esl-a-dire definir des variabIes
decIarees ubIiques, slaliques el finaIe el ayanl une vaIeur conslanle d'affeclalion.
IxemIe : ubIic slalic finaI fIoal II 3.14f,
On ne donne que Ia signalure des melhodes qui sonl necessairemenl des
melhodes d'inslance ubIiques el abslrailes : abslracl ubIic inl f(),
Une inlerface eul heriler d'une aulre inlerface : inler face inlerface1 exlends
inlerface2 . . ..
A. U. . 10-11 S. Elkosantini S. Elkosantini 108
POO avec Java
C!asscs intcrIaccs C!asscs intcrIaccs
A quoi serl Ies inlerfaces en }ava `
Iour aIier Ie manque d'herilage muIliIe en }ava.
Iour offrir Ia ossibiIile d'avoir un comorlemenl unique our cerlaines
cIasses. IxemIe : vehicuIe el voilure el camion.
DissimuIer I'imIemenlalion des melhodes
Iavoriser Ia reuliIisalion : si Ie lye d'un aramelre d'une melhode esl une
inlerface, celle melhode eul s'aIiquer a loules Ies cIasses qui
imIemenlenl I'inlerface, el as seuIemenl a loules Ies sous-cIasses d'une
cerlaine cIasse
A. U. . 10-11 S. Elkosantini S. Elkosantini 109
PIan
Chapitre 1 : ntroduction
Chapitre 2 : Les premiers pas en Java
Chapitre 3 : POO avec Java
Chapitre 4 : Autres notions Java
Chapitre 5 : Connexion aux bases de donnes
Chapitre 5 : nterfaces graphiques avec Java
A. U. . 10-11 S. Elkosantini S. Elkosantini 110
Autres notions Java
instanccnI instanccnI
L'oeraleur insiancccj ermel de savoir a queIIe cIasse aarlienl une
inslance
Si x esl une inslance d'une sous-cIasse de A :
x instanccnI A rcnvnic truc
Iour lesler si un ob|el o esl de Ia mme cIasse que I'ob|el couranl, iI ne faul
donc as uliIiser inslanceof mais Ie code suivanl :
iI (n != nu!! && n.gctC!ass() == this.gctC!ass())
A. U. . 10-11 S. Elkosantini S. Elkosantini 111
Autres notions Java
instanccnI instanccnI
class B{ .}
class D extends B{.}
class C {.}
B b = new B();
D d = new D();
C c = new C();
b instanceof B // .
b instanceof D // .
d instanceof B // .
d instanceof D // .
b = d;
b instanceof B // .
b instanceof D // .
c instanceof B // . :
// .
A. U. . 10-11 S. Elkosantini S. Elkosantini 112
Autres notions Java
L'nb|ct 5tring L'nb|ct 5tring
C'esl une cIasse consideree comme lye simIe.
Cc n'cst pas un typc primitiI.
IniliaIisalion : Slring lxl c'esl un lexle ,
Longueur : lxl.Ienglh(),
Comaraison : lxl .equaIs ( HeIIo!! ),
Acces aux caracleres : lxl.charAl(5),
Concalenalion : Slring mol en franais ,
Slring lxl2 lxl+mol,
A. U. . 10-11 S. Elkosantini S. Elkosantini 113
Autres notions Java
L'nb|ct 5tring L'nb|ct 5tring
Ixercice 8:
Icrire un rogramme qui ermel d'afficher Ies mols d'une hrase. Les mols de Ia
hrases sonl seares ar un esace uis , .
A. U. . 10-11 S. Elkosantini S. Elkosantini 114
Autres notions Java
Lcs packagcs Lcs packagcs
Un ackage esl un ensembIe de cIasses voisines, couvranl me mme
domaine el associees a une fonclionnaIile.
Definilion d'un ackage : ackage nom_du_ackage,
Lcs c!asscs dnivcnt trc sauvcgardcr dans !c
mmc rpcrtnirc.
Ccttc instructinn cst !a prcmicrc !ignc dans
!cs c!asscs cnnccrncs.
A. U. . 10-11 S. Elkosantini S. Elkosantini 115
Autres notions Java
Lcs packagcs Lcs packagcs
IxemIe de ackage }ava :
|ava.Iang
|avax.sving
|ava.nel
Iour uliIiser Ies ackages dans une cIasse :
Le ackage ar defaul: |ava.Iang
Iour Ies aulres, iI faul Ie signaIer en uliIisanl Ie mol cIe imorl
imorl monackage., //ou
imorl monackage.nomcIasse,
imorl TI1.Ix1.,
A. U. . 10-11 S. Elkosantini S. Elkosantini 116
Autres notions Java
Lcs cxccptinns Lcs cxccptinns
Les excelions reresenlenl Ie mecanisme de geslion des erreurs inlegre au
Iangage |ava.
Une excelion esl un signaI qui indique que queIque chose d'excelionneI
(comme une erreur) s'esl roduil. IIIe inlerroml Ie fIol d'execulion normaI du
rogramme.
c!ass Fnrmc

Pub!ic static vnid main (5tring arg|{)


int a=3,b=0,
5ystcm.nut.print!n( a/b),

Quc! cst !c rsu!tat ?


Ixcelion in lhread "main" |ava.Iang.ArilhmelicIxcelion: /
by zero
al Iorme.main(Iorme.|ava:4)
A. U. . 10-11 S. Elkosantini S. Elkosantini 117
POO avec Java
Lcs cxccptinns : capturcr ct attrapcr Lcs cxccptinns : capturcr ct attrapcr
Si un bIoc de rogramme ou une melhode genere une excelion eIIe doil
suoser qu'eIIe sera inlercele el Ievee.
Un bIoc d'inslruclion eul lre surveiIIe.
On eul allraer une excelion avec I'inslruclion try.
try
// b!nc d'instructinn
Mais, quni Iairc avcc ccttc
cxccptinn dtcctc ?
La geslion des excelions avec I'inslruclion catch.
A. U. . 10-11 S. Elkosantini S. Elkosantini 118
Autres notions Java
Lcs cxccptinns : capturcr ct attrapcr Lcs cxccptinns : capturcr ct attrapcr
try
// bIoc d'inslruclion

catch (Tye1 id1)
//inslruclion a faire en cas d'erreur de lye 1
A. U. . 10-11 S. Elkosantini S. Elkosantini 119
Autres notions Java
Lcs cxccptinns : capturcr ct attrapcr Lcs cxccptinns : capturcr ct attrapcr
ubIic cIass Iorme
ubIic slalic void main(Slring|j args)
inl a 3,
inl b 0,
lry
Syslem.oul.rinlIn("resuIlal " + (i / |)),

calch (ArilhmelicIxcelion e)
Syslem.oul.rinlIn ( erreur arilhmelique ),

A. U. . 10-11 S. Elkosantini S. Elkosantini 120


Autres notions Java
Lcs cxccptinns : capturcr ct attrapcr Lcs cxccptinns : capturcr ct attrapcr
S'iI y a Iusieurs lyes d'excelions a inlerceler, iI faul definir aulanl de
calch que de lye d'excelions.
try
// bIoc d'inslruclion

catch (Tye1 id1)
//inslruclion a faire en cas d'erreur de lye 1
catch (Tye2 id2)
//inslruclion a faire en cas d'erreur de lye 2
catch (Tye3 id3)
//inslruclion a faire en cas d'erreur de lye 3
Un typc d'cxccptinn dnnn nc dnit pas vcnir
aprcs un typc d'unc cxccptinn d'unc
supcr c!assc.
A. U. . 10-11 S. Elkosantini S. Elkosantini 121
Autres notions Java
Lcs cxccptinns : Mais, c'cst quni unc cxccptinn ? Lcs cxccptinns : Mais, c'cst quni unc cxccptinn ?
In }ava, Ies excelion sonl des ob|els ayanl des melhodes el allribuls.
Scurcc . ccurs !c M. Barcn
A. U. . 10-11 S. Elkosantini S. Elkosantini 122
Autres notions Java
Lcs cxccptinns : capturcr ct attrapcr Lcs cxccptinns : capturcr ct attrapcr
ubIic cIass Iorme
ubIic slalic void main(Slring|j args)
inl a 3,
inl b 0,
lry
Syslem.oul.rinlIn("resuIlal " + (i / |)),

calch (Ixcelion e)

calch (ArilhmelicIxcelion e)
Syslem.oul.rinlIn ( erreur arilhmelique ),

A. U. . 10-11 S. Elkosantini S. Elkosantini 123


Autres notions Java
Lcs cxccptinns : Lanccr nu dc!cnchcr Lcs cxccptinns : Lanccr nu dc!cnchcr
Une melhode decIare qu'eIIe eul Iancer une excelion ar Ie mol cIe
thrnws.
Dc!aratinn :
Moto (String couleur, int vitesse) throws MotoErr{
...
}
La crealion d'une nouveIIe excelion en uliIisanl Ie mol cIe thrnw.
Dc!aratinn :
Moto (String couleur, int vitesse) throws MotoErr{
f (vitesse <0) throw new MoloIrr(),
.
}
A. U. . 10-11 S. Elkosantini S. Elkosantini 124
Autres notions Java
Lcs cxccptinns : Lanccr nu dc!cnchcr Lcs cxccptinns : Lanccr nu dc!cnchcr
5i unc mthndc pcut !anccr unc mthndc, i!
Iaut uti!iscr try . catch !nrs dc snn appc!
dans un autrc prngrammc
ubIic slalic void main(Slring|j args)
lry
Molo kavazakinev Molo(''Rouge'', -15),
e.freiner(),

calch (MoloIrr e)
Syslem.oul.rinlIn (''erreur d'inslancialion''),

Mais, c'cst quni MntnErr ?


A. U. . 10-11 S. Elkosantini S. Elkosantini 125
Autres notions Java
Lcs cxccptinns : Lc b!nc Iina!!y Lcs cxccptinns : Lc b!nc Iina!!y
Serl a execuler un code quoi qu'iI arrive (fermer un fichier, une connexion,
Iiberer une ressources)
Dc!aratinn : try{
.
}
finally{
}
Le calch n'esl as obIigaloire.
A. U. . 10-11 S. Elkosantini S. Elkosantini 126
Autres notions Java
Lcs cxccptinns : Lc b!nc Iina!!y Lcs cxccptinns : Lc b!nc Iina!!y
Excmp!c :
ReenlranlLock Iock nev ReenlranlLock(),
Iock.Iock(),
try
doSomelhing(),
t1na11y
Iock.unIock()

A. U. . 10-11 S. Elkosantini S. Elkosantini 127


Autres notions Java
Lcs I!ux Lcs I!ux
Iour oblenir des donnees, un rogramme ouvre un fIux de donnees sur une
source de donnees (fichier, cIavier, memoire, elc).
De Ia mme faon our ecrire des donnees dans un fichier, un rogramme
ouvre un fIux de donnees.
}ava fournil un aquelage jata.ic qui ermel de gerer Ies fIux de donnees en
enlree el en sorlie, sous forme de caracleres (exemIe fichiers lexles) ou
sous forme binaire (oclels, byle).
}ava emIoie un strcam (fIux en angIais) enlre Ia source el Ia deslinalion
des donnees. Toule oeralion d'enlree/sorlie en }ava suil Ie schema suivanl
A. U. . 10-11 S. Elkosantini S. Elkosantini 128
Autres notions Java
Lcs I!ux Lcs I!ux
Toule oeralion d'enlree/sorlie en }ava suil Ie schema suivanl :
Ouverlure d'un fIux,
Leclure ou ecrilure des donnees,
Iermelure du fIux.
jata.ic fournil loules Ies cIasses necessaires a Ia cratinn, !ccturc, criturc el
traitcmcnt dcs I!ux.
II y a un grand nombre de cIasses inlervenanl dans Ia maniuIalion des fIux
(Ius de 50).
A. U. . 10-11 S. Elkosantini S. Elkosantini 129
Autres notions Java
Lcs I!ux Lcs I!ux
}ava fournil qualre hierarchies de cIasses our gerer Ies fIux de donnees:
Iour Ies fIux binaires :
o La cIasse |npuiSircan el ses sous-cIasses our Iire des oclels
(|i|c|npuiSircan)
o La cIasse OupuiSircan el ses sous-cIasses our ecrire des oclels
(|i|cOupuiSircan).
Iour Ies fIux de caracleres :
o La cIasse |ca!cr el ses sous-cIasses our Iire des caracleres
(Bujjcrc!|ca!cr, |i|c|ca!cr).
o La cIasse Wriicr el ses sous-cIasses (Bujjcrc!Wriicr, |i|cWriicr).
A. U. . 10-11 S. Elkosantini S. Elkosantini 130
Autres notions Java
Lcs I!ux dc caractcrcs Lcs I!ux dc caractcrcs
IxemIe : Ieclure a arlir du cIavier :
cIass Tesl
ubIic slalic void main(Slring|j argv)
Syslem.oul.rinlIn("VeuiIIez saisir volre nom :"),
Slring inulLine " ",
lry
ufferedReader is nev ufferedReader(nev InulSlreamReader(Syslem.in)),
Slring inulLine,
inulLine is.readLine(),
is.cIose(),
calch (Ixcelion e)
Syslem.oul.rinlIn("Inlercele : " + e),

if (inulLine ! nuII)
Syslem.oul.rinlIn("Volre nom esl :" + inulLine),

Le casling d'un ob|el


de lye |npuiSircan
en |ca!cr
Lire Ia Iigne |usqu'au caraclere relour chariol
..
A. U. . 10-11 S. Elkosantini S. Elkosantini 131
Autres notions Java
Lcs I!ux dc caractcrcs Lcs I!ux dc caractcrcs
IxemIe : Ieclure a arlir du cIavier avec Ia cIasse |ava.uliI.scanner:
imorl |ava.uliI.Scanner,
ubIic cIass Saisie

ubIic slalic void main (Slring |j args)


Syslem.oul.rinlIn("Inlrez volre nom :"),
Scanner inul nev Scanner(Syslem.in),
Slring nom inul.nexlLine(),
Syslem.oul.rinlIn("on|our " + nom),

A. U. . 10-11 S. Elkosantini S. Elkosantini 132


Autres notions Java
Lcs I!ux dc caractcrcs Lcs I!ux dc caractcrcs
IxemIe : Ieclure a arlir du cIavier avec Ia cIasse Syslem.in.read():
Renvoie une vaIeur de lye byle que I'on converlira en caraclere
ar un oeraleur casl.
char c (char)Syslem.in.read(),
A. U. . 10-11 S. Elkosantini S. Elkosantini 133
Autres notions Java
Lcs I!ux dc caractcrcs Lcs I!ux dc caractcrcs
IxemIe : Ieclure a arlir du cIavier avec Ia cIasse Syslem.in.read():
char c,
Slring chaine "",
vhiIe ((c (char)Syslem.in.read()) ! '(n')
chainechaine+c,
A. U. . 10-11 S. Elkosantini S. Elkosantini 134
Autres notions Java
Lcs I!ux dc caractcrcs Lcs I!ux dc caractcrcs
IxemIe : Ieclure a arlir d'un fichier el ecrilure dans un aulre :
cIass Tesl
ubIic slalic void main(Slring|j argv)
lry
IiIeReader in nev IiIeReader("a_Iire.lxl"),
IiIeWriler oul nev IiIeWriler("a_ecrire.lxl"),
inl c,
vhiIe ((c in.read()) ! -1)
oul.vrile(c),

in.cIose(),
oul.cIose(),
calch (Ixcelion e)
Syslem.oul.rinlIn("Inlercele : " + e),

|ca!cr
Transferl de donnees de in vers cui
Wriicr
||ux !c
caracicrcs
|crnciurc !cs !cux
j|ux
A. U. . 10-11 S. Elkosantini S. Elkosantini 135
Autres notions Java
Lcs I!ux dc caractcrcs Lcs I!ux dc caractcrcs
IxemIe : Ieclure a arlir d'un fichier el ecrilure dans un aulre :
cIass Tesl
ubIic slalic void main(Slring|j argv)
lry
IiIeInulSlream nev IiIeInulSlream("a_Iire.lxl"),
IiIeOulSlream oul nev IiIeOulSlream("a_ecrire.lxl"),
inl c,
vhiIe ((c in.read()) ! -1)
oul.vrile(c),

in.cIose(),
oul.cIose(),
calch (Ixcelion e)
Syslem.oul.rinlIn("Inlercele : " + e),

QueIIe esl Ia difference enlre ce rogramme


el Ie rogramme recedenl `
A. U. . 10-11 S. Elkosantini S. Elkosantini 136
Autres notions Java
Lcs Iichicrs Lcs Iichicrs
La cIasse |i|c ermel de gerer I'acces aux fichiers el aux reerloires.
Un reerloire esl gere aussi comme un fichier.
La cIasse |i|c aarlienl au ackage jata.ic.
File monFichier = new File("Note.txt");
DecIaralion :
I! s'agit dc !a cratinn dc !'nb|ct Fi!c ct nnn
du Iichicr physiquc.
monFichier.createNewFile();
Cratinn du Iichicr pnrtant !c nnm Nntc.txt.
A. U. . 10-11 S. Elkosantini S. Elkosantini 137
Autres notions Java
Lcs Iichicrs Lcs Iichicrs
QueIques melhodes :
|cc|can can|ca!() : verifie si Ie fichier eul lre Iu
|cc|can canWriic() : verifie si Ie fichier eul modifie
|cc|can !c|cic() : surime Ie fichier ou Ie reerloire
Siring gciPain() : renvoie Ie chemin du fichier ou du reerloire
Siringj} |isi() : renvoie Ia Iisle des fichiers el des reerloires conlenu dans Ie
reorloire
I! nc Iaut pas cnnInndrc !cs c!asscs
Fi!cRcadcr ct Fi!cInput5trcam ct !a c!assc
Fi!c.
A. U. . 10-11 S. Elkosantini S. Elkosantini 138
Autres notions Java
Lcs Iichicrs Lcs Iichicrs
Aulres melhodes :
nom du fichier : gctNamc()
chemin IocaI vers Ie fichier : gctPath()
chemin absoIu vers Ie fichier :
gctAbsn!utcPath()/gctAbsn!utcFi!c()/isAbsn!utc()
chemin canonique :gctCannnica!Path()/gctCannnica!Fi!c()
chemin vers Ie reerloire ere : gctParcnt()/gctParcntFi!c()
isDircctnry() tcstc si un Iichicr cst un
rpcrtnirc
A. U. . 10-11 S. Elkosantini S. Elkosantini 139
PIan
Chapitre 1 : ntroduction
Chapitre 2 : Les premiers pas en Java
Chapitre 3 : POO avec Java
Chapitre 4 : Autres notions Java
Chapitre 5 : Connexion aux bases de donnes
Chapitre 6 : nterfaces graphiques avec Java
A. U. . 10-11 S. Elkosantini S. Elkosantini 140
Connexion aux bases de donnes
Intrnductinn Intrnductinn
UliIisalion de I'AII }DC our Ies bases de donnees :
}DC our }ava Dalaase Conneclivily
AII ermel a des aIicalions }ava d'acceder a des bases de
donnees reIalionneIIes queIconques
L'AII Iournil un ensembIe de cIasses el d'inlerfaces ermellanl
I'uliIisalion sur Ie reseau d'un ou Iusieurs SGD a arlir d'un
rogramme }ava.
A. U. . 10-11 S. Elkosantini S. Elkosantini 141
Connexion aux bases de donnes
Lc pi!ntc Lc pi!ntc
BD
JDBC
OracIe
MysqI
SQLServer
Sybase
Informix
D2
Drivcr spciIiquc
pnur chaquc 5GBD
Conlienl loules Ies cIasses necessaire our communiquer avec
une base de donnees
Tous Ies drivers :
hll://deveIoers.sun.com/roducl/|dbc/drivers
A. U. . 10-11 S. Elkosantini S. Elkosantini 142
Connexion aux bases de donnes
Architccturc JDBC Architccturc JDBC
A. U. . 10-11 S. Elkosantini S. Elkosantini 143
Connexion aux bases de donnes
Lcs tapcs principa!cs Lcs tapcs principa!cs
A. U. . 10-11 S. Elkosantini S. Elkosantini 144
Connexion aux bases de donnes
JDBC JDBC
Charger Ie driver }DC :
UliIisalion de Ia melhode jcrNanc de Ia cIasse C|ass
Oracle :
Class.forName("oracle.jdbc.driver.OracleDriver");
SQL Server 2000:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Pont ODBC-JDBC
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
A. U. . 10-11 S. Elkosantini S. Elkosantini 145
Connexion aux bases de donnes
JDBC JDBC
Charger Ie driver }DC :
UliIisalion de Ia melhode jcrNanc de Ia cIasse C|ass
Quand une cIasse Driver esl chargee, eIIe doil creer une inslance
d'eIIe mme el s'enregislrer aures du DriverManager
Cerlains comiIaleurs refusenl celle nolalion el demande Iull :
lry

CIass.forName (" driver_name ").nevInslance(),

calch (CIassNolIoundIxcelion a) Syslem.oul.rinlIn ("Driver non
lrouve"),
A. U. . 10-11 S. Elkosantini S. Elkosantini 146
Connexion aux bases de donnes
JDBC JDBC
IlabIir Ia connexion a Ia base de donnees :
Iour elabIir Ia connexion avec un SGD, iI faul reciser :
I'URL de Ia base de donnees : |dbc:<sous-rolocoIe>:<nom-D>
Ie nom de Ia base de donnees
Ie Iogin uliIise ainsi que son mol de asse
Slring slrUrI
"|dbc:microsofl:sqIserver://hoslname:1433",
Conneclion connecl DriverManager.gelConneclion(slrUrI
,user,assvord),
ees
Lc DrlterMunuger cssayc tnus !cs drivcrs qui sc snnt cnrcgistrs
(chargcmcnt cn mmnirc avcc C!ass.InrNamc()) |usqu'a cc qu'i! trnuvc
un drivcr qui pcut sc cnnncctcr a !a basc
A. U. . 10-11 S. Elkosantini S. Elkosantini 147
Connexion aux bases de donnes
JDBC JDBC
IlabIir Ia connexion a Ia base de donnees :
lry

Slring slrUrI "|dbc:microsofl:sqIserver://hoslname:1433",
Conneclion connecl DriverManager.gelConneclion(slrUrI ,user,assvord),

calch (SQLIxcelion c)
Syslem.oul.rinlIn ("Connexion refuse ou base inconnu "+c),
calch (Ixcelion d)
ees
A. U. . 10-11 S. Elkosantini S. Elkosantini 148
Connexion aux bases de donnes
JDBC JDBC
Creer une zone de descrilion d'une requle :
In uliIisanl Ia cIasse siaicncni.
L'ob|el Siaicncni ossede Ies melhodes necessaires our reaIiser Ies
requles sur Ia base associee a Ia connexion donl iI deend
A arlir de I'ob|el Ccnncxicn, on recuere Ie Siaicncni associe
Slalemenl sl connexion.crealeSlalemenl(),
A. U. . 10-11 S. Elkosantini S. Elkosantini 149
Connexion aux bases de donnes
JDBC JDBC
Ixeculer Ia requle :
3 lyes d'execulion :
cxccuicQucrq() : our Ies requles (SILICT) qui relournenl un |csu|iSci
(luIes resuIlanls)
cxccuicUp!aic() : our Ies requles (INSIRT, UIDATI, DILITI, CRIATI
TALI, DROI TALI) qui relournenl un enlier (nombre de luIes lrailes)
cxccuic() : our requles inconnus. Renvoie lrue si Ia requle a donne Iieu a Ia
crealion d'un ob|el |csu|iSci
esuIlSel rs sl.execuleQuery("SILICT nom, renom IROM cIienls " +
"WHIRI nom'iley' ORDIR Y nom"),
A. U. . 10-11 S. Elkosantini S. Elkosantini 150
Connexion aux bases de donnes
JDBC JDBC
Ixeculer Ia requle :
esuIlSel rs sl.execuleQuery("SILICT nom, renom IROM cIienls " +
"WHIRI nom'iley' ORDIR Y nom"),
inl nb sl.execuleUdale("INSIRT INTO del(DIIT) VALUIS(06)"),
lry
ResuIlSel rs sl.execuleQuery( "SILICT IROM MyTabIe" ),
calch (Ixcelion e)Syslem.oul.rinlIn(e),
A. U. . 10-11 S. Elkosantini S. Elkosantini 151
Connexion aux bases de donnes
JDBC JDBC
Trailer Ies donnees relournees :
L'ob|el ResuISel (relourne ar I'execulion de execuleQuery() ) ermel
d'acceder aux chams des luIes seIeclionnes
seuIes Ies donnees demandees sonl lransferees en memoire ar Ie driver
}DC
Le arcours se fail ileralivemenl Iigne ar Iigne ar Ia melhode ncxi()
relourne faIse si dernier luIe Iu, lrue sinon
chaque aeI fail avancer Ie curseur sur Ie luIe suivanl
iniliaIemenl, Ie curseur esl osilionne avanl Ie remier luIe
A. U. . 10-11 S. Elkosantini S. Elkosantini 152
Connexion aux bases de donnes
JDBC JDBC
Trailer Ies donnees relournees :
On eul idenlifier chaque coIonne de Ia base de donnee
Iar son index
Iar son nom
L'acces aux vaIeurs des coIonnes se fail ar Ies melhodes de Ia forme
gelXXX()
Leclure du lye de donnees XXX dans chaque coIonne du luIe
couranl
inl vaI rs.gelInl(3) , // acces a Ia 3e coIonne
Slring rod rs.gelSlring("IRODUIT")
A. U. . 10-11 S. Elkosantini S. Elkosantini 153
Connexion aux bases de donnes
JDBC JDBC
Trailer Ies donnees relournees :
Iarcourir Ies resuIlals d'une requle
lring req "SILICT nole, nom IROM Iludianl ",
esuIlSel rs sl.execuleQuery(req),
hiIe(rs.nexl())
inl i rs.gelInl(" nole"),
Slring s rs.gelSlring(" nom"),
A. U. . 10-11 S. Elkosantini S. Elkosantini 154
Connexion aux bases de donnes
JDBC JDBC
Trailer Ies donnees relournees :
Corresondance des lyes
A. U. . 10-11 S. Elkosantini S. Elkosantini 155
Connexion aux bases de donnes
JDBC JDBC
Iermer Ies differenls connexions :
II faul fermer roremenl Ies differenles connexion ouverls
Chaque ob|el (de lye Conneclion, resuIlsel ou slalemenl)
ossede une melhode cIose()
5innn !c gurbuge coIIector s'cn nccupcra mais mnins cIIicacc
esuIlsel.cIose(),
lalemenl.cIose(),
A. U. . 10-11 S. Elkosantini S. Elkosantini 156
Connexion aux bases de donnes
Excmp!c cnmp!ct Excmp!c cnmp!ct
lry
CIass.jcrNanc (crg.gji.nn.nqsq|.Oritcr).ncu|nsiancc(),
calch (CIassNolIoundIxcelion a) Syslem.cui.prini|n (Oritcr ncn ircutc),
calch (Ixcelion b) Syslem.cui.prini|n (Prc||cnc sur cnargcncni !c !ritcr jOBC),
lry
conn DriverManager.gciCcnncciicn (j!|c.nqsq|.//127.0.0.1/c|r, rcci, nqsq|),
slml conn.crealeSlalemenl(),
calch (SQLIxcelion c) Syslem.cui.prini|n (Ccnncxicn rcjusc cu |asc inccnnu +c),
calch (Ixcelion d) Syslem.cui.prini|n (Prc||cnc sur ccnncxicn),
lrySlring req "SILICT nom IROM Iludianl ",
esuIlSel rs slml .execuleQuery(req),
hiIe(rs.nexl())
Syslem .oul.rinlIn(rs.gelSlring(" nom")),
alch (SQLIxcelion c) Syslem.cui.prini|n ( prc||cnc SQI+c),
Charger
Ie iIole
Connexion
Irearer, execuler el
lrailer Ia requle
Iermer Ia connexion
A. U. . 10-11 S. Elkosantini S. Elkosantini 157
PIan
Chapitre 1 : ntroduction
Chapitre 2 : Les premiers pas en Java
Chapitre 3 : POO avec Java
Chapitre 4 : Autres notions Java
Chapitre 5 : Connexion aux bases de donnes
Chapitre 6 : nterfaces graphiques avec Java
A. U. . 10-11 S. Elkosantini S. Elkosantini 158
Interfaces graphiques avec Java
Intrnductinn Intrnductinn
}ava gere aussi Ies inlerfaces grahiques,
Ienlres grahiques : menu, barre d'ouliIs, boulons, zone lexle, elc.
Geslion de Ia souris
Geslion du cIavier
}ava offre deux bibIiolheques rinciaIes our Ies inlerfaces
grahiques :
La bibIiolheque |ava.avl : Ie debul du grahique avec }ava. DisonibIe
deuis }ava 1.1
La bibIiolheque |avax.sving : Ius Ieger que avl el donc moins de
ressource memoire. DisonibIe deuis }ava 2, ameIiore el elend Ies
ossibiIiles de AWT.
A. U. . 10-11 S. Elkosantini S. Elkosantini 159
Interfaces graphiques avec Java
Excmp!c Excmp!c
}Menubar
}TabbedIane
}Tree
}ScroIIIane
}Irame
}IiIeChooser
A. U. . 10-11 S. Elkosantini S. Elkosantini 160
Interfaces graphiques avec Java
Architccturc d'un nb|ct swing Architccturc d'un nb|ct swing
Un ob|el sving esl conslilue rinciaIemenl de :
Un cnmpnsant mcrc, aeIe aussi Ie comosanl lo-IeveI.
Des cnmpnsants cnntcncurs inlermediaires,
Des cnmpnsants !mcntaircs,
Que veul dire un comosanl en }ava `
JCnmpnncnt
gelorder()
gelGrahics()
rinl()
reainl()
selVisibIe()
.
A. U. . 10-11 S. Elkosantini S. Elkosantini 161
Interfaces graphiques avec Java
La c!assc JCnmpnncnt La c!assc JCnmpnncnt
C'esl Ia cIasse de base de loul comosanls sving sauf Ie comosanl
lo-IeveI :
Tous Ies comosanls Sving herilenl de Ia cIasse }comonenl.
Les comosanls onl des TooI Tis.
Les comosanls onl des bordures.
JCnmpnncnt
JMcnuBar JPrngrcssBar
J5crn!!Panc
A. U. . 10-11 S. Elkosantini S. Elkosantini 162
Interfaces graphiques avec Java
. . ct pnur !c cnmpnsant tnp-!cvc! ct pnur !c cnmpnsant tnp-!cvc!
Les comosanls lo-IeveI ne sonl as des cIasses }Comonanl.
La bibIiolheque sving roose lrois comosanls lo IeveI :
}Irame, }DiaIog el }AIel
Les comosanls lo-IeveI ossedenl un ccnicni panc qui conlienl
lous Ies comosanls visibIes d'un lo-IeveI.
Un comosanl lo-IeveI eul conlenir une barre de menu
A. U. . 10-11 S. Elkosantini S. Elkosantini 163
Interfaces graphiques avec Java
Un cxcmp!c : Un cxcmp!c :
Avanccm
cnt
}Irame
}Menuar
}LabeI
ConlenlIane
}Irogressar
Tnp-!cvc!
Cnmpnsant
cnntcncur
Cnmpnsants !mcntaircs
L
c
s

d
i
I
I

r
c
n
t
s

c
n
m
p
n
s
a
n
t
s

d
c

!
a

I
c
n

t
r
c
A. U. . 10-11 S. Elkosantini S. Elkosantini 164
Interfaces graphiques avec Java
Lcs cnmpnsants tnp-!cvc! : JFramc Lcs cnmpnsants tnp-!cvc! : JFramc
Un comosanl grahique de lye }Irame esl une fenlre conlenanl
une barre de lilre, une bordure, lrois boulons (minimiser, agrandir
el fermer) el Ie conlenl ane qui conliendra loul Ies comosanls
eIemenlaires.
JFramc
selTilIe()
gelMenuar()
gelConlainIane()
sel}Menuar(}Menuar m)
remove()
.
Un aeru de Ia cIasse }Irame :
A. U. . 10-11 S. Elkosantini S. Elkosantini 165
Interfaces graphiques avec Java
Lcs cnmpnsants tnp-!cvc! : JFramc Lcs cnmpnsants tnp-!cvc! : JFramc
}Irame fenelre nev }Irame (),
fenelre.selTilIe("Comosanl }Irame"),
fenelre.selSize(250,150),
fenelre.selVisibIe(lrue),
Cndc Java :
Ou aussi :
}Irame fenelre nev }Irame ("Comosanl }Irame"),
A. U. . 10-11 S. Elkosantini S. Elkosantini 166
Interfaces graphiques avec Java
Lcs cnmpnsants tnp-!cvc! : JFramc Lcs cnmpnsants tnp-!cvc! : JFramc
ubIic cIass Ienelre exlends }Irame
Ienelre()
lhis.selTilIe("Comosanl }Irame version 2"),
lhis.selVisibIe(lrue),


nu aussi crcr unc c!assc qui hritc dc !a c!assc JFramc:


Dans !c main, nn pcut par cxcmp!c, !'instancicr !a c!assc Fcnctrc ct
changcr sa tai!!c :
ubIic slalic void main(Slring|j args)
....

A. U. . 10-11 S. Elkosantini S. Elkosantini 167


Interfaces graphiques avec Java
Lcs cnmpnsants tnp-!cvc! : JFramc Lcs cnmpnsants tnp-!cvc! : JFramc
Changcmcnt dc !'icnc dc !a Icntrc
ImageIcon image nev ImageIcon( image.gif"),
fenelre.selIconImage(image.gelImage()),
Pnsitinn dc !a Icntrc dans !'cran
fenelre.selLocalion (20,50),
x
y
Ccntrcr !a Icntrc dans !'cran
Dimension dim TooIkil.gelDefauIlTooIkil().gelScreenSize(),
fenelre.selLocalion(dim.vidlh/2 - f.gelWidlh()/2, dim.heighl/2 - f.gelHeighl()/2),
A. U. . 10-11 S. Elkosantini S. Elkosantini 168
Interfaces graphiques avec Java
Lcs cnmpnsants tnp-!cvc! : JDia!ng Lcs cnmpnsants tnp-!cvc! : JDia!ng
C'esl Ia cIasse rinciaIe ermellanl de creer des boiles de
diaIogues.
UliIisabIe our creer des boiles de diaIogues ersonnaIisees ou our
uliIiser ceIIes qui sonl de|a definies en uliIisanl Ia cIasse
}OlionIane.
Comme }Irame, }DiaIog conlienl un conleneur rinciaIe (ccnicni
panc) qui doil regrouer loul Ies aulres comosanl eIemenlaires.
oile de diaIogue redefinie avec Ia
cIasse }OlionIane
A. U. . 10-11 S. Elkosantini S. Elkosantini 169
Interfaces graphiques avec Java
Lcs cnmpnsants tnp-!cvc! : JDia!ng Lcs cnmpnsants tnp-!cvc! : JDia!ng
}DiaIog diaIogue nev }DiaIog(),
diaIogue.selTilIe("Ceci esl une boile de diaIogue"),
diaIogue.selSize(250,150),
diaIogue.selVisibIe(lrue),
Cndc Java :
nu aussi crcr unc c!assc qui hritc dc !a c!assc . :
....
...
A. U. . 10-11 S. Elkosantini S. Elkosantini 170
Interfaces graphiques avec Java
Lcs cnmpnsants tnp-!cvc! : JApp!ct Lcs cnmpnsants tnp-!cvc! : JApp!ct
Une aIel esl un rogramme }ava s'execulanl sur une age WI.
Le recours aux aIels esl I'un des moyens de dynamiser Ie HTML.
Les aIels sonl creees a arlir d'une cIasse }ava }AeIel.
Conlrairemenl au }Irame el }diaIog, Ie comosanl lo-IeveI }aIel
esl desline our creer des inlerfaces grahiques dans Ies ages veb.
Une fois I'aIel esl creer en }ava el comiIee, eIIe doil lre inseree
dans une age HTML.
Excmp!c
A. U. . 10-11 S. Elkosantini S. Elkosantini 171
Interfaces graphiques avec Java
Lcs cnmpnsants tnp-!cvc! : JApp!ct Lcs cnmpnsants tnp-!cvc! : JApp!ct
ubIic cIass IxemIe exlends }AIel
}LabeI heIIoLabeI nev }LabeI ("on|our, vous me voyez `"),
}ullon b nev }ullon ("OK"),
// Melhode aeIee ar Ie navigaleur Iorsque I'aIel esl chargee
ubIic void inil ()
lhis.gelConlenlIane().selackground(CoIor.yeIIov) ,
lhis.gelConlenlIane().selLayoul(nuII),
heIIoLabeI.selSize(200,100),
heIIoLabeI.selLocalion(10,10),
lhis.gelConlenlIane().add (heIIoLabeI),
b.selSize(100,100),
b.selLocalion(210,10),
lhis.gelConlenlIane().add(b),

Cndc Java :
A. U. . 10-11 S. Elkosantini S. Elkosantini 172
Interfaces graphiques avec Java
Lcs cnmpnsants tnp-!cvc! : JApp!ct Lcs cnmpnsants tnp-!cvc! : JApp!ct
<HTML>
<HIAD>
<TITLI>AIel HTML Iage</TITLI>
</HIAD>
<ODY>
<H3><HR WIDTH"100%">AIel HTML Iage<HR WIDTH"100%"></H3>
<I>
<AIILIT code "IxemIe.cIass" vidlh350 heighl200></AIILIT>
</I>
</ODY>
</HTML>
Et dans !c Iichicr HTML:
A. U. . 10-11 S. Elkosantini S. Elkosantini 173
Interfaces graphiques avec Java
Rcapitu!atinn Rcapitu!atinn
Avanccm
cnt
}Irame
Tnp-!cvc!
Cnmpnsant
cnntcncur
intcrmdiaircs
Cnmpnsants !mcntaircs
L
c
s

d
i
I
I

r
c
n
t
s

c
n
m
p
n
s
a
n
t
s

d
c

!
a

I
c
n

t
r
c
A. U. . 10-11 S. Elkosantini S. Elkosantini 174
Interfaces graphiques avec Java
Lcs cnmpnsants cnntcncurs intcrmdiaircs Lcs cnmpnsants cnntcncurs intcrmdiaircs
Sving roose Iusieurs conleneurs inlermediaire:
}IaneI
}TabbedIane
}ScroIIIane
}OlionIane
}TabbedIane
}TooIar
}Menuar
..
A. U. . 10-11 S. Elkosantini S. Elkosantini 175
Interfaces graphiques avec Java
Lcs cnmpnsants cnntcncurs intcrmdiaircs : JPanc! Lcs cnmpnsants cnntcncurs intcrmdiaircs : JPanc!
Le conleneur }IaneI esl Ie Ius generique. On eul, ar exemIe,
choisir sa couIeur de fond, Iui a|ouler des comosanl, modifier Ia
disosilion de ses comosanls, elc.
Ce }IaneI conlienl 2
comosanls eIemenlaires
JPanc!
add(Comonenl c)
SelLayoul(LayoulManager m)
findComonenlAl(inl x , inl y)
..
A. U. . 10-11 S. Elkosantini S. Elkosantini 176
Interfaces graphiques avec Java
Lcs cnmpnsants cnntcncurs intcrmdiaircs : J5crn!!Panc Lcs cnmpnsants cnntcncurs intcrmdiaircs : J5crn!!Panc
Un }ScroIIIane esl un conleneur qui offre des ascenseurs, iI ermel
de visionner un comosanl Ius grand que Iui.
J5crn!!Panc
add(Comonenl c)
SelLayoul(LayoulManager m)
..
A. U. . 10-11 S. Elkosantini S. Elkosantini 177
Interfaces graphiques avec Java
Lcs cnmpnsants cnntcncurs intcrmdiaircs : Jtnn!bar ct Lcs cnmpnsants cnntcncurs intcrmdiaircs : Jtnn!bar ct
JMcnuBar JMcnuBar
Une }TooIar esl une barre de d'ouliI
Une }Menuar esl une barre de menu
}Menuar
}TooIar
..
..
A. U. . 10-11 S. Elkosantini S. Elkosantini 178
Interfaces graphiques avec Java
Lcs cnmpnsants cnntcncurs intcrmdiaircs : Jtnn!bar ct Lcs cnmpnsants cnntcncurs intcrmdiaircs : Jtnn!bar ct
JMcnuBar JMcnuBar
}Irame fenelre nev }Irame (),

}Menuar |Menuar1 nev |avax.sving.}Menuar(),
Menu |Menu1 nev |avax.sving.}Menu(),
|Menu1.selTexl("Iichier"),

|Menuar1.add(|Menu1),

}Menu |Menu2 nev |avax.sving.}Menu(),
|Menu2.selTexl("Menu"),
|Menuar1.add(|Menu2),
fenelre.sel}Menuar(|Menuar1),
Cndc Java :
A. U. . 10-11 S. Elkosantini S. Elkosantini 179
Interfaces graphiques avec Java
Lcs cnmpnsants cnntcncurs intcrmdiaircs : Jtnn!bar ct Lcs cnmpnsants cnntcncurs intcrmdiaircs : Jtnn!bar ct
JMcnuBar JMcnuBar
Cndc Java :
|TooIar1 nev |avax.sving.}TooIar(),
|ullon1 nev |avax.sving.}ullon(),
|ullon1.selIcon(nev |avax.sving.ImageIcon("d:((Iivre hisloire.gif")),
|TooIar1.add(|ullon1),
JButton jButton2 new javax.swing.JButton();
|ullon2.selTexl("CoIIer"),
|TooIar1.add(|ullon2),
JSeparator jSeparator1 new javax.swing.JSeparator();
|Searalor1.selOrienlalion(|avax.sving.SvingConslanls.VIRTICAL),
|TooIar1.add(|Searalor1),
A. U. . 10-11 S. Elkosantini S. Elkosantini 180
Interfaces graphiques avec Java
Rcapitu!atinn Rcapitu!atinn
Avanccm
cnt
}Irame
Tnp-!cvc!
Cnmpnsant
cnntcncur
intcrmdiaircs
Cnmpnsants !mcntaircs
L
c
s

d
i
I
I

r
c
n
t
s

c
n
m
p
n
s
a
n
t
s

d
c

!
a

I
c
n

t
r
c
A. U. . 10-11 S. Elkosantini S. Elkosantini 181
Interfaces graphiques avec Java
Lcs cnmpnsants !mcntaircs Lcs cnmpnsants !mcntaircs
Sving roose Iusieurs conleneurs inlermediaire:
boulons, Checkox, Radio
Combo box
Lisl, menu
TexlIieId, TexlArea, LabeI
IiIeChooser, CoIorChooser,
..
A. U. . 10-11 S. Elkosantini S. Elkosantini 182
Interfaces graphiques avec Java
LaynutManagcr LaynutManagcr
Toul conleneur ossede un geslionnaire de resenlalion (Layoul)
ar defaul.
Le IaqcuiManagcr definil I'organisalion dans un conleneur.
Les geslionnaires de resenlalion ar defaul sonl :
Le Bcr!crIaqcui our Win!cu el ses descendanls (|ranc, Oia|cg, .)
Le ||cuIaqcui our Panc| el ses descendanls (App|ci, elc.)
A. U. . 10-11 S. Elkosantini S. Elkosantini 183
Interfaces graphiques avec Java
LaynutManagcr LaynutManagcr
A. U. . 10-11 S. Elkosantini S. Elkosantini 184
Interfaces graphiques avec Java
LaynutManagcr LaynutManagcr
IIIe se fail rinciaIemenl en 5 elaes :
1. Cration d'une fentre (par hritage)
2. Rcupration du container
3. Modification du Layout
4. nsertion des composants dans le conteneur
5. Arranger les composantes
A. U. . 10-11 S. Elkosantini S. Elkosantini 185
Interfaces graphiques avec Java
LaynutManagcr LaynutManagcr
import javax.swing.*;
import java.awt.*;
public class Ienetre extends JFrame

private JButton b1,b2,b3,b4, b5;


public Ienetre()
Container pan this.getContentPane();
pan.setLayout(new BorderLayout());
b1 new JButton ("Nord"); b2 new JButton ("Sud");
b3 new JButton ("Est"); b4 new JButton ("Ouest");
b5 new JButton ("Centre");
this.add(b1, BorderLayout.NORTH);
this.add(b2 , BorderLayout.SOUTH);
this.add(b3, BorderLayout.EAST);
this.add(b4, BorderLayout.WEST);
this.add(b5, BorderLayout.CENTER);
}
1
2
3
4 & 5
A. U. . 10-11 S. Elkosantini S. Elkosantini 186
nterfaces graphiques avec Java
La geslion des evenemenls La geslion des evenemenls
In }DK1.1, Ia geslion des evenemenl se fonde sur Ia deIegalion. Les
comosanls "deIeguenl" Ia geslion des evenemenls uliIisaleur a une cIasse
exlerieure.
II y a Iusieurs lyes d'evenemenls (|tcni):
CIique sur des boulons: AclionIvenl,
Geslion du cIavier: KeyIvenl,
Ivenemenls Iies a Ia souris: MouseIvenl,
...
A. U. . 10-11 S. Elkosantini S. Elkosantini 187
nterfaces graphiques avec Java
La geslion des evenemenls La geslion des evenemenls
Iour chaque lye d'evenemenl, iI faul Iui associer un ecouleur:
Aclion sur un comosanl (boulon) : AclionLislener
Saisie de lexle au cIavier : KeyLislener
CIics de souris, enlree ou sorlie d'un oinleur : MouseLislener
Mouvemenl de souris : MouseMolionLislener
Lorsqu'une case a cocher esl modifiee : IlemLislener
A. U. . 10-11 S. Elkosantini S. Elkosantini 188
nterfaces graphiques avec Java
La geslion des evenemenls La geslion des evenemenls
Iour chaque calegorie d'evenemenls, iI exisle une inlerface qui doil lre
definie ar loule cIasse souhailanl recevoir celle calegorie evenemenls.
Celle inlerface exige que loules Ies melhodes soienl definies.
Ces melhodes sonl aeIees Iorsque des evenemenls arlicuIiers
surviennenl.
A. U. . 10-11 S. Elkosantini S. Elkosantini 189
nterfaces graphiques avec Java
AclionIislener AclionIislener
// Ecouteur associ aux sur des boutons, Menu, etc
class Ecouteur implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
// et dans une autre classe,
Button monBouton = new Button("Demarrer");
// Associer un couteur au bouton
monBouton.addActionListener(new Ecouteur());
// puis ajouter le bouton la fentre (JFrame)
fenetre.add(monBouton)
A. U. . 10-11 S. Elkosantini S. Elkosantini 190
nterfaces graphiques avec Java
AclionIislener AclionIislener
import java.awt.event.ActionListener;
// Etape 1 : dclaration de la classe
public class MaClasse extends JFrame implements ActionListener
// Etape 3 : Cration de deux boutons
JButton monBouton new JButton("Mon Bouton");
JButton monBouton2 new JButton("Mon Bouton2");
public MaClasse()
// Etape 4 : On ajoute l'couteur sur le bouton monBouton .
monBouton.addActionListener(this);
// Puis sur monBouton2
monBouton2.addActionListener(this); }
/* Etape 2 :Cette mthode est dclare dans l'interIace ActionListener. Il nous Iaut
l'implmenter. */
public void actionPerIormed(ActionEvent e)
// Etape 2bis
iI(e.getSource() monBouton)
// Bouton 1 a t cliqu }
else
// Bouton 2 a t cliqu } } }
A. U. . 10-11 S. Elkosantini S. Elkosantini 191
nterfaces graphiques avec Java
La geslion des evenemenls associes a Ia souris La geslion des evenemenls associes a Ia souris
II y a lrois lyes de Iisleners (ecouleur) associe a Ia souris:
MouseLislener: evenemenl souris cIassique
MouseMolionLislener: evenemenl souris Iorsque Ia souris se deIace
MouseWheeILislener: evenemenl Iie au deIacemenl de Ia moIelle
A. U. . 10-11 S. Elkosantini S. Elkosantini 192
Interfaces graphiques avec Java
MnuscListcncr MnuscListcncr

A. U. . 10-11 S. Elkosantini S. Elkosantini 193


Fin du cours Fin du cours

Vous aimerez peut-être aussi