Académique Documents
Professionnel Documents
Culture Documents
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"),
In }ava:
// IxemIe de rogramme minimaI : SaIul.c
-incIude <sldio.h> //..
void main ()
sld::coul<<"SaIul loul Ie monde",
.
.
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),
IxemIe :
ubIic slalic void main(Slring|j args)
Inr(Slring s:args)
Syslem.oul.rinlIn(s),
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
.
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):
int vitcssc,
5tring cnu!cur,
Mntn()
...
5ystcm.nut.print!n("L'nb|ct a t cr"),
vnid Iina!izc()
// ..
// ..
// ..
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''),
vnid cIIaccr ()
5ystcm.nut.print!n(''!c rcctang!c cst cIIac''),
supcr.cIIaccr(),
Mntn ()
this(0,100) ,
Mntn (int km)
this(km,100) ,
Mntn (int km, int prix)
this.km = km ,
this.prix=prix,
int nb-rnucs,
Quad (int k, int p)
supcr(k, p),
nb_rnucs = 4,
calch (ArilhmelicIxcelion e)
Syslem.oul.rinlIn ( erreur arilhmelique ),
calch (Ixcelion e)
calch (ArilhmelicIxcelion e)
Syslem.oul.rinlIn ( erreur arilhmelique ),
calch (MoloIrr e)
Syslem.oul.rinlIn (''erreur d'inslancialion''),
|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),
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),
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