Vous êtes sur la page 1sur 26

1

M2 ISF


















Introduction la P.O.O et langage java
(fascicule 1)











O. Auzende
2010-2011
2

3
Programmation Oriente Objet et langage java


Objectifs

Comprendre les principes de la programmation oriente objet : notions de classe, instance,
hritage, polymorphisme. Les appliquer en langage java.

Sommaire / Plan

Introduction la P.O.O
Classes et instances
Structures de contrle
Hritage et polymorphisme
Les paquetages
Le paquetage graphique
La gestion des vnements : mthode MVC
Les conversions et calculs
Applets java
Programmation dune application financire
Transformation de lapplication financire ensuite en applet.

Logiciels utiliss

JDK version >= 1.6 et sa documentation, tlchargeables librement sur le site de Sun

Pr-requis

Avoir programm dans un langage informatique.

Bibliographie

Programmer en java, java 5.0, Claude DELANNOY, Editions Eyrolles.
Java et la programmation oriente objet, Michel DIVAY, Editions Dunod
La programmation Oriente Objet, Hugues BERSINI, Editions Eyrolles
JAVA 6, Les fondamentaux du langage Java, Thierry GROUSSARD, Collection Ressources
Informatiques
Dveloppement JEE 5 avec Eclipse Europa, Karim DJAAFAR, Editions Eyrolles
4

Programmation Oriente Objet et langage java ................................................................................................. 5
Introduction ........................................................................................................................................................... 5
Classes et instances ................................................................................................................................................ 5
Cration dobjets partir de classes : attributs dinstances ............................................................................. 5
Les comportements : mthodes dinstance ...................................................................................................... 9
Les attributs et mthodes de classe ............................................................................................................... 13
Attributs et mthodes : bilan ......................................................................................................................... 16
Les structures de contrle .................................................................................................................................. 17
Le test if else ............................................................................................................................................ 17
Les boucles .................................................................................................................................................... 17
La boucle for ............................................................................................................................................. 17
La boucle while ......................................................................................................................................... 17
La boucle do while ............................................................................................................................... 18
Les sauts ........................................................................................................................................................ 18
Le break ..................................................................................................................................................... 18
Le continue ................................................................................................................................................ 18
Le return .................................................................................................................................................... 18
Hritage et polymorphisme ................................................................................................................................ 19
Hritage ......................................................................................................................................................... 19
Polymorphisme ............................................................................................................................................. 19
Les paquetages ..................................................................................................................................................... 20
Les classes ..................................................................................................................................................... 20
Les interfaces ................................................................................................................................................ 20
Les classes dexception ................................................................................................................................. 23
Le paquetage java.lang .................................................................................................................................. 24
Les autres paquetages .................................................................................................................................... 25
Modes de protection des attributs .................................................................................................................. 25
5
Programmation Oriente Objet et langage java
Introduction
Langages procduraux : C, Pascal, Basic, Fortran, Cobol Un programme est une suite dinstructions, les
donnes tant stockes dans des tableaux (tableaux de nombres, tableaux de chanes de caractres).

Apparition de lintelligence artificielle : structuration des informations en objets conceptuels ; les donnes de
types varis (nombres, chanes de caractres) concernant un mme objet sont regroupes en mmoire. Un objet
est donc composite.

Exemple :
o compte en banque =ensemble dinformations (numro, titulaire, oprations, solde)
o titulaire =ensemble dinformation (nom, prnom, adresse, tel, mail)
o opration =ensemble dinformations (date, lieu, versement ou retrait, montant)

Apparition de la Programmation Oriente Objet (P.O.O) et des langages objets :

Nom Langage objets SE Remarques
Simula (1967) Notion de classe Unix
Smalltalk (1976) OUI Unix / Windows Environnement complet (SE
compris)
Eiffel (1986) OUI Spcifique Environnement complet
Objective C (1986) OUI Macintosh Bas sur Smalltalk
C++(annes 1990) MIXTE Unix Le plus difficile et le plus
dangereux : procdural +
objets
java (1995) OUI TOUS Plus accessible que C++, et
surtout multi-plateforme
C#(2001) MIXTE Windows

Avantages de la P.O.O. : amlioration de la spcification des besoins, prototypage rapide, maintenance plus
facile, rutilisabilit, portabilit.
Classes et instances
Cration dobjets partir de classes : attributs dinstances
Les donnes sont structures en objets, composs dattributs. Chaque objet a sa propre identit : deux objets
dont les attributs ont les mmes valeurs sont distincts (vu quils nont pas le mme emplacement mmoire).

Un objet est ncessairement cr partir dun modle (un moule ) appel une classe. Il est alors appel une
instance de la classe, et ses attributs sont appels des attributs dinstance.

Une classe dcrit une structure de donnes et un ensemble de comportements. Tous les objets provenant de la
mme classe ont alors la mme structure de donnes et le mme comportement.

La classe prcise qui a accs quoi en utilisant des qualificatifs de protection (private, protected, public). Pour
permettre daccder des attributs privs, elle doit donner des mthodes daccs (lecture et / ou criture) ces
attributs. Sinon ils seraient inaccessibles de lextrieur de la classe.

Exemple

La classe CompteBancaire dfinit ce que sera un compte bancaire. Chaque CompteBancaire aura une structure
(il contiendra un numro, un titulaire, un ensemble oprations) et un ensemble de comportements (prendre en
compte un versement, un retrait, donner son solde) puisquun client qui a un compte bancaire peut le
consulter, y verser ou en retirer de largent.
6
Ce problme ncessite une classe Personne, une classe CompteBancaire, une classe Operation, chacune avec une
structure de donnes propre et des comportements :


Structures de donnes

cl ass Per sonne {
pr ot ect ed St r i ng nom; / / l i st e des at t r i but s d i nst ance
pr ot ect ed St r i ng pr enom;
pr ot ect ed St r i ng adr esse ;
pr ot ect ed St r i ng t el ;
pr ot ect ed St r i ng mai l ;
pr ot ect ed Compt eBancai r e cpt ; / / r f r ence ( adr esse mmoi r e) d un f ut ur compt e

/ / mt hode de cr at i on d' une per sonne ( l aquel l e n' a pas encor e de compt e bancai r e)
Per sonne( St r i ng no, St r i ng pn, St r i ng adr , St r i ng t l , St r i ng em) {
nom= no ;
pr enom= pn ;
adr esse = adr ;
t el = t l ;
mai l = em;
/ / pas de val eur donne encor e cpt , donc par df aut cpt = nul l
}
}

Commentaires

protected :

String :

Per sonne( St r i ng no, St r i ng pn, St r i ng adr , St r i ng t l , St r i ng em) : constructeur de la classe
Personne.
Constructeur :

