Académique Documents
Professionnel Documents
Culture Documents
______________________________________________________________________________
1
SOMMAIRE
_____________________________________________________________________________________________________
Mme A. BENOMAR 2
Chapitre 1 GENERALITES SUR LE LANGAGE JAVA
_____________________________________________________________________________________________________
Mme A. BENOMAR 3
Chapitre 1 INTRODUCTION A JAVA
La classe : Abstraction dun ensemble dobjets qui ont les mmes caractristiques
( attributs) et les mmes comportements ( mthodes)
Exemple :
Une classe de nom Individu
Attributs : numeroCin, nom, prenom, dateNaissance, adresse
Mthodes : changeAdresse(), calculSalaire(),dateRetraite()..
Objets : Mohammed, Nadia,
_____________________________________________________________________________________________________
Mme A. BENOMAR 4
1 2 Lencapsulation des donnes :
- Les donnes sont protges lintrieur de chaque objet.
- Les donnes (publiques ,secrtes)
1- 3 LHritage
1- 4 Le Polymorphisme
Le polymorphisme permet la redfinition dune mthode
1 - 5 Le Multithreading
THREADS : processus qui sexcutent simultanment lintrieur dun
unique programme
_____________________________________________________________________________________________________
Mme A. BENOMAR 5
2-NAISSANCE ET DEVELOPPEMENT DE JAVA
2- 1 Caractristiques de JAVA
_____________________________________________________________________________________________________
Mme A. BENOMAR 6
2- NAISSANCE ET DEVELOPPEMENT DE JAVA
2- 1 Caractristiques de JAVA
2- 2 Historique de JAVA
_____________________________________________________________________________________________________
Mme A. BENOMAR 8
2- NAISSANCE ET DEVELOPPEMENT DE JAVA
2- 2 Historique de JAVA
_____________________________________________________________________________________________________
Mme A. BENOMAR 9
3- ENVIRONNEMENT DE JAVA
_____________________________________________________________________________________________________
Mme A. BENOMAR 11
3- ENVIRONNEMENT DE JAVA
3- 2 Versions de Java
Depuis sa version 1.2, Java a t renomm Java 2. Les
numros de version 1.2 et 2 dsignent donc la mme version. Le JDK
a t renomm J2SDK (Java 2 Software Development Kit) mais la
dnomination JDK reste encore largement utilise, tel point que la
dnomination JDK est reprise dans la version 5.0.
En outre, Java 2 dsigne les versions de J2SE 1.2 J2SE 1.4
La version actuelle est Java SE 6 alors que la version Java SE 7 est
en cours de dveloppement (sera fini au cours de 2010)
Compatibilit de version
Java assure une compatibilit binaire ascendante (les programmes
compils avec une ancienne version peuvent s'excuter avec une
plate-forme plus rcente).
_____________________________________________________________________________________________________
Mme A. BENOMAR 12
3- ENVIRONNEMENT DE JAVA
- un programme java est excute sur tout ordinateur pour lequel une
machine virtuelle est disponible.
Java nom_fich
Les fichiers .jar sont des fichiers java compresss comme les
fichiers .zip selon un algorithme particulier devenu un standard de fait
dans le monde des PC.
Ils sont parfois appels fichiers d'archives ou, plus simplement,
archives.
Ces fichiers sont produits par des outils comme jar.exe. ( qui fait
partie du jdk) .
Les fichiers .jar peuvent contenir une multitude de fichiers
compresss avec l'indication de leur chemin d'accs.
Un fichier .jar peut ainsi tre excut directement dans tout
environnement possdant une machine virtuelle
_____________________________________________________________________________________________________
Mme A. BENOMAR 16
4- LES PAQUETAGES (les packages)
* Organisation hirarchique des classes en packages
* Regrouper plusieurs classes qui collaborent entre elles dans une
application
* Dfinir un certain niveau de protection
4- 1 Construction de package
- Pour ranger une classe dans un package, il faut insrer la ligne suivante
au dbut du fichier source:
package nomDuPaquetage ;
- Un paquetage qui doit contenir des classes et donc des fichiers est un
rpertoire. le paquetage a le mme nom que le rpertoire qui le contient.
Exemples :
Java.lang.Math
Java.lang.System
Java.lang.String
4- 3 API de JAVA
_____________________________________________________________________________________________________
Mme A. BENOMAR 19
5 - LES CLASSES JAVA
* len-tte
* le corps
_____________________________________________________________________________________________________
Mme A. BENOMAR 20
5- LES CLASSES JAVA
Modificateur Dfinition
public La classe est accessible par toutes les autres
classes des autres packages. Elle est visible
partout
_____________________________________________________________________________________________________
Mme A. BENOMAR 22
5 - 3 Conventions dcriture en JAVA
_____________________________________________________________________________________________________
Mme A. BENOMAR 23
5- 4 Un premier exemple
public class Premier
{
public static void main (String[ ] arg)
{
System.out.println( bravo) ;
}
}
public : visible de partout , y compris des autres paquetages
_____________________________________________________________________________________________________
Mme A. BENOMAR 24
5- 4 Un premier exemple
_____________________________________________________________________________________________________
Mme A. BENOMAR 25
6- UTILISATION DES CLASSES
Pour utiliser une classe, elle doit tre instancie . Il y aura alors cration dun objet.
Mais avant de crer un objet , il faut le dclarer
NomClasse objet ;
7 - 1 Dfinition
_____________________________________________________________________________________________________
Mme A. BENOMAR 29
Exemple dutilisation de constructeur
Employe_this(String nom)
{
this.nom=nom; // variable globale de la classe = variable locale
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 32
7 2 La variable this
float salaireh ()
{ float s;
s=(taux_h*nb_h);
return s;
}
public static void main(String[] arg)
{ float s1,s2;
Employe_this emp1,emp2;
emp1=new Employe_this (" Mohammed");
emp2=new Employe_this ("Nadia");
emp1.nb_h= 35; // le nombre dheures de lemploy 1
emp2.nb_h=38 ; // le nombre dheures de lemploy 2
s1=emp1.salaireh();
s2=emp2.salaireh();
System.out.println("Le salaire de "+ emp1.nom+" est"+s1+" dh");
System.out.println("Le salaire de "+ emp2.nom+" est"+s2+" dh");
} // fin de main
} // fin de la classe
_____________________________________________________________________________________________________
Mme A. BENOMAR 33
8- UTILISATION DES ARGUMENTS DE MAIN
Les arguments de la mthodes main permettent de rcuprer des
chanes de caractres fournies depuis la ligne de commande
Exemple 1 dutilisation des arguments de main : Les noms des
employs sont considrs des arguments de la mthode main
_____________________________________________________________________________________________________
Mme A. BENOMAR 36
8- UTILISATION DES ARGUMENTS DE MAIN
public static void main(String[] arg)
{ float s1,s2;
Arguments_entiers emp1,emp2;
emp1=new Arguments_entiers();
emp2=new Arguments_entiers();
emp1.nom=arg[0];
emp1.nb_h= Integer.parseInt(arg[1]);
emp2.nom=arg[2];
emp2.nb_h= Integer.parseInt(arg[3]);
s1=emp1.salaireh();
s2=emp2.salaireh();
System.out.println("Le salaire de "+ emp1.nom+" est "+s1+" dh");
System.out.println("Le salaire de "+ emp2.nom+" est "+s2+" dh");
} // fin de main
} // fin de la classe
il faut excuter cette classe en donnant 2 chanes de caractres pour
les noms des 2 employs et leurs nombres dheures travailles
Exemple dexcution : java Arguments_entier Ali 30 Sanae 28
_____________________________________________________________________________________________________
Mme A. BENOMAR 37
Chapitre 2 LES OUTILS ELEMENTAIRES
POUR LA PROGRAMMATION JAVA
1- COMMENTAIRES EN JAVA
2- TYPES ELEMENTAIRES EN JAVA
3- LES PROPRIETES DES ATTRIBUTS
4- LES STRUCTURES DE CONTROLES
5- LES PROPRIETES DES METHODES
6- LES TABLEAUX
7- LA SAISIE AU CLAVIER
8- LES CHAINES DE CARACTERES
9 LES OPERATIONS SUR LES OBJETS
_____________________________________________________________________________________________________
Mme A. BENOMAR 38
Chapitre 2 TECHNIQUES DE BASE DE
LA PROGRAMMATION JAVA
11 - Commentaires en java
_____________________________________________________________________________________________________
Mme A. BENOMAR 39
Chapitre 2 TECHNIQUES DE BASE DE
LA PROGRAMMATION JAVA
2 Types lmentaires en java
JAVA dispose des 8 types lmentaires suivants, ces types
sont appels primitives en java :
_____________________________________________________________________________________________________
Mme A. BENOMAR 40
Chapitre 2 TECHNIQUES DE BASE DE
LA PROGRAMMATION JAVA
_____________________________________________________________________________________________________
Mme A. BENOMAR 41
Java dispose galement des classes suivantes pour grer ces primitives :
Classe Primitive
______________________________
Character char
Byte byte
Short short
Integer int
Long long
Float float
Double double
Boolean boolean
_____________________________________________________________________________________________________
Mme A. BENOMAR 42
3- LES PROPRIETES DES ATTRIBUTS
3 - 1 Dclaration
Tous les objets dune mme classe ont les mmes attributs,
mais chaque objet associe ces attributs des valeurs qui lui sont
propres.
Avant dutiliser un attribut, il doit tre dclare comme suit :
_____________________________________________________________________________________________________
Mme A. BENOMAR 43
3- LES PROPRIETES DES ATTRIBUTS
3 - 1 Dclaration
Modificateur Dfinition
_____________________________________________________________________________________________________
Mme A. BENOMAR 44
33-2 Identificateurs
A Chaque objet , classe, programme ou variable est associ un identificateur. Les
identificateurs Java sont forms d'un nombre quelconque de caractres. Ils doivent
respecter les rgles suivantes :
- Les majuscules et les minuscules sont distingues.
- Le premier caractre ne doit pas tre un chiffre
- L identificateur ne doit pas tre un mot cl de Java.
En plus des rgles ci-dessus, il est conseill de respecter les directives
suivantes :
_ - Evitez les caractres accentus dans les noms de classes.
- - Evitez de donner le mme nom des identificateurs d'lments diffrents
_____________________________________________________________________________________________________
Mme A. BENOMAR 45
3-3 Mots cl de java
_____________________________________________________________________________________________________
Mme A. BENOMAR 46
3 - 4 Les attributs statiques
_____________________________________________________________________________________________________
Mme A. BENOMAR 47
Exemple1 : attribut statique
class Statique
{
int nons;
static int s;
}
public class UtiliseStatic
{
public static void main (String[] arg)
{
Statique.s=10;
Statique obj1= new Statique();
obj1.nons=20;
Statique obj2= new Statique();
obj2.nons=30;
obj2.s=15;//Pour tous ,les objets s=15
System.out.println(Statique.s); //15
System.out.println(obj1.s); //15
System.out.println(obj1.nons); //20
System.out.println(obj2.nons); //30
}
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 48
Exemple2 : Calcul des moyennes des lves ainsi que la
moyenne de la classe
class Moyenne
{ static int nb_eleves ; // nombre dlves
float note1,note2,note3; // notes des lves
int num; // numro de l'lve
String nom; // nom de l'lve
static float moyenne_classe;
float moyenne_eleve()
{ return ((note1+note2+note3) /3);
}
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 49
Exemple2 : Calcul des moyennes des lves ainsi que la moyenne de
la classe
_____________________________________________________________________________________________________
Mme A. BENOMAR 51
-3-5 Les oprateurs de java
* Multiplication
/ division
% modulo
+ addition
- soustraction
= affectation
== identit
!= diffrent de
&& et logique
|| ou logique
++ incrmentation
+= - = *= /=
_____________________________________________________________________________________________________
Mme A. BENOMAR 52
3-6 Les initialiseurs
_____________________________________________________________________________________________________
Mme A. BENOMAR 53
Exemple :
class Initialiseur
{
int a1; static int a2;
void m1()
{ int a3;
System.out.println(a3) ; //erreur car a3 non initialise
}
public static void main(String[] arg)
{ System.out.println("a2="+a2);
Initialiseur obj= new Initialiseur();
System.out.println("obj.a1="+obj.a1);
obj.m1();
}
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 54
Pour des initialisations plus complexes, on peut utiliser un
bloc plac lextrieur de toute mthode ou constructeur
Par exemple, float e
{
if (b != 0 )
{ e = (float) a /b ; }
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 55
3-7 Les attributs constants
class Constantes
{
final int C ; /* dclare une constante dinstance qui peut tre
initialise dans le constructeur */
On obtient lexcution :
2
100
_____________________________________________________________________________________________________
Mme A. BENOMAR 58
4- Les structures de contrle
a Linstruction if
if (expression)
InstructionSiVrai ;
else
InstructionSiFaux
b- Loprateur ?
condition ? siVrai : siFaux
Exemple : int a, b ;
int min = a<b ? a : b
_____________________________________________________________________________________________________
Mme A. BENOMAR 59
c- Linstruction switch
switch (variable)
{ case cas1 : instruc11 ;
instruc12 ;
.
break ;
case cas2 : instruc21 ;
instruc22 ;
.
break ;
.
default : instrDefault ;
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 60
Les instructions de rptition
a Linstruction while
while (condition)
instruction ;
b Linstruction do
do
instr ;
while (condition)
c Linstruction for
for ( initialisation, ; test ; incrementation)
_____________________________________________________________________________________________________
Mme A. BENOMAR 61
5- Les proprits des mthodes
les mthodes sont les fonctions quon peut appliquer aux objets.
Elles permettent de changer ltat des objets ou de calculer des valeurs
Plusieurs mthodes dune mme classe peuvent avoir le mme
nom, mais des paramtres diffrents ( surcharge) .
Le nom et le type des paramtres constituent la signature de la
mthode. Une mthode peut elle aussi possder des modificateurs.
_____________________________________________________________________________________________________
Mme A. BENOMAR 62
Modificateur Dfinition
NomClasse.nomMethodeStatique(arguments)
nomObjet.nomMethodeStatique(arguments)
_____________________________________________________________________________________________________
Mme A. BENOMAR 65
EXEMPLE
class Surcharge
{ int n ;
double x ;
Surcharge( )
{
n=1;
x = 3.5 ;}
Surcharge(int n, double x)
{
this.n = n ;
this.x = x ;
}
int operation(int p)
{ return 10*p +n ; }
double operation (double y , int p)
{ return x*p + y ; }
double operation(int p, double y )
{ return (double) n/p + y ;}
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 66
public class EssaiSurcharge
{
public static void main (String[] arg)
{
Surcharge surcharge ;
surcharge = new Surcharge( ) ;
System.out.println (surcharge.operation (2)) ;
System.out.println (surcharge.operation (1.5 , 4)) ;
System.out.println (surcharge.operation (4 , 1.5)) ;
surcharge = new Surcharge(7 , 2.0) ;
System.out.println (surcharge.operation (2)) ;
}
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 67
remarque :
si on ajoute linstruction : (surcharge.operation (4 , 5)) ; il
yaura erreur de compilation car ambiguit .Par contre sil
ny avait pas de surcharge (une seule mthode double
operation (double y , int p) ) cette mme instruction ne
gnerera pas derreur car transtypage automatique
_____________________________________________________________________________________________________
Mme A. BENOMAR 68
6 Les tableaux 69
Les tableaux en java sont des structures pouvant contenir un nombre fixe d lments de
mme nature. Chaque lment est accessible grce un indice correspondant sa position dans
le tableau.
Les tableaux doivent tre dclars comme tous les objets. Java dispose de deux syntaxes
quivalentes pour la dclaration des tableaux,
type_elements[ ] tableau;
ou
type_elements tableau[ ] ;
Comme tout objet java un tableau doit tre cre aprs sa dclaration. Les tableaux java sont
de taille fixe.La cration doit indiquer leur taille. La syntaxe utiliser est la suivante :
x = new type[ dimension];
dimension est le nombre d'lments que le tableau pourra contenir.
_____________________________________________________________________________________________________
Mme A. BENOMAR 69
Exemple :
class TableauA
{ public static void main(String[] arg)
{
int[] tableau ;
tableau = new int[2];
tableau[0]=-5;
tableau[1]= 8
for(int i=0 ;i<2 ;i++)
System.out.println(tableau[i]);
}
}
Autre faon de dfinir un tableau : On peut dfinir un tableau avec un
tableau littral au moment de sa dclaration.
class TableauB
{public static void main(String[ ] argv)
{ int tableau[ ]=new int[3];
System.out.println(Taille du tableau : + tableau.length) ;
} // affichera 3
}
class TableauD
{
public static void main(String[] argv)
{ Integer tableau[] = new Integer[4] ; //un tableau de 4 objets
int somme = 0 ;
for (int i=0 ; i<tableau.length ; i++)
tableau[i]= new Integer(i) ;
for (int i=0 ; i<tableau.length ; i++)
somme+=tableau[i].intValue() ; //intValue retourne lattribut i
System.out.println( La somme des entiers est +somme) ;
}
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 72
6-5 Tableau multidimensionnel :
_____________________________________________________________________________________________________
Mme A. BENOMAR 73
7- La saisie au clavier
_____________________________________________________________________________________________________
Mme A. BENOMAR 76
8- LES CHAINES DE CARACTERES
_____________________________________________________________________________________________________
Mme A. BENOMAR 77
- Les Comparaisons de chanes de caractres
int compareTo(Object o) Compare une chane de caractre un autre objet.
Renvoie une valeur <0 ==0 ou > 0
_____________________________________________________________________________________________________
Mme A. BENOMAR 79
- Les Conversions
_____________________________________________________________________________________________________
Mme A. BENOMAR 80
- La recherche dans une chane de caractre
_____________________________________________________________________________________________________
Mme A. BENOMAR 81
Exemple :
public class Chaine1
{ String ch1="langage" ;
String ch2= " java" ;
String ch3=ch1+ch2;
void affiche_longueur()
{ System.out.println(ch1+" a pour longueur " + ch1.length());
System.out.println(ch2+" a pour longueur " + ch2.length());
System.out.println(ch3+" a pour longueur " + ch3.length());
}
void affiche_caractere(String ch)
{ for(int i = 0;i<ch.length();i++)
System.out.println(ch+" l'indice "+i+" = "+ch.charAt(i));
}
public static void main(String[] arg)
{ Chaine1 obj = new Chaine1();
obj.affiche_longueur();
obj.affiche_caractere(obj.ch3);
}
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 82
8-2 Les chanes de caractres de type StringBuffer
_____________________________________________________________________________________________________
Mme A. BENOMAR 83
- Les Constructeurs de la classe StringBuffer
_____________________________________________________________________________________________________
Mme A. BENOMAR 85
- Caractre et sous-chane.
- Conversion
String toString() Retourne une chane gale la chane
- Modifications
StringBuffer delete(int start, int end) Enlve tous les caractres compris entre start et
end.
StringBuffer deleteCharAt(int index) Enlve le caractre lindice index
_____________________________________________________________________________________________________
Mme A. BENOMAR 86
8-2 Les chanes de caractres de type StringBuffer
Exemple : utilisation de la longueur et de la capacit
public class Chaine2
{static StringBuffer stb1,stb2;
public static void main(String[ ] arg)
{ stb1=new StringBuffer();
stb2=new StringBuffer(10);
System.out.println("stb1 a pour longueur "+stb1.length()); //0
System.out.println("stb1 a pour capacit "+stb1.capacity()); //16
System.out.println("stb2 a pour longueur "+stb2.length()); //0
System.out.println("stb2 a pour capacit "+stb2.capacity()); //10
stb1=new StringBuffer("Chaine");
System.out.println("stb1 a pour longueur "+stb1.length()); //6
System.out.println(stb1+ " pour capacit "+stb1.capacity()); //22=16+6
stb1.append(" StringBuffer");
System.out.println(stb1+" a pour longueur "+stb1.length());//19
System.out.println(stb1+" a pour capacit"+stb1.capacity()); //22
stb1.setLength(3);
System.out.println(stb1+" a pour longueur "+stb1.length()); //3
System.out.println(stb1+" a pour capacit"+stb1.capacity());//22
} }
_____________________________________________________________________________________________________
Mme A. BENOMAR 87
9 OPERATIONS SUR LES OBJETS
9 1 Laffectation =
ObjetA = ObjetB ObjetA dsigne le mme objet que ObjetB, cest
la copie de rfrence
Toute modification effectu sur lobjet rfrence par objetA sera
rpercut sur lobjet rfrence par objetB et vice versa.
Exemple:
class Copie
{
public static void main(String[] argv)
{
int[ ] tableau = {1,2};
int[ ] table ;
table = tableau;
table[0] =7;
System.out.println(tableau contient: + tableau[0] +tableau
[1]);
/* tableau[0]=7 et tableau[1]=2 */
_____________________________________________________________________________________________________
} A. BENOMAR
Mme 88
}
9 2 Egalit entre objets
5 LES INTERFACES
1 1 Dfinition de lhritage
_____________________________________________________________________________________________________
Mme A. BENOMAR 92
1- 2 Dclaration de lhritage
_____________________________________________________________________________________________________
Mme A. BENOMAR 93
1-3 Proprits de lhritage
-En java, lhritage est simple, toute classe ne peut hriter que
dune et une seule classe. Si une classe nhrite daucune autre
classe, elle hrite par dfaut de la super classe Object dfinie dans
la package java.lang
_____________________________________________________________________________________________________
Mme A. BENOMAR 96
1-4- Oprateurs : super et instanceof
- Loprateur super :
Pour faire rfrence la classe parente (super
classe) , il suffit dutiliser le mot cl super. Ce mot permet
dinvoquer un attribut ou une mthode de la super classe
On utilise super(arguments) pour invoquer le
constructeur de la super classe ayant les arguments
correspondants
- Loprateur instanceof :
Loprateur instanceof permet de savoir quelle
classe appartient une instance :
_____________________________________________________________________________________________________
Mme A. BENOMAR 97
1-4- Oprateurs : super et instanceof
class A
{ }
class B extends A
{ }
public class C
{ public static void main(String[] arg)
{ A a= new A();
B b = new B();
C c = new C();
System.out.println( a instanceof A ); // true
System.out.println( a instanceof B );//false
System.out.println( b instanceof A );//true
System.out.println( b instanceof B );//true
a=b;
System.out.println( a instanceof A );//true
System.out.println( a instanceof B );//true
//System.out.println( c instanceof A ); :erreur de compilation
//(c et A ne sont pas de mme type)
} }
_____________________________________________________________________________________________________
Mme A. BENOMAR 98
1-5- Un exemple de lhritage
Personne
_____________________________________________________________________________________________________
Mme A. BENOMAR 99
1-5- Exemple
class Personne // la super classe
{
final String nom;
final int annee_naissance;
String adresse; // sauf pour les SDF!!
Personne(String nom,int annee_naissance)
{this.nom=nom;
this.annee_naissance= annee_naissance;}
String getNom()
{ return nom;}
int getNaissance()
{ return annee_naissance;}
public String toString()
{
return("Je suis "+getNom()+" et je suis +
getClass()).getNom();}
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 100
1-5- Exemple
class Fonctionnaire extends Personne
{int numeroSomme;
double salaire;
String fonction;
Fonctionnaire(String nom,int annee_naissance,int numeroSomme)
{super(nom,annee_naissance);
this.numeroSomme=numeroSomme;
}
double getSalaire()
{ return salaire;}
}
for(int i=0;i<desPersonnes.length;i++)
System.out.println(desPersonnes[i]);
}
}
- A lexcution :
Je suis F et je suis Fonctionnaire
Je suis M et je suis MedecinPublic
Je suis E et je suis Eleve
Je suis C et je suis Chomeur
_____________________________________________________________________________________________________
Mme A. BENOMAR 104
2- LA CLASSE java.lang.Object
La classe dentte public class Object est la super classe de
toutes les classes Java : toutes ses mthodes sont donc hrites par
toutes les classes.
_____________________________________________________________________________________________________
Mme A. BENOMAR 105
2- LA CLASSE java.lang.Object
2-2 La mthode public String toString()
La mthode toString() permet d'obtenir la reprsentation d'un
objet quelconque par une chane de caractres. Ainsi lorsque une
rfrence r vers un objet de classe quelconque est dans une expression
en lieu et place d'une chane de caractres c'est en fait la chane
retourne par le message r.toString() qui est utilise dans l'expression.
La mthode toString de la classe Object retourne une chane
correspondant au nom de la classe de l'objet suivi de @ suivi de
l'adresse mmoire de la structure de donnes dfinissant les
caractristiques de l'objet (cette adresse est la valeur contenue dans la
variable rfrencant l'objet).
La mthode toString() est souvent redfinie
_____________________________________________________________________________________________________
Mme A. BENOMAR 106
2- LA CLASSE java.lang.Object
Soit la classe Livre dfinie comme suit
public class Livre
{ double prix;
String titre;
String auteur;
public Livre(double p, String t, String a)
{ prix=p;
titre = t;
auteur = a;
}
public static void main(String[] arg)
{ Livre monLivre= new Livre(50.00,"Programmation en langage
Java","Mme A. BENOMAR");
System.out.println(monLivre);
// La classe Livre ne redfinissant pas la mthode toSTring
// c'est celle hrite de la classe Object qui est invoque.
}
}
// A l'excution, on aura : Livre@ba34f2
_____________________________________________________________________________________________________
Mme A. BENOMAR 107
2- LA CLASSE java.lang.Object
Exemple 2 : Utilisation de la mthode toString() redfinie
_____________________________________________________________________________________________________
Mme A. BENOMAR 108
2- LA CLASSE java.lang.Object
Exemple 2 : Utilisation de la mthode toString() redfinie
public static void main(String[] arg)
{ Livre2 monLivre= new Livre2(50.00,"Programmation en langage
Java","Mme A. BENOMAR");
System.out.println(monLivre);
// La classe Livre redfinit la mthode toSTring
// c'est celle redfinie qui est invoque.
}
}
- A l'excution, on aura :
Titre : Programmation en langage Java
Auteur : Mme A. BENOMAR
Prix : 50.0
_____________________________________________________________________________________________________
Mme A. BENOMAR 109
2- LA CLASSE java.lang.Object
_____________________________________________________________________________________________________
Mme A. BENOMAR 110
2- LA CLASSE java.lang.Object
{ double prix;
String titre;
String auteur;
{ prix=p;
titre = t;
auteur = a;
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 111
2- LA CLASSE java.lang.Object
2-3. La mthode public boolean equals(Object obj)
Exemple 1 : Utilisation de la mthode equals hrite
public static void main(String[] arg)
{ LivreCompare l1 = new LivreCompare(50.00,"Programmation
en langage Java","Mme A. BENOMAR");
LivreCompare l2 = new LivreCompare(50.00,"Programmation en
langage Java","Mme A. BENOMAR");
System.out.print("Les livres rfrencs par l1 et l2 sont ");
if (l1.equals(l2))
/* ici quivalent l1 == l2 puisque la mthode equals n'est pas
redfinie. On compare le contenu des deux rfrences l1 et l2 (c'est
dire les adresses mmoire des deux Livres */
System.out.println("identiques");
else
System.out.println("diffrents"); }
}
- A lexcution : les livres rfrencs par l1 et l2 sont diffrents
Remarque : Pour avoir un comportement plus conforme ce que l'on attend
pour la mthode equals il faudrait redfinir celle-ci
_____________________________________________________________________________________________________
Mme A. BENOMAR 112
2- LA CLASSE java.lang.Object
2-3. La mthode public boolean equals(Object obj)
Exemple 2 : Utilisation de la mthode equals redfinie
public class LivreCompare2
{
double prix;
String titre;
String auteur;
public LivreCompare2(double p, String t, String a)
{ prix=p;
titre = t;
auteur = a; }
public boolean equals(LivreCompare2 l)
{ return (this.titre.equals(l.titre) && this.auteur.equals(l.auteur)
&& this.prix == l.prix); }
_____________________________________________________________________________________________________
Mme A. BENOMAR 113
2- LA CLASSE java.lang.Object
2-3. La mthode public boolean equals(Object obj)
Exemple 2 : Utilisation de la mthode equals redfinie
public static void main(String[] arg)
{ LivreCompare2 l1 = new LivreCompare2 (50.00,
"Programmation en langage Java","Mme A. BENOMAR");
LivreCompare2 l2 = new LivreCompare2 (50.00,
"Programmation en langage Java","Mme A. BENOMAR");
System.out.print("Les livres rfrencs par l1 et l2 sont ");
if (l1.equals(l2)) // ici on compare les attributs de l1 et l2
System.out.println("identiques");
else
System.out.println("diffrents");
}
- A lexcution : les livres rfrencs par l1 et l2 sont identiques
_____________________________________________________________________________________________________
Mme A. BENOMAR 114
2- LA CLASSE java.lang.Object
2-4. La mthode protected void finalize()
A l'inverse de nombreux langages orients objet tel que le C+
+ ou Delphi, le programmeur Java n'a pas se proccuper de la
destruction des objets qu'il instancie. Ceux-ci sont dtruits et leur
emplacement mmoire est rcupr par le ramasse miette de la
machine virtuelle ds qu'il n'y a plus de rfrence sur l'objet.
La machine virtuelle garantit que toutes les ressources Java
sont correctement libres mais, quand un objet encapsule une
ressource indpendante de Java (comme un fichier par exemple), il
peut tre prfrable de s'assurer que la ressource sera libre quand
l'objet sera dtruit. Pour cela, la classe Object dfinit la mthode
protected finalize, qui est appele quand le ramasse miettes doit
rcuprer l'emplacement de l'objet ou quand la machine virtuelle
termine son excution
_____________________________________________________________________________________________________
Mme A. BENOMAR 115
3- Masquage des attributs et redfinition des mthodes
_____________________________________________________________________________________________________
Mme A. BENOMAR 116
3- Masquage des attributs et redfinition des mthodes
_____________________________________________________________________________________________________
Mme A. BENOMAR 117
class A
{ int attr=10;
void meth()
{ System.out.println("Je suis la mthode de A"); }
}
class B extends A
{
int attr=20;
void meth()
{ System.out.println("Je suis la mthode de B"); }
}
public class Masque
{ public static void main(String[] argv)
{Aa;
B b = new B();
a=b;// car b est aussi un objet de la classe A (hritage)
System.out.println("b.attr= "+b.attr);
System.out.println("a.attr= "+a.attr);
b.meth();
a.meth(); }
_____________________________________________________________________________________________________
}
Mme A. BENOMAR 118
A l'excution , on aura :
b.attr= 20
a.attr= 10
Je suis la mthode de B
Je suis la mthode de B */
_____________________________________________________________________________________________________
Mme A. BENOMAR 119
4- casting ou transtypage
Le casting (mot anglais qui signifie moulage ), galement appel transtypage,
consiste effectuer une conversion dun type vers un autre type. Le casting peut tre
effectu dans deux conditions diffrentes :
_____________________________________________________________________________________________________
Mme A. BENOMAR 120
4- casting ou transtypage
_____________________________________________________________________________________________________
Mme A. BENOMAR 121
Exemple :
class Casting
{ static float f1,f2;
static double d1,d2;
public static void main (String[] arg)
{
f1=(float)10.5; // sous casting 10.5 est considre double
d1=f1; // pas de problme sur casting implicite : float en double
//Java est autoris effectuer de faon implicite un sur-casting
System.out.println("d1 est gal :"+d1);
d2=12.5;
// f2=d2 est interdit sous-casting doit tre demand explicitement.
f2= (float) d2;// conversion d'un double en float : sous casting explicite
System.out.println("f2 est gal :"+f2);
}
}
d1 est gal :10.5
f2 est gal :12.5
_____________________________________________________________________________________________________
Mme A. BENOMAR 122
Casting des objets
class Animal
{}
class Conversion
{ public static void main (String[] argv)
{
Chien chien; // dclaration dun objet de type Chien
Animal animal = new Chien ();
chien = (Chien)animal;
System.out.println(" Ce chien mesure : "+ chien.taille +" cm");
_____________________________________________________________________________________________________
Mme A. BENOMAR 123
Casting des objets
A lexcution :
Ce chien mesure : 80 cm
Tout animal ne peut pas tre converti en chien
_____________________________________________________________________________________________________
Mme A. BENOMAR 124
5 - LES INTERFACES
_____________________________________________________________________________________________________
Mme A. BENOMAR 125
5-2- Prsentation dune interface
Une interface se compose de deux parties :
- len-tte
- le corps
[]: optionnel
gras : mot cl
_____________________________________________________________________________________________________
Mme A. BENOMAR 126
Remarques :
- Elle peut tre attribue un package . Si elle ne lest pas, elle fera
partie du package par dfaut
interface I1
{}
_____________________________________________________________________________________________________
Mme A. BENOMAR 129
Utilisation dune interface
rfrence par i)
_____________________________________________________________________________________________________
Mme A. BENOMAR 130
interface I
{ . }
class A Implements I
{ }
class B implements I
{ . }
for(int i=0;i<table_demeures.length;i++)
table_demeures[i].affiche_commentaire();
}
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 133
6 DEFINITION DUNE CLASSE ABSTRAITE
_____________________________________________________________________________________________________
Mme A. BENOMAR 134
EXEMPLE : UNE CLASSE ABSTRAITE POUR MODELISER DES
FORMES GEOMETRIQUES
La classe Forme modlise des formes gomtriques planes. Elle contient deux
mthodes abstraites (perimetre et surface) et deux mthodes non abstraites
(estPlutotRond et description)
abstract class Forme
{
abstract float perimetre();
abstract float surface();
boolean estPlutotRond()
{
float lePerimetre=perimetre();
return surface() <= lePerimetre*lePerimetre/16;
}
void description()
{
if(estPlutotRond())
System.out.println(this + "s'etale au moins comme uncarre");
else
System.out.println(this + "s'etale moins q'un carre");
}
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 135
La classe Disque tend la classe Forme et dfinit les deux mthodes abstraites
de celle ci . Elle dfinit aussi la mthode toString de java.lang.Object
float perimetre()
{
return (float)(2*Math.PI*rayon);}
float surface()
{
return (float)Math.PI*rayon*rayon; }
float perimetre()
{ return 2* (longueur+largeur) ; }
float surface()
{ return longueur*largeur; }
desFormes[0]=new Disque(1);
desFormes[1]=new Disque(2);
desFormes[2]=new Disque(3);
desFormes[3]=new Rectangle(1,1);
desFormes[4]=new Rectangle(2,1);
INTRODUCTION
2- LINTERFACE java.util.Collection
3- LES LISTES
4- LES ENSEMBLES
5- LES MAP
_____________________________________________________________________________________________________
Mme A. BENOMAR 139
Chapitre 4 LES COLLECTIONS DE DONNEES
Introduction
Les collections permettent de stocker un nombre variable d'lments de
types identiques ou diffrents. Les collections se dmarquent des
tableaux dans la mesure ou elles ont la capacit de s'tendre et de
diminuer au gr, respectivement, des ajouts et des suppressions
d'lments. Cela permet d'viter de consommer des ressources
mmoires inutilement en initialisant un tableau une taille prdfinie en
sachant que celui-ci risque de ne pas tre totalement rempli lors des
diffrentes tapes d'excution d'un programme. Dans ce cas, une
collection possdera la facult d'adapter sa taille tous changements.
Le principe de collections de donnes repose sur un ensemble doutils
permettant de regrouper sous forme d'un objet unique diffrents
lments (par exemple un ensemble de donnes constituant un rpertoire
dabonns au tlphone).
_____________________________________________________________________________________________________
Mme A. BENOMAR 140
Chapitre 4 LES COLLECTIONS DE DONNEES
Introduction
Les collections permettent de stocker un nombre variable d'lments de
types identiques ou diffrents. Les collections se dmarquent des
tableaux dans la mesure ou elles ont la capacit de s'tendre et de
diminuer au gr, respectivement, des ajouts et des suppressions
d'lments. Cela permet d'viter de consommer des ressources
mmoires inutilement en initialisant un tableau une taille prdfinie en
sachant que celui-ci risque de ne pas tre totalement rempli lors des
diffrentes tapes d'excution d'un programme. Dans ce cas, une
collection possdera la facult d'adapter sa taille tous changements.
Le principe de collections de donnes repose sur un ensemble doutils
permettant de regrouper sous forme d'un objet unique diffrents
lments (par exemple un ensemble de donnes constituant un rpertoire
dabonns au tlphone).
_____________________________________________________________________________________________________
Mme A. BENOMAR 141
1- GENERALITES SUR LES COLLECTIONS JAVA
1-1 Dfinition dune collection
Une collection reprsente un groupe d'objets, connu par ses
lments et utilis pour stocker, rechercher et manipuler ces lments
Les collections peuvent permettre des lments en double (ou
doublons) l'image des listes, ou parfois les interdisent telles que les
ensembles.
Le langage Java dispose de plusieurs outils destins grer des
collections dune faon unifie qui met en oeuvre :
- des interfaces qui permettent la manipulation des collections
indpendamment de leurs reprsentations (linterface Collection,
linterface List, )
- des classes qui implmentent les interfaces prcdentes (la
classe Vector, ArrayList,)
- des mthodes qui ralisent des oprations utiles (add(),
contains(),..)
_____________________________________________________________________________________________________
Mme A. BENOMAR 142
1- GENERALITES SUR LES COLLECTIONS JAVA
1-2 Organisation des collections
Lensemble de ces outils java (interfaces, classes,
mthodes) qui permettent la mise en uvre des collections
est organis dans le package java.util selon deux
hirarchies :
Linterface java.util.Collection et linterface java.util.Map
_____________________________________________________________________________________________________
Mme A. BENOMAR 143
1- GENERALITES SUR LES COLLECTIONS JAVA
1 - 3 Le type Collection
_____________________________________________________________________________________________________
Mme A. BENOMAR 145
2- L'INTERFACE java.util.Collection
1 - 2 Architecture et organisation de linterface
Collection
Linterface Collection est utilise pour transmettre des
collections et les manipuler avec le maximum de gnralits. Des sous-
interfaces particulires sont fournies par ailleurs (Set, SortedSet ou
List).
voici un aperu de la hirarchie Linterface java.util.Collection:
_____________________________________________________________________________________________________
Mme A. BENOMAR 146
2- L'INTERFACE java.util.Collection
2-2 Les mthodes de l'interface Collection
Mthode Description
boolean add(Object o) Ajoute llment donn
boolean addAll(Collection c) Ajoute tous les lments de la collection donne
void clear() Supprime tous les lments de cette collection
boolean contains(Object o) Retourne true si cette collection contient llment donn
boolean containsAll(Collection c) Retourne true si cette collection contient tous les lments
de la collection
boolean equals(Object o) Vrifie lgalit entre lobjet donn et la collection
int hashCode() Retourne la valeur de code de hashage de la collection
boolean isEmpty() Retourne true si cette collection ne contient aucun lment
Iterator iterator() Retourne un itrateur sur les lments de cette collection
boolean remove(Object o) Supprime lobjet o de la collection
boolean removeAll(Collection c) Supprime tous les lments de la collection
boolean retainAll(Collection c) Ne conserve que les lments contenus dans la collection c
int size() Retourne le nombre dlments de la collection
Object[] toArray() Retourne un tableau contenant tous les lments de cette
collection
Object[] toArray(Object[] t) Retourne un tableau contenant tous les lments de cette
_____________________________________________________________________________________________________
collection dont le type correspond celui du tableau donn
Mme A. BENOMAR 147
2-3 Les classes implmentant l'interface Collection
_____________________________________________________________________________________________________
Mme A. BENOMAR 148
3- LES LISTES
Une liste en java contient une squence ordonne d'lments
avec possibilit de doublons. Une liste en java est reprsente par
linterface List.
Les lments dune liste sont accessibles soient par :
- leur position ou indice (comme un tableau)
- un itrateur
3 1 Linterface java.util.List
Linterface java.util.List est dfinie sous la forme :
public interface List extends Collection
L'interface List tend linterface Collection et ajoute les possibilits
suivantes :
- Accs aux lments par leur position;
- Recherche de la position d'lments;
L'interface List est implmente par les classes AbstractList,
ArrayList, LinkedList, et Vector.
_____________________________________________________________________________________________________
Mme A. BENOMAR 149
3-2 Mthodes ajoutes dans l'interface List
Mthode Description
void add(int index, Object element) insre un objet l'index spcifi, au sein de la liste courante.
insre tous les lments de la collection spcifie, l'index donn au sein
boolean addAll(int index, Collection c)
de la liste.
Object get(int index) retourne l'lment la position spcifie dans la liste.
int hashCode() retourne le code de hachage de la liste.
retourne la position de la premire occurrence de l'objet au sein de la liste
int indexOf(Object o)
courante, ou -1 s'il n'a pu tre trouv.
retourne la position de la dernire occurrence de l'objet spcifi au sein de
int lastIndexOf(Object o)
la liste, ou -1 s'il n'a pu tre trouv.
retourne un itrateur de liste sur les lments de l'objet List partir de la
ListIterator listIterator(int index)
position spcifie.
Object remove(int index. supprime l'lment positionn l'index spcifi au sein de la liste.
remplace l'lment la position spcifie dans la liste, par l'objet pass en
Object set(int index, Object element
argument.
retourne une partie de la liste, dlimite par les index fromIndex inclus et
List subList(int fromIndex, int toIndex.
toIndex exclus.
Object remove(int index). supprime l'lment positionn l'index spcifi au sein de la liste.
remplace l'lment la position spcifie dans la liste, par l'objet pass en
Object set(int index, Object element)
argument.
retourne une partie de la liste, dlimite par les index fromIndex inclus et toIndex
List subList(int fromIndex, int toInindex.
_____________________________________________________________________________________________________
exclus.
Mme A. BENOMAR 150
3-3 La classe java.util.Vector
Son entte :
public class Vector extends AbstractList implements
List
La classe Vector permet de crer une collection
d'objets qui fonctionne de la mme manire qu'un tableau,
l'exception que sa capacit peut varier en fonction des
besoins.
Une allocation de mmoire dynamique est utilise par
les objets Vector, si bien qu'il est possible d'ajouter, de
supprimer aisment leurs lments, soit de faire varier leur
taille dynamiquement.
De cette manire, un vecteur peut stocker un nombre
quelconque d'objets de type Object, soit n'importe quel
genre d'objets (String, Integer, URL, Date, etc.). Par contre,
un vecteur n'accepte pas les valeurs de types primitifs qui
doivent tre converties en objet par l'intermdiaire de leur
_____________________________________________________________________________________________________
classe
Mme s (double -> Double, char -> Character, etc.). .
A. BENOMAR 151
3-3-1 Les attributs ( les champs) de la classe Vector-
_____________________________________________________________________________________________________
Mme A. BENOMAR 153
Exemple
import java.util.*;
class Vecteur1
{ public static void main(String args[])
{
Vector v = new Vector();
System.out.println ("Nombre d'lments : " + v.size()); //0
System.out.println ("Capacit du vecteur "+ .capacity()); //10
v.add(new Integer(1));// un entier
v.add("Mon premier vecteur");// une chane
v.add(new Double(0.5));
System.out.println ("Nombre d'lments : " + v.size()); //3
System.out.println ("Capacit du vecteur "+ .capacity());//10
for(int i = 0; i < v.size(); i++)
System.out.println ("Element " +i+" : "+ v.elementAt(i));
for(int i = 0; i < 10; i++)
v.add(new Integer(i));
System.out.println ("Nombre d'lments : " + v.size());//13
System.out.println ("Capacit du vecteur "+ .capacity());}//20
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 154
2* public Vector(int initialCapacity) : Ce second
constructeur permet d'initialiser le vecteur une certaine
capacit fournie en argument. Dans ce cas, la valeur
contenu par chacun des lments est null.
_____________________________________________________________________________________________________
Mme A. BENOMAR 157
Exemple :
import java.util.*;
class Vecteur4
{ public static void main(String args[])
{ ArrayList collection = new ArrayList();
collection.add("lundi");
collection.add("mardi");
collection.add("mercredi");
collection.add("jeudi");
collection.add("vendredi");
collection.add("samedi");
collection.add("dimanche");
collection.add(new Integer(4));
Vector vecteur = new Vector(collection);
for(int i = 0; i < vecteur.size(); i++)
System.out.println (vecteur.elementAt(i));
System.out.println ("Taille du vecteur : " + vecteur.size());//8
System.out.println ("Capacit du vecteur : " +
vecteur.capacity()); //8
}
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 158
3-3-3 Quelques mthodes de la classe Vector
Mthodes de gestion de taille dun vecteur
_____________________________________________________________________________________________________
Mme A. BENOMAR 159
- La mthode public void ensureCapacity(int capacite) augmente la capacit
du vecteur si ncessaire
La mthode public void trimToSize() adapte la capacit la taille courante
du vecteur.
- Les mthodes dajout dlments dans un vecteur
L'ajout d'objets dans un vecteur s'accompli par l'intermdiaire de plusieurs
mthodes dont la plupart sont prfixes par add.
La mthode void add(int index, Object element) insre un lment la
position spcifie.
La mthode boolean add(Object obj) ajoute un lment la fin du vecteur.
La mthode boolean addAll(Collection col) ajoute une collection d'lments
la fin du vecteur.
La mthode boolean addAll(int index, Collection col) ajoute une collection
d'lments l'index spcifi dans le vecteur.
La mthode void addElement(Object obj) ajoute un objet la fin du vecteur.
La mthode void insertElementAt(Object obj, int index) insre un objet
l'index spcifi du vecteur.
_____________________________________________________________________________________________________
Mme A. BENOMAR 160
- Les mthodes de suppression dlments dans un vecteur
La suppression est prise en charge par plusieurs mthodes de la classe Vector
commenant en gnral par remove. La suppression d'un ou plusieurs lments
entrane une rorganisation du vecteur, c'est--dire que l'emplacement d'un lment
effac et immdiatement remplac par l'lment suivant et cela en cascade
jusqu'au dernier lment du vecteur.
la mthode Object remove(int index) supprime l'objet l'index spcifi et le
retourne.
La mthode boolean remove(Object obj) supprime la premire occurrence de
l'objet trouve dans le vecteur.
La mthode boolean removeAll(Collection col) supprime tous les lments de la
collection qui sont contenus dans le vecteur.
La mthode void removeAllElements() supprime tous les lments et remet
zro la taille du vecteur.
La mthode boolean removeElement(Object obj) supprime la premire
occurrence de l'lment du vecteur.
La mthode void removeElementAt(int index) efface l'lment l'index spcifi.
La mthode protected void removeRange(int debut, int fin) supprime les lments
situs dans un intervalle spcifi par les arguments.
La mthode void clear() supprime tous les lments dans le vecteur.
La mthode boolean retainAll(Collection col) retient les lments de la collection
et supprime tous les autres du vecteur.
_____________________________________________________________________________________________________
Mme A. BENOMAR 161
Exemple : ajout et suppression dlments dans un
vecteur
import java.util.*;
public class VecteurSupprim
{ public static void main(String[] args)
{ Vector vecteur = new Vector();
vecteur.add("lundi"); vecteur.add("mardi");
vecteur.add("mercredi"); vecteur.add("jeudi");
vecteur.add("Vendredi");
Vector v1 = new Vector(vecteur);
Vector v2 = new Vector(vecteur);
v1.removeAllElements();
v2.clear();
System.out.println ("La taille du vecteur (1, 2) : "
+ v1.size() + ", " + v2.size() ); // 0,0
System.out.println ("La capacit du vecteur (1, 2) : "
+ v1.capacity() + ", " + v2.capacity());// 5,5
} }
_____________________________________________________________________________________________________
Mme A. BENOMAR 162
- Les mthodes de consultation des lments
La consultation des lments prsents dans une collection Vector
s'effectue par l'intermdiaire de diverses mthodes permettant de
rcuprer un lment prcis ou plusieurs.
- La mthode Object elementAt(int index) retourne l'lment
trouv l'index spcifi.
- La mthode Enumeration elements() retourne la liste de tous les
lments du vecteur dans un objet Enumeration.
- Les mthodes Object firstElement() et Object lastElement()
retournent respectivement le premier et le dernier lment du
vecteur.
- Les mthodes Object[] toArray() et Object[] toArray(Object[]
obj) retournent un tableau d'objets contenant les lments du
vecteur. La seconde mthode remplit le tableau pass en
argument et retourne galement un tableau de mme contenu que
le premier. Ainsi dans ce cas, il est inutile d'utiliser la valeur de
retour de cette mthode.
_____________________________________________________________________________________________________
Mme A. BENOMAR 163
Exemple
import java.util.*;
public class VecteurTableau
{ public static void main(String[] args) {
Vector vecteur = new Vector();
vecteur.add("lundi");
vecteur.add("mardi");
vecteur.add("mercredi");
vecteur.add("jeudi");
vecteur.add("vendredi");
Object[] tabCh2 = new Object[10];
Object[] tabCh = vecteur.toArray(tabCh2);
for(int i = 0; i < tabCh.length; i++)
System.out.println (tabCh[i]);
for(int i = 0; i < tabCh2.length; i++)
System.out.println (tabCh2[i]);
} }
_____________________________________________________________________________________________________
Mme A. BENOMAR 164
A lexcution
lundi
mardi
mercredi
jeudi
vendredi
null
null
null
null
null
lundi
mardi
mercredi
jeudi
vendredi
null
null
null
null
Null
Remarque : tabchar et tabchar2 ont la mme taille (10) et contiennent les mmes lments
_____________________________________________________________________________________________________
Mme A. BENOMAR 165
3- 4 La classe java.util.ArrayList
Un objet de la classe ArrayList est un tableau qui se redimensionne
automatiquement. Il accepte tout type d'objets, null y compris.
Chaque instance d'ArrayList a une capacit, qui dfinit le nombre
d'lments qu'on peut y stocker. Au fur et mesure qu'on ajoute des
lments et qu'on " dpasse " la capacit, la taille augmente en
consquence.
La classe ArrayList est trs similaire la classe Vector.car elle
utilise un tableau en interne pour ranger les donnes et fournit un accs aux
lments par leur indice
Le principal intrt d'une ArrayList est de pouvoir facilement ajouter
un lment la liste. En effet, le tableau utilis en interne est surdimensionn
par rapport au besoin.
Ainsi une ArrayList initialis une taille de 5 lments pourra en
contenir beaucoup plus (jusqu 20 millions dentres).
Lorsque que l'on ajoutera un nouvel lment, il sera plac dans la
1re case libre du tableau interne ; on ne sera pas amen instancier un
nouveau tableau. Evidement, force d'ajouter des lments, le tableau
interne peut se trouver satur, dans ce cas un nouveau tableau est cr
automatiquement et les anciennes valeurs y sont recopies. Toutes ces
_____________________________________________________________________________________________________
oprations
Mme A. BENOMAR
sont transparentes.
166
3.4.1.Les constructeurs de ArrayList
Il existe 3 types de constructeurs pour la classe ArrayList :
ArrayList maAList = ArrayList(); // On construit un tableau vide dune
taille par dfaut de 10.
ArrayList maAList = ArrayList(int initialCapacity); // On initialise la taille
du tableau initialCapacity
ArrayList maAList = ArrayList(Collection c);
// On construit un tableau partir dune Collection passe en argument.
_____________________________________________________________________________________________________
Mme A. BENOMAR 167
// Les mthodes de la classe ArrayList
//Informations
size(); trimToSize(); hashCode(); minCapacity);
// Positional Access
Object get( index); Object set( index, Object element); add(Object
element); index, Object element); index, Collection c);
addAll(Collection c); clear(); Object remove( index); remove(Object
element); removeAll(Collection c); toIndex); Object
retainAll(Collection c);
// Search
indexOf(Object o); lastIndexOf(Object o); containsAll(Collection c);
contains(Object element); isEmpty();
// Comparator equals (Object element);
// Iteration Iterator iterator(); ListIterator listIterator(); ListIterator
listIterator(int debut);
// Range-view List subList( to); Object clone(); Object[] toArray();
Object[] toArray(Object[] element);
_____________________________________________________________________________________________________
Mme A. BENOMAR 168
Exemple dutilisation dun ArrayList :
List maListe = ArrayList(12);
for( i = 0; i < 12; i++)
{ maListe.add("lment" + i); }
Iterator it = maListe.iterator();(it.hasNext())
{ System.out.println(it.next().toString()); }
Affichage :
lment0
lment1
lment2
lment3
lment4
lment5
lment6
lment7
lment8
lment9
lment10
lment11
_____________________________________________________________________________________________________
Mme A. BENOMAR 169
4 LES ENSEMBLES
4-1 Linterface java.util.Set
_____________________________________________________________________________________________________
Mme A. BENOMAR 170
Quelques mthodes de linterface Set
size();
add(Object element);
addAll(Collection c);
clear();
remove(Object element);
removeAll(Collection c);
Object retainAll(Collection c);
containsAll(Collection c); contains(Object element);
isEmpty(); equals(Object element); Iterator
iterator(); Object[] toArray(); Object[]
toArray(Object[] element);
_____________________________________________________________________________________________________
Mme A. BENOMAR 171
4-2 La classe .HashSet
Les collections HashSet organisent des lments uniques dont
lordre ditration est alatoire.
Aussi, la classe HashSet naccepte quun seul lment null.
_____________________________________________________________________________________________________
Mme A. BENOMAR 172
.Les constructeurs de la HashSet
HashSet ensemble = HashSet();
Ce constructeur par dfaut initialise l'instance avec des valeurs par
dfaut, soit une capacit initiale et un facteur de charge par dfaut gaux
respectivement 16 et 0.75.
HashSet ensemble = HashSet(capacite);
// initialise linstance avec une capacit initiale de valeur capacite
HashSet ensemble = HashSet(float factch);
// initialise linstance avec une capacit de valeur capacite et un facteur
de charge de valeur factch
_____________________________________________________________________________________________________
Mme A. BENOMAR 175
TreeSet ensemble = TreeSet(Collection maCollection);
Ce constructeur accepte comme argument un objet Collection.
Chaque lment de la collection spcifie sera copi dans lobjet TreeSet
instanci. La collection sera par ailleurs trie selon lordre naturel de ses
lments (ordre alphabtique, numrique).
_____________________________________________________________________________________________________
Mme A. BENOMAR 176
4-3-2 Les mthodes de la classe TreeSet
Un objet TreeSet, dfini sans comparateur, utilise les mthodes
compareTo() et equals() des objets contenus dans cet ensemble.
Le comparateur de la collection TreeSet est accessible via la mthode
comparator() :
Comparator comparateur = ensemble.comparator();
Les mthodes principalement utilises sont les mthodes :
dajout (add(Object elt) et addAll(Collection c))
de suppression (remove(Object elt, removeAll(Collection c),
retainsAll(Collection c) et clear())
de vrification de prsence (isEmpty(), contains(Object elt) et
containsAll(Collection c)).
LIterator est le seul moyen de parcourir l'ensemble.
TreeSet(collection); Iterator valeurs = ensemble.iterator();
if(valeurs.hasNext()) { System.out.println("Elements : " +
valeurs.next()); }
_____________________________________________________________________________________________________
Mme A. BENOMAR 177
La classe TreeSet implmente deux mthodes first() et last(), charges respectivemen
de rcuprer dans un ensemble le premier lment (cest dire le plus petit) et le
dernier lment (le plus grand).
La comparaison entre les lments est assure par l'ordre naturel ou par le comparateu
spcifi.
Object premier = ensemble.fisrt(); Object dernier = ensemble.last();
Les mthodes toArray() et toArray(Object o) hrites de l'interface Set permettent de
renvoyer l'ensemble des lments contenus dans la collection Set, dans un tableau.
La mthode SortedSet headSet(Object toKey) retourne seulement les lments de
l'objet TreeSet, qui sont strictement infrieurs l'objet pass en argument. Ce dernier
est exclu de l'objet SortedSet retourn.
La mthode tailSet(Object fromKey) retourne seulement les entres de l'objet
TreeMap, dont les cls sont strictement suprieures ou gales l'objet pass en
argument.
La mthode subSet(Object fromKey, Object toKey) extrait un intervalle d'entres, don
les cls sont comprises entre la valeur du premier argument incluse et la valeur du
second argument exclu.
La mthode values() retourne toutes les valeurs dans une collection.
SortedSet partie = ensemble.headSet(valeur);
_____________________________________________________________________________________________________
Mme A. BENOMAR 178
5- LES COLLECTIONS DE TYPE Map
Un objet de type map est une collection qui associe
une cl une valeur. La cl est unique, contrairement la
valeur qui peut tre associe plusieurs cls.
_____________________________________________________________________________________________________
Mme A. BENOMAR 179
5-1- Linterface java.util.Map
Les java.util.Map (associations) mmorisent une collection de couples
cl/valeur.
Si on a une cl, l'association retrouvera la valeur associe cette cl. Les
cls sont uniques, mais la mme valeur peut-tre associe plusieurs cls.
Les mthodes de Map:
size(); clear(); Object get(Object key); Object TUputUT(Object
key, Object value); TUputAllUT(Map t); Object remove (Object
element); containsKey (Object key); containsValue(Object value);
isEmpty(); hashcode(); equals (Object element); Set entrySet(); Set
keySet(); Collection values();
_____________________________________________________________________________________________________
Mme A. BENOMAR 180
Les objets Map dpendent de deux mthodes particulirement
importantes pour le fonctionnement des collections :
hashCode() // calcule le code de hachage des cls
equals(Object o) // teste lgalit entre 2 cls
Ces mthodes sont indispensables puisquelles assurent la cohrence de
la collection lors de lutilisation des mthodes :
get(Object key) // rcupre la valeur correspondante la cl key
put(Object key,Objet value) // ajoute un ensemble cl/valeur
remove(Object o) // supprime lensemble cl/valeur correspondant la cl
key spcifie
Ainsi, si un nouveau couple cl/valeur est ajout une collection et que la
cl y est dj prsente, la valeur de cette cl remplacera lancienne et ne
rajoutera pas une nouvelle paire cl/valeur.
_____________________________________________________________________________________________________
Mme A. BENOMAR 181
5-2 La classe HashMap
_____________________________________________________________________________________________________
Mme A. BENOMAR 182
5-5-1.Les constructeurs de la classe HashMap
_____________________________________________________________________________________________________
Mme A. BENOMAR 183
Dfinitions :
- La capacit initiale dfinit la taille initiale de la collection.
- Le facteur de charge dtermine quel moment l'ensemble doit
recalculer la capacit de la collection afin d'accueillir ventuellement
plus d'lments.
Dans le cas d'une collection de capacit initiale de 100 et dun facteur
de charge de 0.70, sa capacit sera recalcule ds quelle aura atteint
un taux de remplissage de 70%. Le facteur de charge influant sur les
performances de l'objet, il faut bien sr linitialiser en fonction de ses
besoins.
HashMap maHashMap = new HashMap(collection);
Ce dernier constructeur accepte comme argument une collection qui va
initialiser la nouvelle instance. Chaque entre de la collection spcifie
sera copie au sein de l'objet HashMap cr.
_____________________________________________________________________________________________________
Mme A. BENOMAR 184
Quelques mthodes de la classe HashMap
Les mthodes put(Object key,Object value)
et putAll(Map m) permettent respectivement
d'ajouter une paire cl/valeur et toutes les entres
d'une collection Map.
Les mthodes d'ajout vrifient au pralable
si les cls spcifies ne sont pas dj prsentes
dans la collection. Si cest le cas, les valeurs
correspondantes aux cls existantes sont
remplaces par les nouvelles valeurs spcifies.
_____________________________________________________________________________________________________
Mme A. BENOMAR 185
Exemple dutilisation de la classe HashMap:
import java.util.*;
class TestHashMap
{ public static void main(String[]args)
{ HashMap maHashMap =new HashMap();
String eleve = "Anass ";
float[] notes = {12,14,10,17};
maHashMap.put(eleve, notes); // la mthode put()
float[] resultat = (float[]) maHashMap.get(eleve);// la mthode
get()
System.out.println(eleve +" a eu les notes : ");
for(int i=0;i<resultat.length;i++)
System.out.println( resultat[i]);
maHashMap.clear(); //on efface tout
HashMap maHashMap2 =new HashMap();
maHashMap2.put("Marwane", "classe prpa");
maHashMap2.put("Oussama", "INPT");
maHashMap.putAll(maHashMap2); // on remplit maHashMap
System.out.println("Marwane est en " + (String)
maHashMap.get("Marwane"));
System.out.println("Oussama est " + (String)
maHashMap.get("Oussama")); }
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 186
La suppression d'une entre spcifique par rapport sa cl ou de la totalit
des paires cl/valeur s'effectue respectivement par les mthodes
remove(Object key) ou clear().
Exemple :
//suppression de l'entre correspondant la cl pass en argument
float[] lesNotes = maHashMap.remove("Anass");
//suppression de toutes les entres de la collection HashMap
maHashMap.clear();
La vrification de prsence d'entres, d'une cl ou d'une valeur est possible
par l'intermdiaire des mthodes isEmpty(), containsKey(Object key) et
containsValue(Object value).
Exemple :
if (maHashMap.isEmpty())
{ System.out.println("La collection est vide !"); }
if (maHashMap.containsKey("Marwane"))
{ System.out.println("La cl de Marwane a t trouve !"); }
if (maHashMap.containsValue("INPT"))
{ System.out.println("La valeur 'valeur' a t trouve !");}
Affichage : La cl de Marwane a t trouve ! La valeur INPT a t trouve !
_____________________________________________________________________________________________________
Mme A. BENOMAR 187
5-3 La classe HashTable
Un objet HashTable est une implmentation de Map qui associe une
cl une valeur. N'importe quel objet, mis part null peut y tre
ajout.
Voici un exemple d'utilisation de HashTable, o on associe un
numro de mois son nom :
Map monHashtable = new Hashtable() ;
monHashtable.put(new Integer(1),"Janvier")
monHashtable.put(new Integer(2),"Fevrier");
monHashtable.put(new Integer(3),"Mars");
monHashtable.put(new Integer(4),"Avril");
monHashtable.put(new Integer(5),"Mai");
monHashtable.put(new Integer(6),"Juin");
monHashtable.put(new Integer(7),"Juillet");
monHashtable.put(new Integer(8),"Aout");
monHashtable.put(new Integer(9),"Septembre");
monHashtable.put(new Integer(10),"Octobre");
monHashtable.put(new nteger(11),"Novembre");
monHashtable.put(new Integer(12),"Dcembre");
_____________________________________________________________________________________________________
Mme A. BENOMAR 188
La complexit d'accs une valeur par sa cl dpend d'une
fonction appele hashCode dfinie dans la cl.
Cette fonction est dj dfinie dans Object, mais pour optimiser la
recherche, la surcharger dans vos propres classes (si la cl est une
instance d'une classe de votre cration) permet un gain de temps non
ngligeable.
Le principe de cette fonction est simple : elle renvoie un entier. Si
les deux objets sont gaux, les valeurs renvoyes par leur fonction
respectives sont gales, mais l'inverse n'est pas vrai, ce qui veut dire que
si deux objets sont ingaux, leurs hashCode ne sont pas forcment
ingaux.
Gnralement, on fait renvoyer la fonction hashCode() d'un
objet la somme des hashCode() des lments le composant.
_____________________________________________________________________________________________________
Mme A. BENOMAR 189
6 LES CLASSES UTILITAIRES
_____________________________________________________________________________________________________
Mme A. BENOMAR 190
Les mthodes de cette interface sont gnralement
utilises dans une boucle wile, comme dans l'exemple suivant
import java.util.*;
// Classe mmorisant des chanes de caractres
class CollectionChaines
{ String [ ] tabChaines;
int nbreChaines = 0;
CollectionChaines (int max)
{ tabChaines = new String [max]; }
public void ajouterChaine (String chaine)
{ tabChaines [nbreChaines++] = chaine; }
public Enumeration chanes ()
{ return new EnumerationChaines (this); }
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 191
// Classe permettant d'numrer les chanes de CollectionChaines
class EnumerationChaines implements Enumeration
{ CollectionChaines collection;
int indice = 0;
public EnumerationChaines (CollectionChaines collection)
{ this.collection = collection; }
public boolean hasMoreElements ()
{ return indice < collection.nbreChaines; }
public Object nextElement ()
{ if (indice < collection.nbreChaines)
return collection.tabChaines [indice++];
else
throw new NoSuchElementException (); }
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 192
public class EssaiEnumeration
{ public static void main (String [ ] args)
{
// Cration d'une collection de chanes et ajout de 3 chanes
CollectionChaines donnees = new CollectionChaines (10);
donnees.ajouterChaine ("INE1");
donnees.ajouterChaine ("INE2");
donnees.ajouterChaine ("INE3");
// Enumration des lments de la collection
Enumeration enumeration = donnees.chanes ();
while (enumeration.hasMoreElements ())
System.out.println (enumeration.nextElement ()); }
}
/*A lexcution
INE1
INE2
INE3*/
_____________________________________________________________________________________________________
Mme A. BENOMAR 193
4-2 Linterface Iterator
_____________________________________________________________________________________________________
Mme A. BENOMAR 194
elle permet de tester l'existence d'un lment aprs le
curseur
boolean hasNext() Retourne true si litrateur nest pas arriv en fin de
lensemble et false sinon.
- La mthode iterator()
La mthode Iterator iterator().de l'interface Collection, vise construire un itrateur pour
une collection. Elle retourne un objet Iterator.
Toutes les collections disposent d'une mthode Iterator iterator(), qui permet d'initialiser
un itrateur, (de faon analogue au int i=0 qui initialise un indice de boucle entier).
_____________________________________________________________________________________________________
Mme A. BENOMAR 195
* Cration dun Iterator partir dune collection :
Iterator it = maCollection.iterator();
On peut donc parcourir une collection grce aux mthodes
de linterface Iterator
Quelque soit la collection c, on peut parcourir tous ses
lments de la faon suivante :
Collection c ;
// c est de type E
Iterator it = c.iterator() ;
while(it.hasNext())
{ E o = (E)it.next(); // o a pour valeur un objet de la collection
_____________________________________________________________________________________________________
Mme A. BENOMAR 196
-Linterface ListIterator
ListIterator est une sous-interface adapte aux listes.
La sous-interface ListIterator permet :
le parcours d'une liste dans les deux sens
la modification de la liste pendant le parcours ;
d'obtenir une position courante (situe entre l'lment qui serait retourne par
previous et celui retourn par next). Dans une liste de longueur n, les index valides
sont 0, 1, ..., n.
Les mthodes ajoutes dans cette interface sont les suivantes :
boolean hasPrevious() qui teste s'il existe un lment avant le curseur ;
Object previous() qui renvoie, s'il existe, l'lment avant le curseur ;
void add(Object o) qui permet l'insertion d'un lment avant le curseur (c'est--dire
entre les lments qui seraient retourns par appel de Object previous() et Object
next()) ;
int nextIndex() qui renvoie l'index de l'lment avant le curseur ;
int previous qui renvoie l'index de l'lment aprs le curseur ;
void set(Object o) qui remplace le dernier lment retourn par previous ou next
(si la dernire opration a modifi la liste, c'est--dire si la dernire opration a t
add ou remove, l'exception IllegalStateException est leve).
_____________________________________________________________________________________________________
Mme A. BENOMAR 197
Exemple dutilisation ditrateur
import java.util.*;
public class UtiliseIterator
{
public static void main(String args[]){
Vector vect = new Vector(5);
vect.addElement(new Integer(3));
vect.addElement(new String("Bonjour"));
vect.addElement(new Float(3.14));
System.out.println("vecteur : " + vect);
//vecteur : [3, Bonjour, 3.14]
Object o;
Iterator iter = vect.listIterator();
while (iter.hasNext()){
o = iter.next();
System.out.println(" " + o);
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 198
for(Enumeration enum = vect.elements();
enum.hasMoreElements();) // pas dincrmentation
System.out.println(" " + enum.nextElement());
ListIterator listIter = (ListIterator) iter;
while (listIter.hasPrevious()){
o = listIter.previous();
System.out.println(" " + o);
}
}
}
/* vecteur : [3, Bonjour, 3.14]
3
Bonjour
3.14
3
Bonjour
3.14
3.14
Bonjour
3*/
_____________________________________________________________________________________________________
Mme A. BENOMAR 199
6-3.Linterface java.lang.Comparable
Les objets manipuls dans une TreeMap ou une TreeSet
doivent tre comparables entre eux, cest dire quils doivent
implmenter linterface Comparable
En effet, Linterface java.lang.Comparable contient une seule
mthode :
int compareTo(Object o);
La mthode compareTo(), applique un objet x, avec pour
argument un objet y, compare les objets x et y et retourne un entier
<0, ou 0 ou un entier >0, selon que x est plus petit que y, lui est gal
ou lui est suprieur
_____________________________________________________________________________________________________
Mme A. BENOMAR 200
En ce qui concerne les objets tels que les String ou les
Integer, cette implmentation existe dj, ils peuvent donc
tre utiliss tels quels ( sans passer par linterface Comparable)
Cependant, les objets crs par lutilisateur ne
limplmentent pas automatiquement ; Il convient donc de
lajouter.
_____________________________________________________________________________________________________
Mme A. BENOMAR 201
Chapitre4 LES APPLETS
INTRODUCTION
1 LE LANGAGE HTML
_____________________________________________________________________________________________________
Mme A. BENOMAR 202
_____________________________________________________________________________________________________
Mme A. BENOMAR 203
Chapitre4 LES APPLETS
INTRODUCTION
Pour publier une applet sur Internet , il faut dabord crer une
page HTML. Lapplet est rfrence dans la page HTML et excute
par le logiciel de navigation.
_____________________________________________________________________________________________________
Mme A. BENOMAR 204
Chapitre4 LES APPLETS
1 LE LANGAGE HTML
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Panel
java.applet.Applet
_____________________________________________________________________________________________________
Mme A. BENOMAR 207
Chapitre4 LES APPLETS
Une applet est incluse dans une page HTML sous la forme dune
rfrence qui indique lendroit o le logiciel de navigation doit aller la
chercher
La balise APPLET sutilise comme nimporte quelle commande HTML.
Sa syntaxe est la suivante :
_____________________________________________________________________________________________________
Mme A. BENOMAR 211
Chapitre4 LES APPLETS
_____________________________________________________________________________________________________
Mme A. BENOMAR 212
Chapitre4 LES APPLETS
Fonctionnement dune applet
La liste ci dessous dcrit les diffrents vnements qui se
produisent lorsquune applet est charge :
import java.applet.Applet ;
import java.awt.Graphics ; // lapplet est une fentre graphique
_____________________________________________________________________________________________________
Mme A. BENOMAR 214
Chapitre4 LES APPLETS
<HTML>
</applet>
</HTML>
- En invoquant lappletviewer :
_____________________________________________________________________________________________________
Mme A. BENOMAR 216
Chapitre4 LES APPLETS
_____________________________________________________________________________________________________
Mme A. BENOMAR 217
Chapitre4 LES APPLETS
A lexcution , on aura :
Valeur du premier paramtre = Je suis le premier paramtre !
Valeur du deuxime paramtre = et moi le deuxime !
_____________________________________________________________________________________________________
Mme A. BENOMAR 222
Chapitre 5 LES INTERFACES GRAPHIQUES
INTRODUCTION
A - LE PACKAGE java.awt
5- LES CONTENEURS
INTRODUCTION
INTRODUCTION
_____________________________________________________________________________________________________
Mme A. BENOMAR 225
Chapitre 5 LES INTERFACES GRAPHIQUES
A - LE PACKAGE java.awt
_____________________________________________________________________________________________________
Mme A. BENOMAR 226
Chapitre 5 LES INTERFACES GRAPHIQUES
Remarque : Les segments tracs en java ont une largeur gale un point dcran. Pour
tracer un segment plus pais , on doit tracer plusieurs segments parallles
20
(50,20)
_____________________________________________________________________________________________________
Mme A. BENOMAR 227
Chapitre 5 LES INTERFACES GRAPHIQUES
import java.awt.*;
class TraceLigne extends Frame
{
TraceLigne( String titre) // Constructeur
{
super (titre);
/* appel au constructeur de la super classe de Traceligne (Frame) qui dessine une
fentre invisible et appelle automatiquement la mthode paint */
}
public void paint(Graphics g) // mthode redfinie
{ g.setColor(Color.blue);
// dessin dune ligne paisse (2 pixels dpaisseur
g.drawLine(50,65,150,100);
g.drawLine(50,66,150,101);
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 228
Chapitre 5 LES INTERFACES GRAPHIQUES
monDessin.setVisible(true);
/* la mthode setVisible(boolean) de la classe java.awt.component rend visible ou cache le
composant en fonction de ltat du boolean */
} // fin de main
} // fin de la classe
_____________________________________________________________________________________________________
Mme A. BENOMAR 229
Chapitre 5 LES INTERFACES GRAPHIQUES
* drawRect(int x1, int y1, int larg , int haut) affiche un rectangle vide
partir du point (x1,y1) de largeur larg et de hauteur haut
* fillRect(int x1, int y1, int larg , int haut) affiche un rectangle plein
partir du point (x1,y1) de largeur larg et de hauteur haut. La couleur de
remplissage du rectangle plein est la couleur courante
_____________________________________________________________________________________________________
Mme A. BENOMAR 230
Chapitre 5 LES INTERFACES GRAPHIQUES
import java.awt.*;
class TraceRect extends Frame
{
int x=50, y=60, largeur=150 , hauteur=100;
Color couleur=Color.red ; // dclaration d'un objet couleur
TraceRect (String titre)
{ super (titre); }
public void paint(Graphics g)
{
g.setColor(couleur);
g.drawRect(x,y,largeur,hauteur);
g.fillRect(x,y+150,largeur,hauteur); // rectangle plein
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 231
Chapitre 5 LES INTERFACES GRAPHIQUES
} // fin de la classe
_____________________________________________________________________________________________________
Mme A. BENOMAR 232
Chapitre 5 LES INTERFACES GRAPHIQUES
* drawOval (int x, int y, int largeur, int hauteur) affiche un ovale vide de
coin suprieur gauche de coordonnes (x,y) et de largeur et hauteur
dfinis
(x,y)
Largeur
Largeur
Hauteur
Dans le cas dun cercle largeur = hauteur = diamtre
* fillOval (int x, int y, int largeur, int hauteur) affiche un ovale plein
_____________________________________________________________________________________________________
Mme A. BENOMAR 233
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 235
Chapitre 5 LES INTERFACES GRAPHIQUES
-On peut aussi spcifier une couleur laide de trois nombres floats
compris entre 0.0 et 1.0
-Ces trois nombres reprsentent les 3 valeurs RGB
Color rouge = new Color(1.0f, 0.0f, 0.0f) ;
Color blanc = new Color(1.0f, 1.0f, 1.0f) ;
_____________________________________________________________________________________________________
Mme A. BENOMAR 237
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 238
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 241
Chapitre 5 LES INTERFACES GRAPHIQUES
import java.awt.*;
public class UtiliseFont extends Frame
{ UtiliseFont(String titre)
{ super(titre); }
public void paint (Graphics g)
{
Font ft= new Font("Serif",Font.BOLD,20);
g.setFont(ft);
g.setColor(Color.red);
g.drawString("ATTENTION DANGER",100,100);
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 242
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 243
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 244
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 246
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 249
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 253
Chapitre 5 LES INTERFACES GRAPHIQUES
3 LES COMPOSANTS DE LINTERFACE GRAPHIQUE
Exemple: Lapplication suivante permet dafficher une case cocher
de nom Test . Si lutilisateur active cette case le message Case active
sera affiche, sinon le message Case dsactive sera affiche
import java.awt.*;
class DemoCheckbox extends Frame
{
static boolean etat = false;
Checkbox test;
DemoCheckBox(String titre)
{ super (titre);
FlowLayout fl=new FlowLayout(); // gestionnaire de mise en page
setLayout(fl);
test=new Checkbox("TEST");
add(test);
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 254
Chapitre 5 LES INTERFACES GRAPHIQUES
A lexcution, on aura
_____________________________________________________________________________________________________
Mme A. BENOMAR 256
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 258
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 260
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 265
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 266
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 268
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 274
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 281
Chapitre 5 LES INTERFACES GRAPHIQUES
4-1 FlowLayout :
La classe FlowLayout (mise en page flot) place les
composants ligne par ligne de gauche droite.
_____________________________________________________________________________________________________
Mme A. BENOMAR 283
Chapitre 5 LES INTERFACES GRAPHIQUES
4-1 FlowLayout :
La classe FlowLayout (mise en page flot) place les
composants ligne par ligne de gauche droite.
Cest la disposition par dfaut, celle qui sera utilise si lon
ne choisit pas un autre gestionnaire. Le principe est trs simple :
tous les lments sont mis cte cte, de gauche droite.
Lorsquil ny a plus assez de place pour ajouter un lment, on
passe la ligne suivante. Chaque ligne est centre par dfaut
_____________________________________________________________________________________________________
Mme A. BENOMAR 284
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 288
Chapitre 5 LES INTERFACES GRAPHIQUES
4-2 BorderLayout :
4-2 BorderLayout :
4-3 GridLayout :
La classe GridLayout organise tous les composants dun
conteneur en grille (lignes et colonnes). Le mme espace est affect
tous les composants. Lorsquon instancie GridLayout, on doit spcifier le
nombre de lignes et de colonnes. Les lments sont ajouts dans la grille
de gauche droite, de haut en bas.
Dclaration dun objet de la classe GridLayout
GridLayout gl = new GridLayout (int nb_lignes, int nb_colonnes);
/* On spcifie le nombre de lignes ou le nombre de colonnes souhait. L'une
des deux valeurs doit tre nulle sinon seul le nombre de lignes est pris en
compte. Par exemple GridLayout(5,4) est identique GridLayout(5,0) */
_____________________________________________________________________________________________________
Mme A. BENOMAR 292
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 293
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 295
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 296
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 297
Chapitre 5 LES INTERFACES GRAPHIQUES
5 LES CONTENEURS
Pour mettre en service les diffrents composants dj vus
(boutons, listes, cases cocher, ) , il faut toujours les incorporer
dans un objet d'une classe drive de la classe abstraite Container
(conteneur). Les conteneurs les plus utiliss sont :
_____________________________________________________________________________________________________
Mme A. BENOMAR 298
Chapitre 5 LES INTERFACES GRAPHIQUES
5 LES CONTENEURS
5-1 Le conteneur Panel
_____________________________________________________________________________________________________
Mme A. BENOMAR 299
Chapitre 5 LES INTERFACES GRAPHIQUES
5 LES CONTENEURS
Exemple : Utiliser dans une applet deux panneaux
import java.awt.* ;
import java.applet.* ;
public class DemoPanel extends Applet
{ public void init()
{ FlowLayout fl=new FlowLayout();
setLayout(fl);
Panel p1= new Panel();
Button b1=new Button("Premier");
Button b2=new Button("Deuxime");
p1.add(b1);
p1.add(b2);
add(p1);
FlowLayout fl2=new FlowLayout(FlowLayout.LEFT,40,20);
setLayout(fl2);
Panel p2= new Panel();
Button b3=new Button("Troisime");
Button b4=new Button("Quatrime");
p2.add(b3);
p2.add(b4);
add(p2); }
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 300
Chapitre 5 LES INTERFACES GRAPHIQUES
5 LES CONTENEURS
5-2 Le conteneur Frame
_____________________________________________________________________________________________________
Mme A. BENOMAR 306
Chapitre 5 LES INTERFACES GRAPHIQUES
6- LES EVENEMENTS ET LES ACTIONS
_____________________________________________________________________________________________________
Mme A. BENOMAR 307
Chapitre 5 LES INTERFACES GRAPHIQUES
6- LES EVENEMENTS ET LES ACTIONS
_____________________________________________________________________________________________________
Mme A. BENOMAR 308
Chapitre 5 LES INTERFACES GRAPHIQUES
6- LES EVENEMENTS ET LES ACTIONS
Exemple : Il sagit de construire une interface graphique qui
permet de tracer un cercle rouge si on clique sur le bouton trace et
deffacer ce cercle si on clique sur le bouton efface
import java.awt.*;
import java.awt.event.*;
class EssaiBouton extends Frame implements ActionListener
{
Button trace = new Button("trace");
Button efface = new Button("efface");
EssaiBouton()
{
setLayout(new FlowLayout(FlowLayout.CENTER,5,5));
_____________________________________________________________________________________________________
Mme A. BENOMAR 309
Chapitre 5 LES INTERFACES GRAPHIQUES
6- LES EVENEMENTS ET LES ACTIONS
Exemple :
add(trace);
add(efface);
trace.addActionListener(this);
efface.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{ Graphics g=getGraphics();
if (e.getSource()==trace)
{ g.setColor(Color.red);
g.drawOval(50,50,100,100); }
else if (e.getSource()==efface)
{ g.setColor(getBackground());
g.drawOval(50,50,100,100); }
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 310
Chapitre 5 LES INTERFACES GRAPHIQUES
6- LES EVENEMENTS ET LES ACTIONS
Exemple :
_____________________________________________________________________________________________________
Mme A. BENOMAR 311
Chapitre 5 LES INTERFACES GRAPHIQUES
Souris(String titre)
{ super(titre);
text1 = new TextField(30);
FlowLayout fl=new FlowLayout();
setLayout(fl);
add(text1);
addMouseListener(this);
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 313
Chapitre 5 LES INTERFACES GRAPHIQUES
_____________________________________________________________________________________________________
Mme A. BENOMAR 316
Chapitre 5 LES INTERFACES GRAPHIQUES
{ String text="";
Touche(String titre)
{
super(titre);
addKeyListener(this);
}
Exemple 1
_____________________________________________________________________________________________________
Mme A. BENOMAR 320
Chapitre 5 LES INTERFACES GRAPHIQUES
-Exemples de javax.swing
Exemple2
import javax.swing.*;
import java.awt.event.*;
public class SwingDemo extends JFrame
{ Icon image = new ImageIcon("smallbabies.jpeg");
//JLabel label = new JLabel(image);
JButton SwingButton = new JButton(image);
public SwingDemo(String WindowTitle)
{super(WindowTitle);
getContentPane().add(SwingButton);
// getContentPane().add(label); }
_____________________________________________________________________________________________________
Mme A. BENOMAR 321
Chapitre 5 LES INTERFACES GRAPHIQUES
-Exemples de javax.swing
Exemple2
_____________________________________________________________________________________________________
Mme A. BENOMAR 322
Chapitre 6 LES EXCEPTIONS
1- INTRODUCTION
1- Introduction
Un programme ne se droule pas toujours comme
prvu. Plusieurs cas d'erreurs peuvent venir perturber son
bon droulement : division par zro, dpassement des
bornes d'un tableau, fichier inexistant,
Dans tout programme, le traitement des erreurs
reprsente une tche importante, souvent nglige par les
programmeurs.
Java dispose d'un mcanisme trs efficace appel le
mcanisme d'exceptions pour obliger les programmeurs
prendre en compte les erreurs. Ce mcanisme admet deux
principes fondamentaux :
_____________________________________________________________________________________________________
Mme A. BENOMAR 324
LES EXCEPTIONS
1- Introduction
- La plus grande partie des erreurs qui pourraient
survenir doit tre dtecte par le compilateur, de faon
limiter autant que possible les occasions de les voir se
produire pendant l'utilisation des programmes
_____________________________________________________________________________________________________
Mme A. BENOMAR 325
LES EXCEPTIONS
2- Dfinition dune exception
Une exception est une interruption de l'excution d'un
programme suite une erreur. Par exemple, une division par
zro provoque une exception de type ArithmeticException
Les exceptions en java sont des instances de sous-classes
des classes :
java.lang.Error (pour des erreurs graves, qui devront
gnralement conduire l'arrt du programme)
ou
java.lang.Exception (pour des vnements inattendus,
qui seront souvent traits de sorte qu'elle ne provoquent
pas l'arrt du programme).
_____________________________________________________________________________________________________
Mme A. BENOMAR 326
LES EXCEPTIONS
3- Un premier exemple d' une exception
class DivParZero
{
public static void main(String[] argv)
{
int zero = 0 ;
zero = 2000 / zero ;
}
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 327
LES EXCEPTIONS
3- Un premier exemple d' une exception
A l'excution du programme, on obtient l'affichage suivant :
_____________________________________________________________________________________________________
Mme A. BENOMAR 330
LES EXCEPTIONS
_____________________________________________________________________________________________________
Mme A. BENOMAR 334
LES EXCEPTIONS
_____________________________________________________________________________________________________
Mme A. BENOMAR 335
LES EXCEPTIONS
Exemple : Calcul d'une moyenne (entire) de notes entires envoyes en
arguments par la ligne de commande .Les arguments non entiers doivent tre
ignors et signals l'utilisateur
class ExceptionCatch
{
static int moyenne(String[] liste)
{
int somme = 0,entier, nbNotes = 0;
for (int i = 0; i < liste.length; i++)
{
try {
entier = Integer.parseInt(liste[i]);
somme += entier;
nbNotes++; }
catch (NumberFormatException e)
{System.out.println("la "+ (i+1) +"me note n'est pas entire");}
}
return (somme/nbNotes);
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 336
LES EXCEPTIONS
public static void main(String[] argv)
{
System.out.println("La moyenne
est"+moyenne(argv));
}
}
A l'excution : java ExceptionCatch 12 a 15
La 2 me note n'est pas entire
La moyenne est 13
_____________________________________________________________________________________________________
Mme A. BENOMAR 338
LES EXCEPTIONS
_____________________________________________________________________________________________________
Mme A. BENOMAR 339
LES EXCEPTIONS
4-4 Bloc Finally
Un bloc finally est un bloc d'instructions prcd du mot cl
finally. Ce bloc sera toujours excut aprs le traitement d'exception. Il
est en gnral utilis pour fermer des fichiers, librer des ressources,
Un bloc finally suit Un bloc try ou un bloc catch
Exemple d'utilisation d'un bloc finally
class UtiliseFinally
{
static int moyenne(String[] liste)
{
int somme=0, entier, nbNotes=0, i=0;
for ( i=0;i<liste.length;i++)
{ try
{ entier=Integer.parseInt(liste[i]);
somme +=entier;
nbNotes++; }
_____________________________________________________________________________________________________
Mme A. BENOMAR 340
LES EXCEPTIONS
4-4 Bloc Finally
finally
{ System.out.println("donne traite :"+liste[i]); }
}
return somme/nbNotes;
}
public static void main(String[] argv)
{
try
{ System.out.println("La moyenne est "+moyenne(argv)); }
catch (NumberFormatException e)
{ System.out.println("Erreur sur vos entiers"); }
}
}
A l'excution de : java UtiliseFinally 20 xy
On aura : donne traite : 20
donne traite : xy
Erreur sur vos entiers
_____________________________________________________________________________________________________
Mme A. BENOMAR 341
LES EXCEPTIONS
4-5 Quelques classes d'exceptions
Exception Type d'exception
IOException Entre Sortie
Exemples : lecture sur un
fichier inexistant
ArithmticException Arithmtique
Exemple : Division par zro
ArrayIndexOutOfBoundsExcepti Dpassement des bornes d'un
on tableau
NumberFormatException Format du nombre n'est pas
respecte
Exemple : un int reprsente en
float
OutOfMemoryException Dpassement de mmoire
_____________________________________________________________________________________________________
Mme A. BENOMAR 342
LES EXCEPTIONS
5- Dfinir sa propre exception
Si on veut pouvoir signaler un vnement exceptionnel d'un
type non prvu par l'API, il faut tendre la classe java.lang.Exception.
_____________________________________________________________________________________________________
Mme A. BENOMAR 343
LES EXCEPTIONS
5- Dfinir sa propre exception
Exemple :
class ExceptionRien extends Exception
{ public String toString()
{ return "Aucune note n'est valide " ; }
}
//Cette classe peut tre utilise comme exception dans une autre classe :
class ExceptionThrow
{
static int moyenne(String[] liste) throws ExceptionRien
{ int somme = 0,entier, nbNotes = 0;
for (int i = 0; i < liste.length;i++)
{
try
{entier = Integer.parseInt(liste[i]);
somme += entier;
nbNotes++;
}
_____________________________________________________________________________________________________
Mme A. BENOMAR 344