cl ass Oper at i on {
pr ot ect ed Dat e dat e ;
pr ot ect ed St r i ng l i eu ;
pr ot ect ed St r i ng nat ur e ;
pr i vat e doubl e mont ant ;

Oper at i on( Dat e d, St r i ng l , St r i ng n, doubl e m) {
dat e = d ;
l i eu = l ;
nat ur e = n ;
mont ant = m;
}
}
7
Commentaires

Date date :
Ncessite une librairie :

String nature :

Oper at i on( Dat e d, St r i ng l , St r i ng n, doubl e m) : constructeur de la classe Operation.

cl ass Compt eBancai r e {
pr i vat e i nt num;
pr i vat e Per sonne t i t ul ai r e ;
pr i vat e doubl e sol de ;
pr i vat e Oper at i on oper at i ons[ ] ;
pr i vat e i nt nbop ;

/ / mt hode de cr at i on d' un Compt eBancai r e par une Per sonne p avec un mont ant i ni t i al m
Compt eBancai r e( Per sonne p, doubl e m) {
num= 1 ; / / numr o at t r i buer par l a banque
t i t ul ai r e = p ;
sol de = m;
oper at i ons = new Oper at i on[ 100] ; / / t abl eau pour l es opr at i ons f ut ur es
nbop = 0 ;
oper at i ons[ nbop] = new Oper at i on( new Dat e( ) , "agence", "ver sement ", m) ;
nbop++ ;
p. cpt = t hi s ; / / t hi s : l e compt e j ust e cr
}
}

Commentaires

private :

double solde :

operations[] operations :

Compt eBancai r e( Per sonne p, doubl e m) : constructeur de la classe CompteBancaire.

p. cpt = t hi s :


Programme principal (phase 1)

publ i c cl ass Ut i l Compt e1 {

publ i c st at i c voi d mai n( St r i ng[ ] ar gs) {
Per sonne p1 = new Per sonne( "Dur and", "Et i enne", "96 r ue d' Assas, 75006 Par i s",
"0144415665", "dur and@or ange. f r ") ;
Compt eBancai r e compt e1 = new Compt eBancai r e( p1, 300. 00) ;

Per sonne p2 = new Per sonne( "Al ber t ", "Loui se", "12 pl ace du Pant hon, 75005
Par i s", "0144400000", "l oui se. al ber t @or ange. f r ") ;
Compt eBancai r e compt e2 = new Compt eBancai r e( p2, 500. 00) ;
}
}

Commentaires

publ i c cl ass Ut i l Compt e1 :

voi d :

st at i c mai n : indique une mthode de classe que seule la classe peut effectuer.

mai n( St r i ng[ ] ar gs) :
8

Fichier complet (version 1) : UtilCompte1.java
i mpor t j ava. ut i l . * ;

cl ass Per sonne {
pr ot ect ed St r i ng nom; / / l i st e des at t r i but s
pr ot ect ed St r i ng pr enom;
pr ot ect ed St r i ng adr esse ;
pr ot ect ed St r i ng t el ;
pr ot ect ed St r i ng mai l ;
pr ot ect ed Compt eBancai r e cpt ; / / r f r ence ( adr esse mmoi r e) d un f ut ur compt e

/ / mt hode de cr at i on d' une per sonne ( l aquel l e n' a pas encor e de compt e bancai r e)
Per sonne( St r i ng no, St r i ng pn, St r i ng adr , St r i ng t l , St r i ng em) {
nom= no ;
pr enom= pn ;
adr esse = adr ;
t el = t l ;
mai l = em;
/ / pas de val eur donne encor e cpt , donc par df aut cpt = nul l
}
}

cl ass Oper at i on {
pr ot ect ed Dat e dat e ;
pr ot ect ed St r i ng l i eu ;
pr ot ect ed St r i ng nat ur e ;
pr i vat e doubl e mont ant ;

Oper at i on( Dat e d, St r i ng l , St r i ng n, doubl e m) {
dat e = d ;
l i eu = l ;
nat ur e = n ;
mont ant = m;
}
}

cl ass Compt eBancai r e {
pr i vat e i nt num;
pr i vat e Per sonne t i t ul ai r e ;
pr i vat e doubl e sol de ;
pr i vat e Oper at i on oper at i ons[ ] ;
pr i vat e i nt nbop ;

/ / mt hode de cr at i on d' un Compt eBancai r e par une Per sonne p avec un mont ant m
Compt eBancai r e( Per sonne p, doubl e m) {
num= 1 ; / / numr o at t r i buer par l a banque
t i t ul ai r e = p ;
sol de = m;
oper at i ons = new Oper at i on[ 100] ; / / t abl eau pour l es opr at i ons f ut ur es
nbop = 0 ;
oper at i ons[ nbop] = new Oper at i on( new Dat e( ) , "agence", "ver sement ", m) ;
nbop++ ;
p. cpt = t hi s ; / / t hi s : l e compt e j ust e cr
}
}

publ i c cl ass Ut i l Compt e1 {

publ i c st at i c voi d mai n( St r i ng[ ] ar gs) {
Per sonne p1 = new Per sonne( "Dur and", "Et i enne", "96 r ue d' Assas, 75006 Par i s",
"0144415665", "dur and@or ange. f r ") ;
Compt eBancai r e compt e1 = new Compt eBancai r e( p1, 300. 00) ;

Per sonne p2 = new Per sonne( "Al ber t ", "Loui se", "12 pl ace du Pant hon, 75005
Par i s", "0144400000", "l oui se. al ber t @or ange. f r ") ;
Compt eBancai r e compt e2 = new Compt eBancai r e( p2, 500. 00) ;
}
}

Commentaires

Une seule classe
Le fichier doit sappeler

9
Compilation : javac UtilCompte1.java (appel au compilateur) Attention la casse !!!
Gnration de quatre fichiers de pseudo-code (vrifier avec la commande dir).

Interprtation : java UtilCompte1 (appel linterprteur) cre les objets mais naffiche RIEN.

Spcificit de java : compilation + excution

Etape de compilation :

Etape dinterprtation :

Portabilit :

Les comportements : mthodes dinstance
Une Personne doit pouvoir consulter son compte, y verser ou en retirer de largent. Elle doit donc disposer des
oprations consulter, verser et retirer implmentes sous forme de mthodes consul t er ( ) , ver ser ( . . . ) ,
r et i r er ( . . . ) .

Mais la Personne ne peut pas modifier directement le solde de son CompteBancaire car solde est dclar
private dans CompteBancaire. Il faut que la classe CompteBancaire prvoie les trois oprations correspondantes,
implmentes sous forme de mthodes donneSol de( ) , ver se( . . . ) , r et i r e( . . . ) .

La Personne demande alors son CompteBancaire de faire lOpration attendue.

cl ass Per sonne {
pr ot ect ed St r i ng nom;
pr ot ect ed St r i ng pr enom;
pr ot ect ed St r i ng adr esse ;
pr ot ect ed St r i ng t el ;
pr ot ect ed St r i ng mai l ;
pr ot ect ed Compt eBancai r e cpt ; / / r f r ence ver s un f ut ur compt e

/ / mt hode de cr at i on d' une per sonne qui n' a pas encor e de compt e bancai r e)
Per sonne( St r i ng no, St r i ng pn, St r i ng adr , St r i ng t l , St r i ng em) {
nom= no ;
pr enom= pn ;
adr esse = adr ;
t el = t l ;
mai l = em;
/ / pas encor e de cpt donc cpt = nul l
}

void consulter() {
// une personne consulte son compte
System.out.println("Titulaire : "+ nom + " " + prenom);
System.out.println("Solde : "+cpt.donneSolde());
System.out.println("------------------------------------");
}

void verser(String lieu, double montant) {
cpt.verse(lieu, montant) ;
}

void retirer(String lieu, double montant) {
cpt.retire(lieu, montant) ;
}
}

Commentaires

consul t er , ver ser , r et i r er : oprations (dites ) de la classe Personne


Syst em. out . pr i nt l n( . . . ) :

10
cl ass Compt eBancai r e {
pr i vat e i nt num;
pr i vat e Per sonne t i t ul ai r e ;
pr i vat e doubl e sol de ;
pr i vat e Oper at i on oper at i ons[ ] ;
pr i vat e i nt nbop ;

/ / mt hode de cr at i on d' un Compt eBancai r e par une Per sonne p avec un mont ant i ni t i al m
Compt eBancai r e( Per sonne p, doubl e m) {
num= 1 ; / / numr o at t r i buer par l a banque
t i t ul ai r e = p ;
sol de = m;
oper at i ons = new Oper at i on[ 100] ; / / t abl eau pour l es opr at i ons f ut ur es
nbop = 0 ;
oper at i ons[ nbop] = new Oper at i on( new Dat e( ) , "agence", "ver sement ", m) ;
nbop++ ;
p. cpt = t hi s ; / / t hi s : l e compt e j ust e cr
}

double donneSolde() {
// permet de lire le solde
return solde ;
}

void verse(String lieu, double m) {
// permet de verser le montant m sur le compte en enregistrant une opration
operations[nbop] = new Operation(new Date(), lieu, "versement", m);
nbop++ ;
solde += m ;
System.out.println("versement de " + m + " effectue");
System.out.println("------------------------------------");
}

void retire(String lieu, double m) {
// permet de retirer le montant m du compte en enregistrant une opration
if (solde >= m) {
solde -= m ;
operations[nbop] = new Operation(new Date(), lieu, "retrait", m);
nbop++ ;
System.out.println("retrait de " + m + " effectue");
}
else {
System.out.println("retrait de " + m + " refuse");
}
System.out.println("------------------------------------");
}
}

Commentaires

doubl e donneSol de( ) : mthode avec valeur de

Programme principal (phase 2)

On ajoute dans le programme principal la consultation du solde de comptes, un versement et un retrait :

publ i c cl ass Ut i l Compt e2 {

publ i c st at i c voi d mai n( St r i ng[ ] ar gs) {
Per sonne p1 = new Per sonne( "Dur and", "Et i enne", "96 r ue d' Assas, 75006 Par i s",
"0144415665", "dur and@or ange. f r ") ;
Compt eBancai r e compt e1 = new Compt eBancai r e( p1, 300. 00) ; p1.consulter() ;

Per sonne p2 = new Per sonne( "Al ber t ", "Loui se", "12 pl ace du Pant hon, 75005
Par i s", "0144400000", "l oui se. al ber t @or ange. f r ") ;
Compt eBancai r e compt e2 = new Compt eBancai r e( p2, 500. 00) ; p2.consulter() ;

p1.verser("agence", 100.00) ; p1.consulter() ;

p2.retirer("distributeur A", 200.00); p2.consulter() ;
}
}

11

Fichier complet (version 2) : UtilCompte2.java
i mpor t j ava. ut i l . * ;

cl ass Per sonne {
pr ot ect ed St r i ng nom;
pr ot ect ed St r i ng pr enom;
pr ot ect ed St r i ng adr esse ;
pr ot ect ed St r i ng t el ;
pr ot ect ed St r i ng mai l ;
pr ot ect ed Compt eBancai r e cpt ; / / r f r ence ver s un f ut ur compt e

/ / mt hode de cr at i on d' une per sonne qui n' a pas encor e de compt e bancai r e
Per sonne( St r i ng no, St r i ng pn, St r i ng adr , St r i ng t l , St r i ng em) {
nom= no ;
pr enom= pn ;
adr esse = adr ;
t el = t l ;
mai l = em;
/ / pas encor e de cpt donc cpt = nul l
}

voi d consul t er ( ) {
/ / une per sonne consul t e son compt e
Syst em. out . pr i nt l n( "Ti t ul ai r e : "+ nom+ " " + pr enom) ;
Syst em. out . pr i nt l n( "Sol de : "+cpt . donneSol de( ) ) ;
Syst em. out . pr i nt l n( "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ") ;
}

voi d ver ser ( St r i ng l i eu, doubl e mont ant ) {
cpt . ver se( l i eu, mont ant ) ;
}

voi d r et i r er ( St r i ng l i eu, doubl e mont ant ) {
cpt . r et i r e( l i eu, mont ant ) ;
}
}

cl ass Oper at i on {
pr ot ect ed Dat e dat e ;
pr ot ect ed St r i ng l i eu ;
pr ot ect ed St r i ng nat ur e ;
pr i vat e doubl e mont ant ;

Oper at i on( Dat e d, St r i ng l , St r i ng n, doubl e m) {
dat e = d ;
l i eu = l ;
nat ur e = n ;
mont ant = m;
}
}

cl ass Compt eBancai r e {
pr i vat e i nt num;
pr i vat e Per sonne t i t ul ai r e ;
pr i vat e doubl e sol de ;
pr i vat e Oper at i on oper at i ons[ ] ;
pr i vat e i nt nbop ;

Compt eBancai r e( Per sonne p, doubl e m) {
num= 1 ; / / numr o at t r i buer par l a banque
t i t ul ai r e = p ;
sol de = m;
oper at i ons = new Oper at i on[ 100] ; / / t abl eau pour l es opr at i ons f ut ur es
nbop = 0 ;
oper at i ons[ nbop] = new Oper at i on( new Dat e( ) , "agence", "ver sement ", m) ;
nbop++ ;
p. cpt = t hi s ; / / t hi s : l e compt e j ust e cr
}

doubl e donneSol de( ) {
/ / per met de l i r e l e sol de
r et ur n sol de ;
}


12
voi d ver se( St r i ng l i eu, doubl e m) {
/ / per met de ver ser l e mont ant msur l e compt e en enr egi st r ant une opr at i on
oper at i ons[ nbop] = new Oper at i on( new Dat e( ) , l i eu, "ver sement ", m) ;
nbop++ ;
sol de += m;
Syst em. out . pr i nt l n( "ver sement de " + m+ " ef f ect ue") ;
Syst em. out . pr i nt l n( "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ") ;
}

voi d r et i r e( St r i ng l i eu, doubl e m) {
/ / per met de r et i r er l e mont ant mdu compt e en enr egi st r ant une opr at i on
i f ( sol de >= m) {
sol de - = m;
oper at i ons[ nbop] = new Oper at i on( new Dat e( ) , l i eu, "r et r ai t ", m) ;
nbop++ ;
Syst em. out . pr i nt l n( "r et r ai t de " + m+ " ef f ect ue") ;
}
el se {
Syst em. out . pr i nt l n( "r et r ai t de " + m+ " r ef use") ;
}
Syst em. out . pr i nt l n( "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ") ;
}
}

publ i c cl ass Ut i l Compt e2 {
publ i c st at i c voi d mai n( St r i ng[ ] ar gs) {
Per sonne p1 = new Per sonne( "Dur and", "Et i enne", "96 r ue d' Assas, 75006 Par i s",
"0144415665", "dur and@or ange. f r ") ;
Compt eBancai r e compt e1 = new Compt eBancai r e( p1, 300. 00) ; p1. consul t er ( ) ;

Per sonne p2 = new Per sonne( "Al ber t ", "Loui se", "12 pl ace du Pant hon, 75005
Par i s", "0144400000", "l oui se. al ber t @or ange. f r ") ;
Compt eBancai r e compt e2 = new Compt eBancai r e( p2, 500. 00) ; p2. consul t er ( ) ;

p1. ver ser ( "agence", 100. 00) ; p1. consul t er ( ) ;

p2. r et i r er ( "di st r i but eur A", 200. 00) ; p2. consul t er ( ) ;
}
}

Compilation : javac UtilCompte2.java (appel au compilateur) Attention la casse !!!
Gnration de quatre fichiers de pseudo-code (vrifier avec la commande dir).

Interprtation : java UtilCompte2 (appel linterprteur). Notez ci-dessous les rsultats affichs en face des
instructions correspondantes :

Instruction Affichage ou rsultat
Per sonne p1 = new Per sonne( "Dur and", "Et i enne", "96 r ue d' Assas,
75006 Par i s", "0144415665", "dur and@or ange. f r ") ;
Cration dun objet en mmoire
Compt eBancai r e compt e1 = new Compt eBancai r e( p1, 300. 00) ;
Cration dun objet en mmoire
p1. consul t er ( ) ;


Per sonne p2 = new Per sonne( "Al ber t ", "Loui se", "12 pl ace du
Pant hon, 75005 Par i s", "0144400000", "l oui se. al ber t @or ange. f r ") ;
Cration dun objet en mmoire
Compt eBancai r e compt e2 = new Compt eBancai r e( p2, 500. 00) ;
Cration dun objet en mmoire
p2. consul t er ( ) ;


p1. ver ser ( "agence", 100. 00) ;


p1. consul t er ( ) ;


p2. r et i r er ( "di st r i but eur A", 200. 00) ;

p2. consul t er ( ) ;



13
Les attributs et mthodes de classe
Dans la classe CompteBancaire, on souhaite disposer dun attribut nbcomptes contenant le nombre de comptes
effectivement ouverts. On le dclare prcd du mot static pour en faire un attribut dit de classe qui correspond
une variable globale pour la classe.

Attribut de classe :

Pour faire afficher un attribut de classe, il faut dfinir dans la classe CompteBancaire une mthode spcifique,
elle-mme dclare static : st at i c voi d af f i cheNombr eCompt es( )

Mthode de classe :

cl ass Compt eBancai r e {
static int nbcomptes = 0 ; / / un at t r i but de cl asse pour compt er l es compt es
pr i vat e i nt num; / / l es aut r es sont pr i vs
pr i vat e Per sonne t i t ul ai r e ;
pr i vat e doubl e sol de ;
pr i vat e Oper at i on oper at i ons[ ] ;
pr i vat e i nt nbop ;

/ / mt hode de cr at i on d' un Compt eBancai r e par une Per sonne p avec un mont ant i ni t i al m
Compt eBancai r e( Per sonne p, doubl e m) {
num= 1 ; / / numr o at t r i buer par l a banque
t i t ul ai r e = p ;
sol de = m;
oper at i ons = new Oper at i on[ 100] ; / / t abl eau pour l es opr at i ons f ut ur es
nbop = 0 ;
oper at i ons[ nbop] = new Oper at i on( new Dat e( ) , "agence", "ver sement ", m) ;
nbop++ ;
p. cpt = t hi s ; / / t hi s : l e compt e j ust e cr
nbcomptes++ ; // il y a un compte de plus : nbcomptes nbcomptes + 1
}

doubl e donneSol de( ) {
/ / per met de l i r e l e sol de
r et ur n sol de ;
}

voi d ver se( St r i ng l i eu, doubl e m) {
/ / per met de ver ser l e mont ant msur l e compt e en enr egi st r ant une opr at i on
oper at i ons[ nbop] = new Oper at i on( new Dat e( ) , l i eu, "ver sement ", m) ;
nbop++ ;
sol de += m;
Syst em. out . pr i nt l n( "ver sement de " + m+ " ef f ect ue") ;
Syst em. out . pr i nt l n( "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ") ;
}

voi d r et i r e( St r i ng l i eu, doubl e m) {
/ / per met de r et i r er l e mont ant mdu compt e en enr egi st r ant une opr at i on
i f ( sol de >= m) {
sol de - = m;
oper at i ons[ nbop] = new Oper at i on( new Dat e( ) , l i eu, "r et r ai t ", m) ;
nbop++ ;
Syst em. out . pr i nt l n( "r et r ai t de " + m+ " ef f ect ue") ;
}
el se {
Syst em. out . pr i nt l n( "r et r ai t de " + m+ " r ef use") ;
}
Syst em. out . pr i nt l n( "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ") ;
}

static void afficheNombreComptes() {
System.out.println("Il y a " + nbcomptes + " compte(s).");
System.out.println("------------------------------------");
}
}

Programme principal (phase 3)

On veut faire afficher le nombre de comptes plusieurs fois dans le programme principal :
14
publ i c cl ass Ut i l Compt e3 {

publ i c st at i c voi d mai n( St r i ng[ ] ar gs) {
CompteBancaire.afficheNombreComptes() ;

Per sonne p1 = new Per sonne( "Dur and", "Et i enne", "96 r ue d' Assas, 75006 Par i s",
"0144415665", "dur and@or ange. f r ") ;
Compt eBancai r e compt e1 = new Compt eBancai r e( p1, 300. 00) ; p1. consul t er ( ) ;

CompteBancaire.afficheNombreComptes() ;

Per sonne p2 = new Per sonne( "Al ber t ", "Loui se", "12 pl ace du Pant hon, 75005
Par i s", "0144400000", "l oui se. al ber t @or ange. f r ") ;
Compt eBancai r e compt e2 = new Compt eBancai r e( p2, 500. 00) ; p2. consul t er ( ) ;

CompteBancaire.afficheNombreComptes() ;

p1. ver ser ( "agence", 100. 00) ; p1. consul t er ( ) ;
p2. r et i r er ( "di st r i but eur A", 200. 00) ; p2. consul t er ( ) ;
}
}

Commentaires

Compt eBancai r e. af f i cheNombr eCompt es( ) :

Fichier complet

Le fichier complet comporte les quatre classes et doit porter le nom de la classe matre (celle qui contient la
mthode main) :

UtilCompte3.java
i mpor t j ava. ut i l . *;

cl ass Per sonne {
pr ot ect ed St r i ng nom; / / l i st e des at t r i but s
pr ot ect ed St r i ng pr enom;
pr ot ect ed St r i ng adr esse ;
pr ot ect ed St r i ng t el ;
pr ot ect ed St r i ng mai l ;
pr ot ect ed Compt eBancai r e cpt ; / / r f r ence ( adr esse mmoi r e) d un f ut ur compt e

/ / mt hode de cr at i on d' une per sonne ( l aquel l e n' a pas encor e de compt e bancai r e)
Per sonne( St r i ng no, St r i ng pn, St r i ng adr , St r i ng t l , St r i ng em) {
nom= no ;
pr enom= pn ;
adr esse = adr ;
t el = t l ;
mai l = em;
/ / pas de val eur donne encor e cpt , donc par df aut cpt = nul l
}

voi d consul t er ( ) {
/ / une per sonne consul t e son compt e
Syst em. out . pr i nt l n( "Ti t ul ai r e : "+ nom+ " " + pr enom) ;
Syst em. out . pr i nt l n( "Sol de : "+cpt . donneSol de( ) ) ;
Syst em. out . pr i nt l n( "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ") ;
}

voi d ver ser ( St r i ng l i eu, doubl e mont ant ) {
cpt . ver se( l i eu, mont ant ) ;
}
voi d r et i r er ( St r i ng l i eu, doubl e mont ant ) {
cpt . r et i r e( l i eu, mont ant ) ;
}
}


cl ass Oper at i on {
pr ot ect ed Dat e dat e ;
pr ot ect ed St r i ng l i eu ;
pr ot ect ed St r i ng nat ur e ;
pr i vat e doubl e mont ant ;
15
Oper at i on( Dat e d, St r i ng l , St r i ng n, doubl e m) {
dat e = d ;
l i eu = l ;
nat ur e = n ;
mont ant = m;
}
}

cl ass Compt eBancai r e {
st at i c i nt nbcompt es = 0 ; / / un at t r i but de cl asse pour compt er l es compt es
pr i vat e i nt num; / / l es aut r es sont pr i vs
pr i vat e Per sonne t i t ul ai r e ;
pr i vat e doubl e sol de ;
pr i vat e Oper at i on oper at i ons[ ] ;
pr i vat e i nt nbop ;

/ / mt hode de cr at i on d' un Compt eBancai r e par une Per sonne p avec un mont ant m
Compt eBancai r e( Per sonne p, doubl e m) {
num= 1 ; / / numr o at t r i buer par l a banque
t i t ul ai r e = p ;
sol de = m;
oper at i ons = new Oper at i on[ 100] ; / / t abl eau pour l es opr at i ons f ut ur es
nbop = 0 ;
oper at i ons[ nbop] = new Oper at i on( new Dat e( ) , "agence", "ver sement ", m) ;
nbop++ ;
p. cpt = t hi s ; / / t hi s : l e compt e j ust e cr
nbcompt es++ ; / / i l y a un compt e de pl us : nbcompt es nbcompt es + 1
}

doubl e donneSol de( ) {
/ / per met de l i r e l e sol de
r et ur n sol de ;
}

voi d ver se( St r i ng l i eu, doubl e m) {
/ / per met de ver ser l e mont ant msur l e compt e en enr egi st r ant une opr at i on
oper at i ons[ nbop] = new Oper at i on( new Dat e( ) , l i eu, "ver sement ", m) ;
nbop++ ;
sol de += m;
Syst em. out . pr i nt l n( "ver sement de " + m+ " ef f ect ue") ;
Syst em. out . pr i nt l n( "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ") ;
}

voi d r et i r e( St r i ng l i eu, doubl e m) {
/ / per met de r et i r er l e mont ant mdu compt e en enr egi st r ant une opr at i on
i f ( sol de >= m) {
sol de - = m;
oper at i ons[ nbop] = new Oper at i on( new Dat e( ) , l i eu, "r et r ai t ", m) ;
nbop++ ;
Syst em. out . pr i nt l n( "r et r ai t de " + m+ " ef f ect ue") ;
}
el se { Syst em. out . pr i nt l n( "r et r ai t de " + m+ " r ef use") ; }
Syst em. out . pr i nt l n( "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ") ;
}

st at i c voi d af f i cheNombr eCompt es( ) {
Syst em. out . pr i nt l n( "I l y a " + nbcompt es + " compt e( s) . ") ;
Syst em. out . pr i nt l n( "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ") ;
}
}

publ i c cl ass Ut i l Compt e3 {
publ i c st at i c voi d mai n( St r i ng[ ] ar gs) {
Compt eBancai r e. af f i cheNombr eCompt es( ) ;
Per sonne p1 = new Per sonne( "Dur and", "Et i enne", "96 r ue d' Assas, 75006 Par i s",
"0144415665", "dur and@or ange. f r ") ;
Compt eBancai r e compt e1 = new Compt eBancai r e( p1, 300. 00) ; p1. consul t er ( ) ;
Compt eBancai r e. af f i cheNombr eCompt es( ) ;
Per sonne p2 = new Per sonne( "Al ber t ", "Loui se", "12 pl ace du Pant hon, 75005
Par i s", "0144400000", "l oui se. al ber t @or ange. f r ") ;
Compt eBancai r e compt e2 = new Compt eBancai r e( p2, 500. 00) ; p2. consul t er ( ) ;
Compt eBancai r e. af f i cheNombr eCompt es( ) ;
p1. ver ser ( "agence", 100. 00) ; p1. consul t er ( ) ;
p2. r et i r er ( "di st r i but eur A", 200. 00) ; p2. consul t er ( ) ;
}
}
16
Compilation : javac UtilCompte3.java (appel au compilateur) Attention la casse !!!

Interprtation : java UtilCompte3 (appel linterprteur) donne le rsultat suivant :

Instruction Affichage ou rsultat
Compt eBancai r e. af f i cheNombr eCompt es( ) ;
Per sonne p1 = new Per sonne( "Dur and", "Et i enne", "96 r ue d' Assas,
75006 Par i s", "0144415665", "dur and@or ange. f r ") ;
Cration dun objet en mmoire
Compt eBancai r e compt e1 = new Compt eBancai r e( p1, 300. 00) ;
Cration dun objet en mmoire
p1. consul t er ( ) ;

Compt eBancai r e. af f i cheNombr eCompt es( ) ;
Per sonne p2 = new Per sonne( "Al ber t ", "Loui se", "12 pl ace du
Pant hon, 75005 Par i s", "0144400000",
"l oui se. al ber t @or ange. f r ") ;
Cration dun objet en mmoire
Compt eBancai r e compt e2 = new Compt eBancai r e( p2, 500. 00) ;
Cration dun objet en mmoire
p2. consul t er ( ) ;

Compt eBancai r e. af f i cheNombr eCompt es( ) ;
p1. ver ser ( "agence", 100. 00) ;

p1. consul t er ( ) ;

p2. r et i r er ( "di st r i but eur A", 200. 00) ;
p2. consul t er ( ) ;


Exercice
Dans le programme principal, crer une troisime personne, lui ouvrir un compte, effectuer plusieurs versements
et retraits. Enregistrer le fichier, le recompiler et lexcuter pour vrifier son bon fonctionnement.
Attributs et mthodes : bilan
Une classe dfinit des attributs et des comportements (appels des mthodes).

Une classe sert gnralement construire des objets (instances), mais ce nest pas obligatoire.
Exemple : la classe principale UtilCompte ne construit pas dobjet.

Tout attribut prcd du mot cl static est un attribut de classe. Il appartient la classe, mais pas aux objets
gnrs (il nexiste donc quen un seul exemplaire en mmoire). Seule une mthode de classe peut modifier un
attribut de classe.
Exemple : nbcomptes dans la classe CompteBancaire.

Tous les attributs non prcds du mot cl static sont des attributs dinstance. Ils sont rpliqus dans chaque
objet gnr.

Exemples : nom, prenom, adresse, tel, mail, cpt dans la classe Personne ; num, titulaire, solde,
operations, nbop dans la classe CompteBancaire ; date , lieu, nature, montant dans la classe
Operation.

Toute mthode prcde de static est une mthode de classe. Elle ne peut tre effectue que par la classe.

Exemples : main dans UtilCompte, afficheNombreComptes dans CompteBancaire.

Un constructeur est une mthode de classe, mme sil nest pas prcd de static. Il porte le nom de la classe et
na pas de type de retour. Cest la seule mthode permettant de construire des objets.

Exemple : les trois constructeurs des classes Personne, CompteBancaire et Operation.

Toute mthode non prcde de static est une mthode dinstance. Elle ne peut tre excute que par des objets
(instances).

Exemples : toutes les mthodes, sauf le main, les trois constructeurs et afficheNombreComptes.
17
Schma :

Tout objet gnr comporte tous les attributs
dinstance et peut effectuer chacune des mthodes
dinstance.

Il peut lire les attributs de classe (mais pas les
modifier).

Les structures de contrle
Le test if else
Il scrit :

if (test) {
instructions;
}
else {
instructions;
}
La clause else est facultative.
On peut avoir simplement :
i f ( t est ) {
i nst r uct i ons ;
}

Exemple : tester dans la classe CompteBancaire sil y a eu au moins une opration sur un CompteBancaire.
i f ( nbop > 0) {
Syst em. out . pr i nt l n( "au moi ns une oper at i on") ;
}

Les boucles
La boucle for
La boucle for permet de rpter un certain nombre de fois des instructions. Elle scrit :
for (initialisation; test_continuation; incrmentation) {instructions;}

Linitialisation permet de prciser la variable qui contrle la boucle et de linitialiser. Exemple : int i=0

Le test de continuation dit quel est le test qui doit tre vrifi pour que la boucle continue. Exemple : i <20

Lincrmentation prcise comment la variable doit voluer entre deux itrations. Gnralement on crit i++qui
veut dire i=i+1 (on passe de i i+1).

Exemple : lister dans la classe CompteBancaire les lieux o ont eu lieu les diverses oprations sur le
Comptebancaire.

i f ( nbop > 0) {
f or ( i nt i = 0; i < nbop; i ++) {
Syst em. out . pr i nt l n( "Oper at i on "+i +" : "+ oper at i ons[ i ] . l i eu) ;
}
}

Commentaires :

oper at i ons[ i ] :

oper at i ons[ i ] . l i eu : dans Operation, lieu est dclar protg : il est directement accessible par les autres
classes du mme fichier, dont la classe CompteBancaire.

La boucle while
La boucle while permet de rpter des instructions tant quun test est vrifi.

Elle scrit :

while (test) {
instructions ;
}
Les instructions doivent modifier au moins une
variable intervenant dans le test, pour que le while ne
boucle pas indfiniment.

18
Exemple : lister dans la classe CompteBancaire les lieux o ont eu lieu les diverses oprations sur le
Comptebancaire.

i nt i = 0 ;
whi l e ( i < nbop) {
Syst em. out . pr i nt l n( "Oper at i on "+i +" : "+ oper at i ons[ i ] . l i eu) ;
i ++ ;
}
La boucle do while
Elle permet de faire excuter au moins une fois des instructions puis de les rpter tant quun test est vrifi.

Elle scrit :

do {
instructions ;
}
while (test);
Ces instructions doivent modifier au moins une
variable du test, pour que le do while ne boucle
pas indfiniment.

Exemple : lister dans la classe CompteBancaire les lieux o ont eu lieu les oprations sur le CompteBancaire.

i f ( nbop > 0) {
i = 0 ;
do {
Syst em. out . pr i nt l n( "Oper at i on "+i +" : "+ oper at i ons[ i ] . l i eu) ;
i ++ ;
}
whi l e ( i < nbop) ;
}
Les sauts
Le break
Linstruction break permet de terminer un test, une boucle ou un bloc dinstructions en reprenant lexcution
directement aprs le test, la boucle ou le bloc (on saute donc tous les cas suivants).

Exemple : lister dans la classe CompteBancaire les lieux o ont eu lieu les diverses oprations sur le
Comptebancaire.

f or ( i nt i = 0; i < 100 ; i ++) {
i f ( i == nbop) {
br eak ;
}
el se {
Syst em. out . pr i nt l n( "Oper at i on "+i +" : "+ oper at i ons[ i ] . l i eu) ;
}
}
Commentaire :

== :
Le continue
Linstruction continue permet de sortir dun pas ditration en reprenant lexcution litration suivante. On
arrte donc les instructions de litration en cours pour passer la suivante.

Exemple : lister dans la classe CompteBancaire les lieux o ont eu lieu les diverses oprations sur le
Comptebancaire, sauf la premire (ouverture du compte).

i f ( nbop > 0) {
f or ( i nt i = 0; i < nbop; i ++) {
i f ( i ==0) cont i nue ;
Syst em. out . pr i nt l n( "Oper at i on "+i +" : "+ oper at i ons[ i ] . l i eu) ;
}
}
Le return
Linstruction return permet de sortir dune mthode sans ncessairement attendre la fin de celle-ci. Cette
instruction ne peut donc pas figurer directement dans la mthode main.
19
Exemple : dans une mthode, chercher le premier lieu diffrent de lagence o a lieu une opration :
i f ( nbop > 0) {
f or ( i nt i = 0; i < nbop; i ++) {
i f ( ! oper at i ons[ i ] . l i eu. equal sI gnor eCase( "agence") )
r et ur n oper at i ons[ i ] . l i eu ;
}
}

Commentaires :

! :

equal sI gnor eCase :

Exercices
Complter le fichier UtilCompte.java de telle sorte quune Personne dispose de mthodes :
o lui permettant de lister les lieux et les natures (retrait ou versement) de ses oprations. Exemple :
Oper at i on 0 : ver sement l i eu : agence
Oper at i on 1 : r et r ai t l i eu : di st r i but eur A

o lui permettant de lister lensemble de ses oprations. Exemple :
Oper at i on 0 : ver sement de 500. 0 l i eu : agence
Oper at i on 1 : r et r ai t de 200. 0 l i eu : di st r i but eur A

o lui permettant de lister ses oprations dun montant suprieur un montant m donn.

Tester ces mthodes en compltant le programme principal.
Hritage et pol ymorphisme
Hritage
Une classe peut driver dune autre classe :
cl ass f i l l e extends mer e {
. . .
}
cela tablit une relation hirarchique entre classes.

La classe anctre de toutes les classes est la classe Object. Si aucune relation dhritage nest prcise dans la
dfinition dune classe, la classe drive automatiquement dObject.

Toute classe (sauf Object) hrite des proprits (attributs, mthodes) des classes suprieures (appeles super-
classes) et y ajoute ses propres attributs et mthodes ; do lusage du mot extends pour tendre la classe mre.
Une classe peut ainsi tre dfinie approximativement et tre affine ensuite dans des sous-classes plus prcises.

Exemple :
Une classe Compt eBancai r e peut avoir comme sous-classes les classes Compt eATer me et
Compt eLi vr et .
Les sous-classes auront chacune un attribut taux que la classe Compt eBancai r e na pas et la classe
Compt eATer me aura une gestion du temps que la classe Compt eLi vr et naura pas.
Pol ymorphisme
Le polymorphisme dcoule de l'hritage : une mme mthode peut se comporter diffremment selon la classe
dans laquelle elle est excute.

Cest un mcanisme qui permet une sous-classe de redfinir une mthode dont elle a hrit tout en lui
conservant la mme signature (mme nom, mmes arguments, mme valeur de retour).

On peut alors avoir, dans une classe mre et ses sous-classes, une mthode de mme signature avec des codes
diffrents. Lappel la mthode dclenchera des traitements diffrents selon la classe de lobjet qui lexcute.

20
Exemple :
Un Compt eBancai r e peut avoir une mthode voi d af f i che( ) qui affiche le titulaire et le solde. Un
Compt eLi vr et pourra avoir une mthode voi d af f i che( ) qui affiche en plus un taux, et un Compt eATer me aura
lui aussi une mthode voi d af f i che( ) qui affichera en outre les dates du placement.

La mthode voi d af f i che( ) a toujours la mme signature, avec des corps diffrents polymorphisme.

Si on a une instruction cpt . af f i che( ) , alors :

o si cpt est une instance de Compt eBancai r e, la premire mthode sexcutera
o si cpt est une instance de Compt eLi vr et , la deuxime mthode sexcutera
o si cpt est une instance de Compt eATer me, la troisime mthode sexcutera.
Les paquetages
Les paquetages (packages) sont des librairies de classes, dinterfaces et de classes dexceptions regroupes
selon leur fonction. Ils sont fournis en mme temps que le compilateur javac et linterprteur java.

Principaux paquetages : java.lang, java.util, java.awt, java.awt.event.

o java.lang : classes fournissant les lments de base du langage
o java.util : classes utilitaires
o java.awt : classes graphiques
o java.awt.event : classes grant les vnements sur les composants graphiques

La documentation concernant chaque paquetage est disponible sous forme de pages HTML (ici, dans le dossier
C:\sun\appserver\docs\doc\docs\.

Choisir la page index.html puis cliquer sur le lien intitul : Java 2 Platform API Specification).

Lorsquon slectionne un paquetage, on obtient la liste des classes, des interfaces et des classes dexceptions
qui composent ce paquetage.
Les classes
Si lon choisit une classe dans la liste des classes dun paquetage, on obtient ses relations dhritage ainsi que
son descriptif (voir lexemple de la classe Doubl e page 21).

Lorsque lon clique sur un lien, on obtient des dtails sur llment concern (dans lordre, attribut de classe,
constructeur, mthode de classe ou dinstance).
Les interfaces
Une interface est une sorte de classe spciale, dont toutes les mthodes sont sans code. En fait, une interface
propose des services.

Exemple : Wi ndowLi st ener va surveiller ce qui se passe sur la fentre dune application graphique.

Si on choisit une interface dans la liste des interfaces dun paquetage, on obtient ses relations dhritage ainsi
que son descriptif (voir les interfaces Wi ndowLi st ener et Act i onLi st ener page 22).

Une classe qui souhaite exploiter les services dune interface le signale par le mot implements :
cl ass B i mpl ement s C {. . . } ;

On dit alors quelle implmente linterface. Dans la classe B, on doit alors donner le code de toutes les
mthodes de linterface.

21
Une classe B ne peut hriter que dune seule classe A, mais elle peut implmenter

une ou plusieurs interfaces :
cl ass B ext ends A i mpl ement s C, D {. . . } ;

class A interface C, D
extends implements
class B

Les mthodes des interfaces C et D doivent alors obligatoirement tre dfinies dans la classe B.



Descriptif de la classe Double du paquetage java.lang
22


Descriptif de linterface WindowListener du paquetage java.awt.event



Descriptif de linterface ActionListener du paquetage java.awt.event
23
Les classes dexception
Une exception est un objet, instance dune des sous-classes de la classe Exception traitant des erreurs.
Lorsquune mthode est excute, il peut se produire des erreurs. On dit alors quune Exception est leve.

Si on choisit une classe dexception dans la liste des classes dexception dun paquetage, on obtient ses relations
dhritage ainsi que son descriptif (voir lexemple de la classe Number For mat Except i on ci-dessous).



Descriptif de la classeNumberFormatException du paquetage java.lang

Chaque mthode qui risque de provoquer une ou des erreur(s) le signale par le mot throws suivi de la nature des
erreurs susceptibles de se produire.

Exemple : dans la classe FilterInputStream, une mthode de lecture dun fichier est dclare sous la forme :
publ i c i nt r ead( ) t hr ows I OExcept i on. Le mot cl t hr ows signale que cette mthode de lecture peut
provoquer une erreur I OExcept i on, erreur dentre-sortie (si le fichier est manquant par exemple).

Lorsquon a besoin dutiliser une mthode risquant de provoquer des erreurs :
o on englobe lappel cette mthode dans un bloc try (pour capturer lerreur)
o on prcise ce quon fera en cas derreur dans une clause catch (pour traiter lerreur).

Exemple :
t r y {
f i chi er . r ead( ) ;
}
cat ch ( I OExcept i on) {
Syst em. out . pr i nt l n( " er r eur de l ect ur e ") ;
r et ur n ;
}
24
Le paquetage java.lang
java.lang =java.language

Le paquetage java.lang est le seul paquetage dont lemploi ne doit jamais tre dclar.

Il comprend notamment la classe Object lorigine de toutes les classes, la classe System, les classes
enveloppantes, la classe Math et la classe String (classe des chanes de caractres).

La classe System contient des variables et des mthodes du systme. Quand on crit Syst em. out . pr i nt l n( . . . ) ,
on fait appel lattribut de classe out de la classe System.

Les variables des types de donnes primitifs (int, double, boolean, etc.) sont les seuls lments qui ne sont pas
des objets en java.

Mais on peut crer des objets partir de ces types primitifs laide des classes enveloppantes (Integer, Double,
Boolean, etc.).

Exemples :
i nt n = 5 ; / / n n est pas un obj et
I nt eger obj 1 = new I nt eger ( n) ; / / obj 1 est un obj et
doubl e f = 0. 33 ; / / f n est pas un obj et
Doubl e obj 2 = new Doubl e( f ) ; / / obj 2 est un obj et
bool ean f i ni = f al se ; / / f i ni n est pas un obj et
Bool ean t er mi ne = new Bool ean( f i ni ) ; / / t er mi ne est un obj et

Dans certains cas, on ne peut en effet sauvegarder que des objets. Le passage par les classes enveloppantes est
alors impratif.

La classe Math contient toutes les mthodes ncessaires pour effectuer tous les calculs mathmatiques. Ce sont
toutes des mthodes de classe. On effectue donc lappel une mthode par une instruction :
Mat h. mt hode( ar gument s)

Exemples :
doubl e j = - 3. 145 ; doubl e k = Mat h. abs( j ) ;
doubl e l = Mat h. pow( j , k) ; doubl e m= Mat h. sqr t ( l ) ;

La classe String contient un grand nombre de constructeurs permettant de construire des chanes de caractres
partir dentiers, de double, etc. et de trs nombreuses mthodes pour le traitement des chanes de caractres

Exercice

Consulter la page de documentation concernant la classe String de java.lang puis rpondez aux questions
suivantes :

o De combien de constructeurs cette classe dispose-t-elle ?

o Quelle est la diffrence entre eux ?


o Quelle est la mthode permettant de trouver la longueur dune chane ?

Si s est une chane de caractres,

o qucrit-on pour rcuprer dans un entier lg la longueur de s ?

o qucrit-on pour tester si s est gale une autre chane de caractres t ?

o si s="Aujourdhui" et t=" nous sommes lundi", comment obtient-on "Aujourdhui nous sommes lundi" ?

25
Les autres paquetages
Le paquetage java.util contient des classes utilitaires, notamment Calendar et GregorianCalendar pour les
dates, Random : pour les nombres alatoires.

Les paquetages java.awt et java.awt.event permettent de crer des composants graphiques et de grer les
vnements sur ces composants.

Pour utiliser une partie dun paquetage autre que java.lang, on utilise le mot-cl import :

Exemples

i mpor t j ava. ut i l . Gr egor i anCal endar ;
on se donne le droit dutiliser la classe GregorianCalendar qui permet de crer des objets de type date

i mpor t j ava. ut i l . Random;
on se donne le droit dutiliser la classe Random

i mpor t j ava. ut i l . * ;
on se donne le droit dutiliser toutes les classes de java.util.

Exercice

Consulter la page de documentation concernant la classe Random de java.util puis rpondez aux questions
suivantes :

o De combien de constructeurs cette classe dispose-t-elle ?

o Quelle est la diffrence entre eux ?


Si r est un objet de la classe Random (cr par linstruction r = new Random( ) par exemple)

o qucrit-on pour rcuprer dans un entier n un entier alatoire compris entre 0 et 100 ?

o qucrit-on pour rcuprer dans un flottant f un nombre rel flottant compris entre 0 et 1 ?

Modes de protection des attributs
Les attributs dune classe (quils soient dinstance ou de classe) peuvent tre dclars private, public, protected
ou ne pas tre prcds de dclaration de protection.

Exemple :
cl ass Tr uc {
pr i vat e i nt a ;
pr ot ect ed i nt b ;
publ i c i nt c ;
i nt d ;
}

Dclaration private

Les attributs et mthodes dclars private ne sont accessibles qu lintrieur de leur propre classe
a ne sera donc accessible quaux mthodes de la classe Truc

Exemple : le solde dun compte dans CompteBancaire, qui ne peut tre lu par aucune autre classe. Pour y
accder, il faut obligatoirement passer par une des mthodes dfinies dans la classe CompteBancaire.

26
Dclaration protected

Les attributs et mthodes dclars protected ne sont accessibles quaux sous-classes (quelles soient dans le
mme paquetage ou pas) et aux classes du mme paquetage
b sera donc accessible aux sous-classes de Truc et aux classes du mme paquetage que Truc

Exemple : les attributs dune Personne qui doivent pouvoir tre lus partir dun CompteBancaire, afin de
retrouver le nom du titulaire du compte.

Dclaration public

Les attributs et mthodes dclars public sont toujours accessibles
c sera accessible de toute classe

A viter, car tout le monde peut accder ces attributs et modifier leur contenu.

Sans dclaration

Les attributs et mthodes sans aucune dclaration de protection sont accessibles par toutes les classes du
mme paquetage. Cest le
d sera donc accessible par toutes les classes du mme paquetage que Truc.
mode de protection par dfaut

Cest un mode de protection un peu plus strict que le mode protected, puisque les sous-classes situes dans
dautres paquetages ne peuvent plus accder ces attributs.

Pratiquement, on utilise la plupart du temps le mode protected qui offre une protection correcte.

Vous aimerez peut-être aussi