Beruflich Dokumente
Kultur Dokumente
www.cours-ista.com
Support de cours Java
Structures de donnes et Programmation Oriente Objet
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Plan
1 2 3 4 5
www.cours-ista.com
Bases procdurales de Java Notions de programmation oriente objet Bases orientes objet de Java Exceptions Classes utilitaires de base
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Plan (suite)
6
www.cours-ista.com
3
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Rfrences : The Java Language Specication, J. Gosling, B. Joy et G. Steele Java in a Nutshell, D. Flanagan
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Variables et types de donnes Identicateurs Constantes Types primitifs (entiers, ottants, boolens) Tableaux
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Identicateurs
1
Identicateur : suite de
lettres minuscules ou majuscules, chires, underscore (_) et dollar ($).
2 3
Un identicateur ne doit pas commencer par un chire. Java distingue minuscules et majuscules (Valeur dire de VALEUR). Conventions
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Identicateurs (suite)
Toute mthode publique et variable dinstance commence par une minuscule. Tout changement de mot descriptif se fait via une majuscule. Exs. : nextItem, getTimeOfDay. Variables locales et prives : lettres minuscules avec des underscores. Exs. : next_val, temp_val. Variables dites final reprsentant des constantes : lettres majuscules avec underscores. Exs. : DAY_FRIDAY, GREEN. Tout nom de classe ou dinterface commence par une majuscule. Tout changement de mot descriptif se fait via une majuscule. Exs. : StringTokenizer, FileInputStream. 7
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Reprsentation littrale
1
Entiers :
les valeurs octales commencent avec un 0. Ainsi 09 gnre une erreur : 9 en dehors de la gamme octale 0 7. Ajouter un l ou L pour avoir un entier long. Nombres virgules : par dfaut des double. Ajouter un f ou F pour avoir un float. boolens : 2 valeurs possibles, true et false. true (resp. false) nest pas gal 1 (resp. 0).
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Toute assignation, explicite ou par passage de paramtres, fait lobjet dune vrication de type. Pas de coercition ou de conversion systmatique. Une dirence de type est une erreur de compilation, pas un avertissement (warning). Types de donnes entiers :
byte : nutiliser que pour des manipulations de bits. short : relativement peu utilis car sur 16 bits. int : dans toute expression avec des byte, short, int, tous sont promus des int avant calcul.
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Plages de variation
Nom long int short byte double float Taille 64 bits 32 bits 16 8 64 32 bits bits bits bits Plage de variation -9 223 372 036 854 775 808. . . 9 223 372 036 854 775 807 -2 147 483 648 . . . 2 147 483 647 -32 768 . . . 32 767 -128 . . . 127 1.7e-308 . . . 1.7e308 3.4e-38 . . . 3.4e+38
10
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Conversions possibles en java. Conversion automatique seulement possible lorsque le compilateur sait que la variable destination est assez grande. Si des bytes, short, int et long font partie dune expression, tout le monde est promu long. Si une expression contient un float et pas de double, tout le monde est promu float. Sil y a un double, tout le monde est promu double. Tout littral virgule est considr comme double.
11
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Caractres
1
Un caractre est cod par un entier allant de 0 65536 (selon le standard unicode). On peut se servir des caractres comme entiers :
int trois = 3; char un = 1; char quatre = (char) (trois + un);
Dans quatre : 4. un a t promu int dans lexpression, do la conversion en char avant lassignation.
12
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Boolens
Type renvoy par tous les oprateurs de comparaison, comme (a < b). Type requis par tous les oprateurs de contrle de ux, comme if, while et do.
13
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Tableaux
1
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Ce qui revient
double matrice[][] = new double[4][]; matrice[0] = new double[4]; matrice[1] = new double[4]; matrice[2] = new double[4]; matrice[3] = new double[4];
15
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Initialisation par dfaut de tous les lments zro. Des expressions sont permises dans les initialisations de tableaux
double m[][] { { { }; = { 0*0, 1*0, 2*0 }, 0*1, 1*1, 2*1 }, 0*2, 1*2, 2*2 }
16
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
17
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Oprateurs arithmtiques
Op. + * / % ++ Rsultat addition soustraction multiplication division modulo incrmentation Op. += -= *= /= %= Rsultat assignation additive assignation soustractive assignation multiplicative assignation divisionnelle assignation modulo dcrmentation
1 2
Les oprateurs arithmtiques fonctionnent comme en C. Une dirence : le modulo agit galement sur les nombres virgule.
18
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
19
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
20
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Oprateurs relationnels
Op. == != > < >= <= Rsultat gal dirent de strictement suprieur strictement infrieur suprieur ou gal infrieur ou gal
Tout type java, y compris les types primitifs et les rfrences des instances dobjets peuvent tre compars avec == et !=
21
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Seuls les types numriques peuvent tre compars avec les oprateurs dordre. Les entiers, ottants et caractres peuvent tre compars avec les oprateurs dordre strict. Chaque oprateur renvoie un type boolean.
22
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Contrle de ux
if/else switch/break return while/do while/for
24
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Instruction if-else
1
de {}.
3
Il est de BONNE PRATIQUE dentourer daccolades une expression mme si elle nest pas compose. Ce qui permet, lorsque lon veut rajouter une expression, de ne rien oublier, comme cest le cas ci-aprs
25
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Instruction if-else
int octetsDisponibles; if (octetsDisponibles > 0) { CalculDonnees(); octetsDisponibles -= n; } else attendreDautresDonnees(); octetsDisponibles = n;
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Instruction break
Utilisation courante strictement analogue celle du C : pour sortir dun case lintrieur dun switch.
27
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Erreur rpandue que doublier un break commentaires du type // CONTINUER. Exemple dquivalent de wc (word count)
28
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
"Une maison est percee de portes et de fenetres, " + "cest encore le vide " + "qui permet lhabitat. " +"\n"+ "LEtre donne des possibilites, "cest par le non-etre quon les utilise. "Tao-to king, Lao-tseu, XI static int long = text.length(); " + " +"\n"+ \n";
29
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
30
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Instruction return
1 2
Mme usage quen C. Cest une erreur de compilation que davoir du code inatteignable en java.
31
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Instructions while/do-while/for
1
do-while
[ initialisation; ] do { corps; [ iteration; ] } while ( terminaison );
for 32
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
33
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Rfrences : Object-Oriented Analysis and Design with Applications, G. Booch, Data Structures, M.A. Weiss.
34
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
POO, Objets, Classes Notions gnrales de Programmation Oriente Objet (POO) Notion dobjet et de classe
35
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
2 3
Dans une dcomposition oriente objets, on partitionne le systme selon les entits fondamentales du domaine du problme. Sujet : objet verbe : opration. On utilise la conception oriente objets parce quelle nous aide mieux organiser la complexit inhrente aux logiciels et celle caractristique du monde rel modliser.
36
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
2 3
Nous verrons quun objet a un tat, un comportement et une identit ; Les termes instance et objet sont interchangeables. Une classe est un squelette pour un ensemble dobjets qui partagent une structure commune et un comportement commun.
37
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Classe :
Notion de type, ou classe Attribut, ou champ Dclaration dopration Description dopration
Objet :
tat Comportement Identit Objet Java
38
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
...,
sig_methn , corps_methn )
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Un type est par essence une entit statique, par opposition un objet, de nature dynamique. Dune certaine manire, le type est un squelette, lobjet son incarnation.
40
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Exemple de classe
Classe (type) dcrivant un cercle
class Cercle { // champs : rayon du cercle double r; // Constructeur : initialisation des champs Cercle(double nouvRayon) { r = nouvRayon; } // methode de calcul dune surface double calculeSurface() { return(3.1416*r*r); } }// Fin de class Cercle
41
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Ltat dun objet englobe toutes les proprits (habituellement statiques) de lobjet plus les valeurs courantes (gnralement dynamiques) de chacune de ces proprits. Une proprit est une caractristique naturelle ou discrminante, un trait, une qualit ou une particularit qui contribue rendre un objet unique. Par exemple, dans un distributeur, un numro de srie est une proprit statique et la quantit de pices quil contient est une valeur dynamique.
42
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
2 3
Le comportement est la faon dont un objet agit et ragit, en termes de changement dtat et de transmission de messages. Message, opration et mthode sont interchangeables. Par exemple, dans le cas dun distributeur de boissons, nous pouvons dclencher une action (appuyer sur un bouton) pour raliser notre slection.
Si nous navons pas introduit susamment dargent, il ne se passera probablement rien. Si nous avons mis assez dargent, la machine lencaissera et nous servira une boisson (modiant ainsi son tat).
43
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Une opration dsigne un service quune classe ore ses clients. En pratique, nous avons constat quun client eectuait typiquement 5 sortes doprations sur un objet. Les 3 les plus courantes sont les suivantes : Modicateur une opration qui altre ltat dun objet Slecteur une opration qui accde ltat dun objet, mais qui naltre pas celui-ci. Itrateur une opration qui permet daccder toutes les parties dun objet dans un ordre bien dni.
44
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
45
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
2 3
Lidentit est cette proprit dun objet qui le distingue de tous les autres objets. Deux objets peuvent tre dclars gaux en 2 sens dirents. Ils peuvent tre gaux au sens de leur rfrences (les pointeurs internes qui rfrencent les donnes de lobjet en mmoire) ou au sens de leur contenu (galit de leur tat), bien quils soient situs des emplacements mmoire dirents.
46
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
o etat
opi ref
ensemble des variables dinstance (pointeur sur) la mthode dinstance n i (pointeur sur) un emplacement mmoire contenant ltat et des rfrences internes vers les oprations (pointeurs sur les mthodes)
47
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Exemple dobjet, de type tasse caf. Des attributs dune tasse caf pourront tre :
sa couleur, la quantit de caf quelle contient, sa position dans le caf (la brasserie ou le bar)
Tasse caf est un type et la tasse caf rouge qui contient actuellement 38 millilitres de caf et qui se trouve sur la dernire table du fond est un objet. Rouge, 38 millilitres et sur la dernire table du fond constituent ltat de cet objet. Un type, ou une classe sert de modle partir duquel on peut instancier (crer) des objets contenant des variables dinstance et des mthodes dnies dans la classe.
48
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
49
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Une ide cl est de sparer linterface externe dun objet de son implantation. Linterface dun objet est constitue des messages quil peut accepter dautres objets. Autrement dit, cest la dclaration des oprations associes lobjet. Limplantation dun objet se traduit par la valeur de ses attributs et son comportement en rponse aux messages reus.
50
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
2 3
Dans un monde orient-objets, un objet expose son interface aux autres objets, mais garde son implantation prive. Limplantation doit donc tre spare de linterface. De lextrieur, le seul moyen pour interagir avec un objet est de lui envoyer un message (dexcuter lune de ses oprations). La sparation de linterface et de limplantation permet aux objets davoir la responsabilit de grer leur propre tat.
51
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Les autres objets ne peuvent manipuler cet tat directement et doivent passer par des messages (ou oprations). Lobjet qui reoit un message peut dcider de changer ou non son tat. Par contre, il ne contrle pas quel instant il va recevoir des messages. Un aspect fondamental de la programmation oriente objet est que chaque objet dune classe particulire peut recevoir les mmes messages. Linterface externe dun objet ne dpend donc que de sa classe.
52
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Lhritage est une relation entre les classes dont lune partage la structure ou le comportement dni dans une (hritage simple) ou plusieurs (hritage multiple) autres classes. On nomme super-classe la classe de laquelle une autre classe hrite. On appelle une classe qui hrite dune ou plusieurs classes une sous-classe.
54
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
55
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Par exemple, la classe Surface2DSymetrique peut avoir comme champs : labscisse de son centre de symtrie x lordonne de son centre de symtrie y sa taille size sa couleur color Et les classes Pave2D et Disque hriteront de ces champs. Une sous-classe peut dnir dautres champs qui viennent sajouter ceux hrits des super-classes. De plus, toujours dans une relation dhritage, les sous-classes hritent du comportement de leur super-classe.
56
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
57
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
1 2
Et les classes Pave2D et Disque hriteront de ces champs. Une sous-classe peut dnir dautres oprations qui viennent sajouter celles hrites des super-classes. Une sous-classe peut rednir tout ou partie des oprations hrites des super-classes.
58
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Le polymorphisme est un mcanisme par lequel un nom peut dsigner des objets de nombreuses classes direntes, tant quelles sont relies par une super-classe commune. Tout objet dsign par ce nom est alors capable de rpondre de direntes manires un ensemble commun doprations.
59
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Rfrences : The Java Language Specication, J. Gosling, B. Joy et G. Steele Java in a Nutshell, D. Flanagan
60
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Classes et objets Java Classe et objet Java mthode main() Compilation, excution Rfrence, new Variables & mthode dinstance Constructeurs, this Hritage
61
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Champs et mthodes
1 2
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
64
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Dclaration de classe
1 2
Un chier source java doit porter le mme nom que celui de la classe publique qui y est dnie. Syntaxe gnrique
class NomClasse { type variableInstance1; type variableInstanceN; type nomMethode1(liste-parametres) { corps-methode; } type nomMethodeN(liste-parametres) { corps-methode; } }
Exemple
65
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
66
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
67
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Un programme Java est constitu dune ou de plusieurs classes. Au moins une classe contenant le main(), mthode statique et publique. Est le point dentre de lexcution du programme.
// Fichier Bonjour.java public class Bonjour { public static void main(String args[]) { System.out.println("Bonjour ! ") ; }
68
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Cette classe dnit une classe Bonjour qui ne possde quune seule mthode. La mthode main() doit tre dclare static et public pour quelle puisse tre invoque par linterprteur Java. Largument args est un tableau de String qui correspond aux arguments de la ligne de commande lors du lancement du programme. args[0] est le 1er argument, args[1] est le 2ime argument, ...
69
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Compilation
1
Avant de pouvoir excuter ce programme, il faut tout dabord le compiler, par exemple avec la commande javac .
javac Bonjour.java
La commande javac traduit le code source en code intermdiaire (p-code) java. Ce code (une forme dassembleur gnrique) est videmment indpendant de la plate forme sur laquelle il a t compil.
70
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Excution
1
2 3
Autant de chiers que de classes qui ont t dnies dans le chier source sont produits. Les chiers compils ont lextension .class. Enn, pour excuter ce programme, il faut utiliser linterprteur de code Java et lui fournir le nom de la classe contenant le main(...) (sans lextension).
java Bonjour
71
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Rfrence un objet
1
En Java, on ne peut accder aux objets qu travers une rfrence vers celui-ci. Dclaration dune variable p avec pour type un nom de classe :
Point p;
Lorsque lon dclare une classe comme type dune variable, cette dernire a, par dfaut, la valeur null. null est une rfrence un Object (mre de toutes les classes Java), qui na pas de valeur (distinct de 0) ; par ex. dans
72
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
p a la valeur null.
5 6 7
En fait, rfrence un objet : pointeur. Mais larithmtique sur les pointeurs est impossible en java. Seule chose permise : changer la valeur de la rfrence pour pouvoir faire rfrence un autre objet. Plus prcisment, une rfrence pointe sur une structure o se trouve
des informations sur le type ladresse relle des donnes (instance dobjet)
73
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Oprateur new
1
Ligne 2 : tout changement p2 aecte lobjet rfrenc par p. p2 = p : aucune copie de lobjet ou allocation mmoire. Ligne 3 : dcrochage de p de lobjet originel. p2 permet toujours dy accder.
2
Objet qui nest plus rfrenc le ramasse-miettes (garbage collector) rcupre automatiquement la mmoire associe.
74
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Instance dobjet
1
3 4
Instance : copie individuelle de prototype de la classe, avec ses propres donnes : variables dinstance. Une fois la classe dclare, pour pouvoir utiliser un objet de cette classe, il faut dnir une instance (dobjet) de cette classe. Or les objets ne sont accessibles qu travers des rfrences . Donc une dnition qui spcie un objet comme une variable ayant le type de la classe choisie ne fait que dnir une rfrence vers un ventuel objet de cette classe.
Date d;
75
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
La variable d reprsente une rfrence vers un objet de type Date. En interne, cela rserve de la place pour le pointeur sous-jacent la rfrence d. Mais cela ne rserve pas de place mmoire pour une variable de type Date. Si lon veut une instance dobjet eective, il faut la crer explicitement avec le mot cl new et le constructeur de la classe Date.
Date d; d = new Date();
76
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Mthode dinstance
On peut voir une mthode comme un message envoy une instance dobjet. Pour acher la date contenue dans lobjet d, on lui envoie le message imprimer :
d.imprimer() ;
77
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Variables dinstance
78
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Oprateur . : accder des variables dinstance et des mthodes dun(e instance dun) objet. Ex. de dclaration de mthode
class Point { int x, y; void init(int a, int b) { x = a; y = b; } }
79
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
5 6
En C, mthode sans paramtre : nommethode(void). illgal en java. Les objets sont passs par rfrence (rfrences dinstances un objet passs par valeur). Les types primitifs sont passs par valeur. Les mthodes java sont donc similaires aux fonctions virtuelles du C++.
80
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Instruction this
1 2
this : rfrence linstance dobjet courante. Il est permis une variable locale de porter le mme nom quune variable dinstance . . . Exemple dutilisation de this vitant cela
void init(int x, int y) { this.x = x; this.y = x; }
81
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Constructeurs
1
Mme nom que celui de la classe. Pas de type de retour (pas mme void). Classe dcrivant un cercle
class Cercle { double r; // champs : rayon du cercle // Constructeur : initialisation des champs Cercle(double nouvRayon) { r = nouvRayon; } double calculeSurface() { return(3.1416*r*r); // methode de calcul } }// Fin de class Cercle
82
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Constructeurs (suite)
3
Exemple animalier
class Chat String int float { nom; // nom du fauve age; // en annees tauxRonronnement; // entre 0 et 1
public Chat(String sonNom, int sonAge, float sonTauxRonron) { nom = sonNom; age = sonAge; tauxRonronnement = sonTauxRonron; } }
83
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Constructeurs (suite)
1
84
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Exemple de constructeurs
1
Exemple animalier
class Chat { String nom; int age; Color[] couleurPelage; float tauxRonronnement; // // // // nom du fauve en annees ses differentes couleurs entre 0 et 1
public Chat(String sonNom, int sonAge, float sonTauxRonron, Color[] sesCouleurs) { nom = sonNom; age = sonAge; tauxRonronnement = sonTauxRonron; couleurPelage = sesCouleurs; } public Chat() { this(new String("minou"), 1, 0.5, {Color.black, Color.white}); }
85
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Technique de rutilisation : crer un constructeur exhaustif (dot de tous les paramtres), puis crer dautres constructeurs appelant systmatiqement le constructeur exhaustif.
86
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
87
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Hritage
1 2 3
Les descendants par hritage sont nomms des sous classes. Le parent direct est une super classe. Une sous classe est une version spcialise dune classe qui hrite de toutes les variables dinstance et mthodes.
88
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Hritage (suite)
1
Mot-cl extends
class Point3D extends Point { int z; Point3D(int x, int y, int z) { this.x = x; this.y = y; this.z = z; } Point3D() { Point3D(-1, -1, -1); } }
89
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Hritage (suite)
1
Syntaxe gnrique
class NomClasse { type variableInstance1; type variableInstanceN; type nomMethode1(liste-parametres) { corps-methode; } type nomMethodeN(liste-parametres) { corps-methode; } }
90
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Hritage (suite)
1
Pas dhritage multiple, pour des raisons de performances et de complexit (en maintenance). la place, notion dinterface. Il existe une classe au sommet de la hirarchie, Object. Sans mot-cl extends, le compilateur met automatiquement extends Object. De la mme manire que lon peut assigner une variable int un byte, on peut dclarer une variable de type Object et y stocker une rfrence une instance de toute sous classe dObject.
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Surcharge, rednition
super
Sous-typage, transtypage, appartenance de type Surcharge Rednition Rpartition de mthode dynamique final, static, abstract
92
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Instruction super
1
la super classe.
class Point3D extends Point { int z; Point3D(int x, int y, int z) { super(x, y); // Appel de Point(x,y). this.z = z; } }
2
Cet appel au constructeur de la classe mre doit tre la 1ire ligne du constructeur.
93
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
classe :
2
Exemple animalier (voir lexcellent ouvrage le mystre des chats peintres de Heather Busch et Burton Silver, http ://www.monpa.com/wcp/index.html)
94
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
95
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
96
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ofppt.com
Le typage dune variable lui permet de rfrencer tout sous type (classe parente) ; la mthode miauler() est dnie dans Chat. La mthode peindre() nest dnie que dans ChatPeintre.
Chat gouttiere = new Chat("zephir", 1, 0.9); ChatPeintre moustacheDeDali = new ChatPeintre("dali", // nom de lartiste 2, // son age 0.1, // son taux rr {Color.white, Color.black}, "aLaDali",// son style 20000); // sa cote moyenne moustacheDeDali.peindre(); gouttiere.peindre(); // valide // illegal
97
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
donn ou non.
// true System.out.print(gouttiere instanceof Chat); // true System.out.print(moustacheDeDali instanceof Chat); // false System.out.print(gouttiere instanceof ChatPeintre); moustacheDeDali = null; // false System.out.print(moustacheDeDali instanceof ChatPeintre);
98
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Transtypage (ou cast en anglais) permet de changer le type, lorsque cela est permis.
Chat ch = new Chat("zephir", 1, 0.9); ChatPeintre chP; chP = ch; // Erreur de compilation if (ch instanceof ChatPeintre)// Bonnes manieres chP = (ChatPeintre)ch; // transtypage
99
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Surcharge de mthode
Plusieurs mthodes peuvent porter le mme nom : surcharge de mthode. Direntiation sur la signature de type : le nombre et le type des paramtres. Deux mthodes dune mme classe de mmes nom et signature de type est illgal. Exemple de surcharge
100
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
101
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Exemple animalier
class Chat { .... void vieillir() { age += 1; } void vieillir(int n) { age += n; } // Surcharge de methode
102
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Rednition de mthode
1
Distance en perspective dans Point3D (distance 2D entre x/z et y/z) rednir distance(x, y) de Point2D. Ex. de surcharge de distance 3D et de rednition de distance 2D
class Point { int x, y; Point(int x, int y) { this.x = x; this.y = y; } double distance(int x, int y) { int dx = this.x - x; int dy = this.y - y; return Math.sqrt(dx*dx + dy*dy); } double distance(Point p) { return distance(p.x, p.y); } }// class Point
// Surcharge
103
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
104
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
105
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
106
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
107
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
2 3
Il sagit dune forme de polymorphisme lexcution. Cela permet des bibliothques existantes dappeler des mthodes sur des instances de nouvelles classes sans recompilation.
108
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Instruction final
1 2
Variable dinstance ou mthode non rednissable : final. Pour des variables, convention de majuscules
final int FILE_QUIT = 1 ;
3 4
Les sous classes ne peuvent rednir les mthodes final. Petites mthodes final peuvent tre optimises (appels en ligne par recopie du code). final pour les variables est similaire au const du C++. Il ny a pas dquivalent de final pour les mthodes en C++.
109
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Mthode finalize()
Instance dobjet ayant une resource non java (descripteur de chier) : moyen de la librer. Ajout dune mthode finalize() la classe. Appele chaque libration dune instance dobjet de cette classe.
110
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Instruction static
mthode static : utilise en dehors de tout contexte dinstance. Mthode static ne peut appeler directement que des mthodes static. Ne peut utiliser this ou super. Ne peut utiliser une variable dinstance. code. Quasiment des variables globales. utiliser avec parcimonie . . .
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
112
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Lachage est
Prompt > java Statique Initialisation du bloc statique x = 42, a = 3, b = 12
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
114
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Exemple animalier
class Chat { String int Color[] float static int nom; age; couleurPelage; tauxRonronnement; ageSevrage = 1; // // // // // nom annees couleurs de 0 a 1 statique
115
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
return false; } } }
116
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Instruction abstract
1 2
Partie spcication, partie implantation : classes abstraites . Certaines mthodes, sans corps, doivent tre rednies par les sous classes : mthodes abstraites. Cest la responsabilit de sous classe. Toute classe contenant des mthodes abstraites (mot cl abstract) doit tre dclare abstraite. Les classes abstraites ne peuvent tre instancies par new. Pas de constructeurs ou de mthodes static. Une sous classe dune classe statique soit implante toutes les mthodes abstraites, soit est elle-mme abstraite.
117
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
118
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Paquetages et interfaces Paquetages & import Protection daccs & modicateurs Interfaces
119
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Paquetages
1 2
la fois un mcanisme de nommage et un mcanisme de restriction de visibilit. Forme gnrale dun source java
une unique declaration de paquetage (optionnel) declarations dimportations (optionnel) une unique declaration de classe publique declarations de classes privees (optionnel)
Pas de dclaration de paquetage : les classes dclares font partie du paquetage par dfaut, sans nom. Une classe dclare dans le paquetage monPaquetage le source doit tre dans le rpertoire monPaquetage (il y a distinction minuscule-majuscule).
120
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Paquetages (suite)
1
Syntaxe gnrique :
package pkg1[.pkg2[.pkg3]] ;
Par exemple
package java.awt.image ;
La racine de toute hirarchie de paquetage est une entre de la variable denvironnement CLASSPATH.
121
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Paquetages (suite) Ayant une classe ClasseTest dans un paquetage test, il faut
soit se mettre dans le rpertoire pre de test et lancer
java test.ClasseTest,
soit lancer :
java -dclasspath=.;c:\code\test;c:\java\classes ClasseTest
122
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Instruction import
1
Entrer les noms complets de classes et mthodes fort long Tout ou partie dun paquetage est amen en visibilit directe, avec import. Syntaxe gnrique
import pkg1[.pkg2].(nomclasse|*);
Exemple
import java.util.Date; import java.io.*;
Chargement de gros paquetages perte de performance en compilation. Pas deet lexcution. Toutes les classes livres dans la distribution java sont dans le paquetage java. Les Classes de base du langage se trouvent dans java.lang.
123
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Il y a une importation implicite de import java.lang.* Deux classes de mme nom dans 2 paquetages dirents imports avec * : le compilateur ne dit rien jusqu lutilisation dune des classes, o cest une erreur de compilation. Utilisation de noms complets. Au lieu de
import java.util.*; class MaDate extends Date { ... }
124
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Protections daccs
4 catgories de visibilit : Sous classe dans le mme paquetage. Non sous classe dans le mme paquetage. Sous classe dans des paquetages dirents. Classes ni dans le mme paquetage, ni sous classes.
1 2 3
Dclar public : peut tre vu de partout. Dclar private : ne peut tre vu en dehors dune classe. Pas de modicateur : visible des sous classes et des autres classes du mme paquetage. Situation par dfaut. Dclar protected : peut tre vu hors du paquetage, mais seulement des sous classes.
125
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
class Chat { // Les differents champs sont protected (et non private), // de facon a etre visibles des sous-classes protected String nom; // nom du fauve protected int age; // en annees protected Color[] couleurPelage; // ses couleurs protected float tauxRonronnement; // entre 0 et 1 protected static int ageSevrage = 1; // Champ statique
126
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
127
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
128
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
129
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
} }
130
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Interfaces
1 2
4 5
Interfaces : comme des classes, mais sans variable dinstance et des mthodes dclares sans corps. Une classe peut implanter une nombre quelconque dinterfaces. Pour cela, la classe doit fournir limplantation de toutes les mthodes de linterface. La signature de type doit tre respecte. Les interfaces vivent dans une hirarchie dirente de celles des classes deux classes sans aucun lien hirarchique peuvent implanter la mme interface. Les interfaces sont aussi utiles que lhritage multiple, mais donnent du code plus facile maintenir.
131
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Interfaces (suite)
8
En eet, ne repose pas sur des donnes, juste sur des mthodes. Syntaxe gnrique
interface nom { type-retour nom-methode1(liste-parametres); type nomvariable-finale = valeur; }
10
11
Toutes les mthodes implantant une interface doivent tre dclares public. Variables dclares lintrieur dune interface implicitement final.
132
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Exemple dinterface
1
2 3
133
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
utilisant une interface comme type au lieu dune classe. Toute instance dune classe implantant cette interface peut tre stocke dans cette variable. Si lon veut appeler une mthode via une telle variable, limplantation correcte sera appelle selon linstance courante. Les classes peuvent donc tre cres aprs le code qui les appelle. Cette technique de rsolution dynamique de mthode est coteuse en temps.
134
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Aspect dencapsulation
class TestInterface { public static void main(String args[]) { Callback c = new Client(); c.callback(12); } }
c ne peut tre utilis que pour accder la mthode callback() et non un autre aspect de Client.
135
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
Exceptions
136
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
137
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
De toutes faons lexception est capte (caught) et traite, en dernier recours par lenvironnement dexcution Java.
138
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
Les exceptions jetes (ou leves) par lenvironnement dexcution rsultent de violations des rgles du langage ou des contraintes de cet environnement dexcution.
139
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
Il y a 5 mots cls dinstructions ddies la gestion des exceptions : try, catch, throw, throws et finally. Des instructions o lon veut surveiller la leve dune exception sont mises dans un bloc prcd de linstruction try. Le code peut capter cette exception en utilisant catch et la grer.
140
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
Les exceptions gnres par le systme sont automatiquement jetes par lenvironnement dexcution Java. Pour jeter une exception manuellement, utiliesr throw. Toute exception qui est jete hors dune mthode doit tre spcie comme telle avec throws. Tout code qui doit absolument tre excut avant quune mthode ne retourne est plac dans un bloc finally.
141
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
Schma
Le schma est donc
try { // bloc de code a surveiller } catch (EceptionType1 exceptObj) { // gestionnaire dexception pour ExceptionType1 } catch (EceptionType2 exceptObj) { // gestionnaire dexception pour ExceptionType2 } ... finally { // bloc de code a executer // avant de sortir de la methode }
142
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
Types dexceptions
1
143
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
Considrons le code suivant o une division par zro nest pas gre par la programme :
class ExcepDiv0 { public static void main(String args[]) { int d = 0; int a = 42 / d; } }
Lorsque lenvironnement dexcution essaie dexcuter la division, il construit un nouvel objet exception an darrter le code et de grer cette condition derreur. Le ux de code est alors interrompu et la pile dappels (des direntes mthodes invoques) est inspecte en qute dun gestionnaire dexceptions.
144
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
Nayant pas fourni de gestionnaire au sein du programme, le gestionnaire par dfaut de lenvironnement dexcution se met en route. Il ache la valeur en String de lexception et la trace de la pile dappels :
/home/mounier> java ExcepDiv0 java.lang.ArithmeticException: / by zero at ExcepDiv0.main(ExcepDiv0.java:4)
145
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
Un bloc try est destin tre protg, gard contre toute exception susceptible de survenir. Juste derirre un bloc try, il faut mettre un bloc catch qui sert de gestionnaire dexception. Le paramtre de linstruction catch indique le type et le nom de linstance de lexception gre.
146
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
La porte dun bloc catch est restreinte aux instructions du bloc try immdiatement prcdent.
147
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
1 2
On peut grer plusieurs exceptions la suite lune de lautre. Lorsquune exception survient, lenvironnement dexcution inspecte les instructions catch les unes aprs les autres, dans lordre o elles ont t crites. Il faut donc mettre les exceptions les plus spciques dabord.
148
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
Instruction throw
1
Cette instance peut tre cre par un new ou tre une instance dune exception dja existante. Le ux dexcution est alors stopp et le bloc try immdiatement englobant est inspect, an de voir sil possde une instruction catch correspondante linstance gnre. Si ce nest pas le cas, le 2ime bloc try englobant est inspect ; et ainsi de suite.
149
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
Exemple
class ThrowDemo { static void demoproc() { try { throw new NullPointerException("demo"); } catch (NullPointerException e2) { System.out.print("attrapee ds demoproc()"); throw e2; } public static void main(String args[]) { try { demoproc(); } catch(NullPointerException e1) { System.out.print("attrapee ds main()"); }
150
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
Instruction throws
1
Si une mthode est susceptible de gnrer une exception quelle ne gre pas, elle doit le spcier, de faon que ceux qui lappellent puissent se prmunir contre lexception. Linstruction throws est utilise pour spcier la liste des exceptions quune mthode est susceptible de gnrer. Pour la plupart des sous-classes dException, le compilateur forcera dclarer quels types dexception peuvent tre gnres (sinon, le programme ne compile pas). Cette rgle ne sapplique pas Error, RuntimeException ou leurs sous-classes.
151
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
153
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
Instruction finally
1
Un bloc finally est toujours excut, quune exception ait t gnre ou non. Il est excut avant linstruction suivant le bloc try prcdent. Si le bloc try prcdent contient un return, le bloc finally est excut avant que la mthode ne retourne. Ceci peut tre pratique pour fermer des chiers ouverts et pour librer diverses ressources. Le bloc finally est optionnel.
154
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Syst. dexceptions
Conclusion
1
Le code suivant
FileInputStream fis; try { fis = new FileInputStream("readme.txt"); } catch (FileNotFoundException e) { fis = new FileInputStream("default.txt"); }
155
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Rfrences : Java et Internet Concepts et programmation, G. Roussel, E. Duris, N. Bedon et R. Forax Java in a Nutshell, D. Flanagan, The Java Language Specication, J. Gosling, B. Joy, G. Steele
156
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Classes Object, System, PrintStream Classe mre java.Object Classe java.lang.Object Classe dentre-sortie java.io.PrintStream
157
158
int hashCode() boolean equals() protected Object clone() protected void finalize()
Renvoie une vue en chane de caractres de this ; par dfaut, renvoie le nom de la classe suivi de son code de hachage. Renvoie le code de hachage associ lobjet. Teste lgalit, la plus smatiquement signicative possible. Renvoie une copie supercielle (champ champ) de lobjet (throws CloneNotSupportedException). Appele en libration mmoire (throws Throwable).
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
2 3 4 5
159
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Mthode equals()
1 2 3 4
Par dfaut, teste lgalit des rfrences. Il est de bon ton de la rednir en test dgalit de contenu. Erreur commune : surcharge au lieu de rednition ; le paramtre doit tre de type Object.
160
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
public class Complexe { protected double partieReelle, partieImaginaire; public Complexe(double r, double i) { partieReelle = r; partieImaginaire = i; } public boolean equals(Object obj) { if(!(obj instanceof Complexe)) { return false; } Complexe c = (Complexe)obj; return (partieReelle == c.partieReelle && partieImaginaire == c.partieImaginaire);
161
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Vrier que la relation binaire induite est rexive, symtrique et transitive. Vrier galement lidempotence (plusieurs valuations de x.equals(y) donne toujours le mme rsultat), et que null est absorbant : x.equals(null) est toujours false.
162
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
163
Mthodes de PrintStream
1
165
Mthodes :
But Ferme le ux dentre/sortie Vide le tampon mmoire associ au ux (force lcriture) Ache largument sur la sortie standard. Accepte des boolean, char, int, long, float, double, Object et String. Mme eet que print(), mais rajoute un saut de ligne criture binaire dun octet sur le ux dentre/sortie
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Mthode main() et classes demballage des types primitifs Mthode main() et ses arguments classes demballage des types primitifs (boolean, int, float, . . . )
166
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Syntaxe
public static void main(String args[]) ... public : la mthode peut tre appele de partout static : pas besoin de crer dobjet pour lappeler void : elle ne renvoie rien String args[] : args est un tableau de String
2 3 4 5 6
167
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Exemple dachage des arguments de la ligne de commande ainsi que de leur longueur :
class TestMain { public static void main(String args[]) { for(int i = 0; i < args.length; i++) System.out.println("arg no " + i+1 + " : " + arg[i] + " de longueur : " + args[i].length()); } }
168
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Par un appel dans une fentre Dos (resp. une fentre terminal Unix/Linux) de la forme
java TestMain toto 4 gabuzomeu 7.8 +&)
ache
arg arg arg arg arg no no no no no 1 2 3 4 4 : : : : : toto de longueur : 4 4 de longueur : 1 gabuzomeu de longueur : 9 7.8 de longueur : 3 +&) de longueur : 3
169
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Permettent de disposer de mthodes utilitaires de manipulation des types primitifs. Hritent de la classe abstraite Number. Les classes demballage des types primitifs sont : Boolean, Byte, Character, Short, Integer, Long, Float et Double. Mthode xxxValue(), o xxx est lun des noms de type primitf correspondant ; elle permet dobtenir une variable du type primitif correspondant.
Integer un = new Integer(1); int i = un.intValue();
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
2 3 4
elle permet dobtenir un objet de type numrique ou boolen partir dune chane de caractres. Par ex. parseDouble("2.5") ; renvoie un Double. Linverse est ralis par toString(). Les constantes MIN_VALUE et MAX_VALUE contiennent les valeurs minimale et maximale.
171
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Scanner (java.util.Scanner)
172
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
La classe Scanner permet entre autres lentre facile de types primitifs et de String au clavier. Il sut de crer un objet Scanner avec en argument le ux lire, puis dappeler une mthode nextXXX() selon le type primitif XXX lire Exemple dentre dun entier au clavier :
Scanner sc = new Scanner(System.in); // Creation dun Scanner // le flux System.in (l int i = sc.nextInt(); // prise dun entier sur // (au clavier)
173
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
174
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Rappel : un ux dentre est compos de lexmes, ou atomes syntaxiques, qui sont spars par des dlimiteurs. Les mthodes boolean hasNextXXX() renvoient true si le prochain lexme correspond au type attendu. La chane XXX prcdente est lune des suivantes :
BigDecimal, BigInteger, Boolean, Byte, Double, Float, Int, Long, Short, Line selon le type attendu, qui sera respectivement BigDecimal, BigInteger, boolean, byte, double, float, int, long, short pour les 9 premires, et une nouvelle ligne
pour la dernire. Ainsi, hasNextInt() renvoie true si le prochain lexme est un int. Les mthodes YYY nextXXX() renvoient la valeur du prochain lexme selon le type correspondant la chane XXX
175
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Ainsi, int nextInt() renvoie le prochain int, String nextLine() renvoie la prochaine ligne, int nextDouble() renvoie le prochain double, etc. La mthode boolean hasNext() renvoie true sil y a un prochain lexme. La mthode String next() renvoie le prochain lexme disponible.
176
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
177
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
178
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
179
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
180
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Classes java.applet.Applet et java.lang.String Notion dapplet, mthodes et exemple Classe String Classe StringBuffer
181
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Notion dapplet
1 2
Applet : mini-application, dont le code est tcharg travers le rseau. Est visualise par un navigateur ou par un visualiseur dapplets (applet viewer). Diverses restrictions de scurit.
182
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Une applet na pas de mthode main(). On tend la classe java.Applet, en rednissant diverses mthodes. Une applet nest pas sous le contrle de lactivit (thread) dexcution : elle rpond lorsque le navigateur le lui demande. Donc, pour des tches longues, lapplet doit crer sa propre activit.
183
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Mthodes rednir
Mthodes de base dApplet :
1
void init()
Appele lors du premier chargement de lapplet. Utilise pour des initialisations, de prfrence un constructeur.
2
void destroy()
void start()
Applele lorsque lapplet devient visible. Souvent utilise avec des animations et des activits (threads).
4
void stop()
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
que le navigateur appelle pour demander lapplet sa mise a jour graphique. Autres mthodes dApplet :
1
String getAppletInfo()
String[][] getParameterInfo()
185
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
void play(URL url) joue lAudioClip spci ladresse url. Image getImage(URL url)
186
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
x, y; size; color;
public Disk(int Xpos, int Ypos, int radius) { x = Xpos; y = Ypos; size = radius; color = Color.red; // Initialement rouge } // methodes public void public void public void fixant des attributs (modificateurs) setXY(int newX, int newY) { x = newX; y = newY;} setSize(int newSize) { size = newSize; } setColor(Color newColor) { color = newColor;}
187
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
188
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
// Dessiner le disque public void paint(Graphics g) { // Demander au navigateur dappeler la methode paint() // pour afficher le disque theDisk.paint(g); }
189
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
190
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Construction de String
1 2
Dans java.lang : String pour les chanes immuables et StringBuffer pour celles qui sont modiables. String et StringBuffer sont dclares final, de faon raliser certaines optimisations. Constructeur de recopie public String(String original). Il y a une syntaxe spciale pour les chanes qui permet une cration-initialisation rapide :
String s = "abc"; System.out.println(s.length()); System.out.println("abcdef".length());
3 4
Les 2 dernires lignes vont acher respectivement 3 et 6. Ne pas confondre la mthode length() avec la variable dinstance length de rfrences des tableaux.
191
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Concatnation de chanes
1 2
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Conversion de chanes
append() appelle en fait la mthode valueOf(). Pour des
types primitifs, cette dernire renvoie une repsentation en chane. Pour des objets, elle appelle la mthode toString() de lobjet. toString() est une mthode de Object, donc tout objet en hrite.
193
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
194
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Extraction/Comparaison
1
charAt() permet dextraire un caractre. Par ex. "abc".charAt(1) renvoie b. startsWith() (resp. endsWith() teste si la chane appelante
3 4
commence (resp. nit) par la chane fournie en paramtre. "Nabuchodonosor".endsWith("nosor") et "Nabuchodonosor".startsWith("Nabu") renvoient tous deux true. On peut galement spcier lindice de dbut de comparaison. Par exemple lexpression
"HoueiNeng".startsWith("Neng", 5)
renvoie true.
195
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
galit
1 2
equals() teste lgalit caractre caractre. == teste lgalit des rfrences (des adresses mmoires, ou
196
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Relation dordre
1 2
compareTo() compare 2 String selon un ordre alphabtique. int compareTo(String s) renvoie un rsultat ngatif si la chane appelante est infrieure s (le paramtre), 0 si elles
197
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Recherche de sous-chane
Recherche de lindice doccurrence dun caractre ou dune sous-chane dans une chane.
int indexOf(int car); int lastindexOf(int car);
renvoient lindice de la premire (resp. la deernire) occurence (c..d. apparition) du caractre car.
198
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
Puisque les String sont immuables, pour modier une chane, on peut soit utiliser un StringBuffer ou utiliser lune des mthodes suivantes, qui fournissent une copie modie dune String. substring() extrait une String dune autre. Par exemple :
"Bonjour a tous".substring(8) -> "a tous" "Bonjour a tous".substring(6, 5) -> "r a t"
199
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
www.cours-ista.com
replace(char carSrc, char carDst) remplace toutes les occurrences de carSrc par carDst :
"Bonjour".replace(o, a) -> "Bajaur"
200
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
www.cours-ista.com
201
202 www.cours-ofppt.com
String concat(String Concatnation de this celle fournie en str) argument. boolean renvoie true si this contient la String contains(String s) argument. boolean renvoie true si this est gale (au sens du contentEquals(StringBuffer contenu) la StringBuffer argument. sb) static String Conversion dun tableau de caractres en copyValueOf(char[] String. data) static String Renvoie une String formatte (voir la doformat(String format, cumentation des API pour les chanes forObject... args) mat). boolean matches(String renvoie true si this correspond lexregex) pression rgulire regex. String[] split(String Dcoupe this selon les dlimiteurs fournis regex) en tant quexpression rgulire.
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
www.cours-ista.com
StringBuffer
1 2
Cest une chane modiable et susceptible de crotre et de dcrotre. charAt() renvoie un caractre n indice donn ; setCharAt() remplace un caractre un indice donn getChars() fonctionne de la mme manire que son homologue de String. Prototype identique :
void getChars(int srcBegin, int srcEnd, char [] dst, int dstBegin);
append() concatne le paramtre la chane appelante. En gnral appel via +. insert() insre une sous-chane n indice spci :
"Lenvie detre roi".insert(8, "de tout sauf ")
rsulte en
"Lenvie de tout sauf detre roi"
203
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object, System, E/S main() & emballage Scanner Applet & String
www.cours-ista.com
StringBuilder
Cest une chane modiable ayant les mme fonctionnalits que StringBuffer mais sans synchronisation multi-threads. Il est conseill de lutiliser pour les applications mono-thread.
204
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Rfrences : Java et Internet Concepts et programmation, G. Roussel, E. Duris, N. Bedon et R. Forax Data Structures & Problem Solving Using Java, M.A. Weiss Algorithms, R. Sedgewick
205
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Classes de java.util ; Classes et interfaces de comparaison Contenu du paquetage java.util Interface java.lang.Comparable Interface java.util.Comparator
206
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
207
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
208
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Stockage de paramtres (paquetage java.util.prefs). Classe BitSet, ensemble de bits arbitrairement grand. Des classes de gestion de zone gographique, de gestion des fuseaux horaires, de gestion du calendrier.
209
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
210
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Interface java.lang.Comparable
Deux ements sont comparables (implanter Comparable) si lon peut leur appliquer
public int compareTo(Object other)
Cette mthode renvoie la distance entre this et other, au sens de la relation dordre induite.
211
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Interface java.util.Comparator
1
Objets comparateurs : spcialiss dans la dnition de relations dordre. Deux mthodes implanter :
int compare(Object o1, Object o2), orant le mme service que compareTo() de java.lang.Comparable boolean equals(Object o) testant lgalit de contenu.
Les mthodes de comparaison doivent en gnral tre compatibles avec le test dgalit.
212
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Classes et interfaces conteneurs Catgories Transistions entre conteneurs Interfaces Collection et Map
Arrays
Itration
213
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Cadre de collections
Un cadre logiciel de collections est form de 1 Interfaces, ou types de donnes abstraits. 2 Implantations, classes concrtes (structures de donnes rutilisables). 3 Algorithmes, mthodes utilitaires comme tri ou recherche, polymorphes (fonctionnalits rutilisable).
214
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Catgories de conteneurs
1
3 4
215
Types de conteneurs
216 www.cours-ofppt.com
Interfaces
LinkedList
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Dans Map :
values() renvoie une Collection des valeurs de la table keySet() renvoie un Set des cls de la table entrySet() renvoie un Map.entry des entres (paires cls/valeur) de la table Ce sont des vues de la table. Une modication dune vue est faite sur la table et vice versa.
Dans Collection :
217
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
218
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Interface Collection
Rsum des mthodes :
1
boolean add(Object o)
ajoute llment spci la collection. renvoie true si la collection a t modie par lopration (un Set ne peut contenir 2 fois le mme lment).
2
219
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Iterator iterator()
boolean remove(Object o) enlve une instance de o de la collection. int size() Object[] toArray()
220
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Interface Map
1 2
boolean equals(Object o)
221
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object put(Object key, Object value) associe la valeur value la cl key dans la table. Si une
valeur tait dja associe, la nouvelle remplace lancienne et une rfrence vers la nouvelle est renvoye, sinon null est renvoy.
6
Object remove(Object key) enlve lentre associe key de la table. Renvoie une rfrence sur la valeur retire ou null si elle nest pas
prsente.
7
int size()
222
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Classe Arrays
1 2 3
Classe de manipulation de tableaux. Mthode static List asList(Object[] a) renvoie une vue de type List de a. Sinon, 4 groupes de mthodes principales (en tout 54 mthodes) :
Dans ce qui suit, Type dsigne soit un type primitif, soit Object. static int binarySearch(Type[] a, Type key) eectuant une recherche de key dans a. static int equals(Type[] a, Type[] b) teste lgalit lt. lt. de a et b. static int fill(Type[] a, Type val) aecte tous les lments de a val. static int sort(Type[] a) trie a selon un alogrithme quicksort modi. 223
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Conteneurs immuables
1 2
Toutes les mthodes de modication de Collection et Map sont documentes comme optionnelles. On doit les rednir, mais le code peut juste lever une UnsupportedException. Si toutes ces mthodes lvent une telle exception, le conteneur est dit immuable. Vues immuables dun conteneur :
static Collection unmodifiableCollection(Collection c), static ListunmodifiableList(List list), static MapunmodifiableMap(Map m), static SetunmodifiableSet(Set s), 224
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Concurrence et synchronisation
1
225
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Itration de conteneurs
1 2
Par le biais de linterface Iterator. Elle dnit des mthodes par lesquelles ont peut numrer (un la fois) des lments dune collection. Elle spcie 3 mthodes :
boolean hasNext() renvoie true sil y a encore des lments dans la collection, Object next() renvoie une rfrence sur linstance suivante de la collection, remove() enlve llment renvoy dernirement par litrateur.
226
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Noter que ce code est polymorphe (il fonctionne pour toute instance de Collection)
227
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Squelettes dimplantation
1 2
Des classes abstraites squelettes facilitent limplantation. Les oprations (mthodes) de modication ne font rien sauf gnrer une exception de type UnsupportedOperationException. Par ex., pour crer une classe immuable de type Collection, il sut dhriter de AbstractCollection et dimplanter Iterator iterator() et int size()
228
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Pour dnir des conteneurs modiables, il faut implanter boolean add(Object o) et la mthode boolean remove(Object o) de litrateur renvoy par Iterator iterator(). De la mme manire, on dispose des classes AbstractMap, AbstractSet, AbstractList et AbstractSequentialList.
229
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
230
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
stockage cl/valeur. Une cl est un nom que lon utilise pour accder une valeur. Il sagit dune reprsentation abstraite dun tableau associatif. Les couples (cl, valeur) sont des instances de classes implantant linterface Map.entry.
231
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
les classes WeakHaskTable, HashMap, LinkedHashMap et IdentityHashMap utilisent des tables de hachage. TreeMap utilise des arbres rouges-noirs.
232
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Classe HashMap
1 2
Table de hachage : une reprsentation dune cl est utilise pour dterminer une valeur autant que possible unique, nomme code de hachage Le code hachage est alors utilis comme indice auquel les donnes associes la cl sont stockes.
233
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
2 3
Les valeurs de codes de hachage sont caches (encapsules). Une table de hachage ne peut stocker que des cls qui rednissent les mthodes hashCode() et equals() de Object.
234
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
2 3
La mthode hashCode() doit calculer le code de hachage de lobjet et le renvoyer. equals() compare 2 objets. Beaucoup de classes courantes de Java implantent la mthode hashCode(). Cest le cas de String, souvent utilise comme cl.
235
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Si lon veut utiliser ses propres classes comme cl de hachage, il faut rednir hashCode() et equals() de Object. La valeur (int) renvoye par hashCode() est ensuite automatiquement rduite par une opration modulo la taille de la table de hachage. Il faut sassurer que la fonction de hachage utilise rpartit aussi uniformment que possible les valeurs renvoyes entre 0 et capaciteInitiale, la taille initiale de la table.
237
238
Mthodes de HashMap :
But Renvoie true sil existe une cl gale key. Renvoie true sil existe une valeur gale value. Renvoie une rfrence sur lobjet contenant la valeur associe la cl key ou null. Insre une cl et sa valeur dans la table. Renvoie null si key nest pas dja dedans, ou la valeur prcdente associe key sinon. Enlve la cl key et sa valeur. Renvoie la valeur associe key ou null.
methode() boolean containsKey(Object key) boolean containsValue(Object value) Object get(Object key) Object put(Object key, Object value)
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Une fonction de hachage est une fonction f : x h aisment calculable, qui transforme une trs longue entre x en une sortie h nettement plus courte, (typiquement de 106 bits 200 bits) et qui a la proprit suivante : (Phach) : Il nest pas calculatoirement faisable de trouver deux entres direntes x et x telles que f (x ) = f (x ). Lexpression lopration O nest pas calculatoirement faisable signie simplement tous les algorithmes actuellement connus pour raliser O sont de complexit exponentielle.
239
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
www.cours-ista.com
Hachage : autentication
Application lautentication de messages : 1 Supposons que Alice veuille envoyer un message Bob, en signant son message. 2 Les donnes quAlice veut transmettre sont constitues dun message en clair suivi de ses prnom et nom, en clair, la n du message. Nommons x cet ensemble de donnes. 3 Alice transmet alors x , en clair, suivi de h = f (x ) o f est une fonction de hachage. 4 la rception, Bob applique la fonction de hachage f au texte en clair x et le compare h.
240
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Ainsi, Bob peut vrier non seulement que le message provient bien dAlice (que sa signature na pas t falsie), mais galement que son message, en clair, na pas t altr. Par supposition, aucun pirate naurait t capable de modier x sans changer la valeur de h = f (x ).
241
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Application la recherche. Supposons avoir une cl de recherche relativement longue (un entier ou une chane de caractres). La sortie de la table de hachage sera un indice dune table dans laquelle sont ranges les valeurs associes aux direntes cls. Prenons le cas o la cl est une chane de caractres x et o la fonction de hachage f choisie la transforme en h = f (x ) un indice entre 1 et p (il y a p indices dirents dans la table de hachage).
242
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
La proprit (Phach) assure que les sorties de f sont quasi-unromment distribues, en un sens probabiliste, dans [1, p ]. Prenons comme exemple de fonction de hachage simple la fonction modulo un nombre premier. Prenons alors pour p un nombre premier (par exemple 101) et considrons la cl suivante : VERYLONGKEY
243
244
On dcompose la cl selon la base de son alphabet (ici, il y a 32 signes dans lalphabet considr) :
22.3210 +5.329 +18.328 +25.327 +12.326 +15.325 +14.324 +7.323 +11.322 +5.32+25
2
La fonction de hachage considre ne prend pas directement ce nombre pour en faire lopration modulo 101, sa repsentation machine tant lourde manier ; il scrit en eet en binaire par
1011000101100101100101100011110111000111010110010111001
Il est bien plus ecace de se servir de la reprsentation dun polynme par lalgorithme de Hrner, o VERYLONGKEY scrit, en base 32, de la faon suivante :
(((((((((22.32+5)32+18)32+25)32+12)32+15)32+14)32+7)32+11)32+5)32+25
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
245
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Pour p == 101 et cle[] valant "VERYLONGKEY", cette fonction de hachage fournit 97. Le calcul dun indice partir dune cl est rapide, mais rien ne garantit que 2 cls distinctes donneront des indices distincts. On nomme collision dindice le fait que 2 cls distinctes donnent le mme indice. Il faut alors une stratgie de rsolution de collision.
246
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Une stratgie simple et ecace est le chanage spar. chaque fois quil y a une collision pour lindice i, les cls sont ranges dans une liste chane n i, associe la case dindice i de la table. Les dirents lments de la liste chane peuvent tre rangs en ordre alphabtique croissant des cls, pour un accs plus rapide. Cette stratgie est bien adapte au cas o lon ne connat pas, a priori, le nombre denregistrements (de paires cls/valeurs) traiter, ce qui est le cas de la classe HashMap de Java.
247
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
En Java, un code de hachage est gnr (via la mthode hashCode() dnie dans la classe Object. Elle renvoie alors en gnral une conversion de ladresse de lobjet en int, bien que ceci ne soit pas une obligation dimplantation du langage. La mthode hashCode() est rednie par les types suivants : BitSet, Boolean, Character, Date, Double, File, Float, Integer, Long, Object et String,
248
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Pour String, le code est obtenu de lune des 2 manires suivantes, selon sa longueur. Soit n la longueur de la suite de caractres et ci le caractre dindice i .
Si n 15, le code de hachage est calcul par
n 1
ci .37i
i =0
249
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
ci .k .39i
i =0 n en utilisant larithmtique des int, o k = n et m = k , 8 ne prenant (dans la dcomposition) que 8 ou 9 caractres de la chane.
250
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
251
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Classe LinkedHashMap
Pour corriger les insusances en itration de HashMap, le conteneur contient une table de hachage ainsi quune liste doublement chane de ses lments. Litration est ainsi de complexit linaire en la taille de la table. Lordre ditration est celui dinsertion des cls.
252
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Classe WeakHashMap
Se comporte comme HashMap, mais les cls sont des rfrences faibles. Les cls qui ne sont rfrences que par la table sont susceptibles dtre dtruites par le ramasse-miettes pour librer de la mmoire.
253
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Interface SortedMap
1
Implantation de Map dans laquelle les entres peuvent tre ordonnes suivant les cls. Il faut fournir 2 constructeurs suplmentaires :
lun avec un paramtre de type SortedMap, ralisant une copie de la table fournie, avec le mme ordre. lautre avec un paramtre de type Comprarator xant lordre.
254
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
255
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Object lastKey() renvoie la plus grande cl de la table trie. SortedMap subMap(Object fromKey, Object toKey) renvoie une vue de la partie de la table trie dont les cls sont comprises strictement entre fromKey et toKey. SortedMap tailMap(Object fromKey) renvoie une vue de la partie de la table trie dont les cls sont strictement plus grandes que fromKey.
256
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Classe TreeMap
1 2 3 4
Implante linterface SortedMap. structure de donnes sous-jacente : arbres rouges-noirs. Les cls sont constamment ordonnes en ordre croissant, selon lordre naturel des cls, ou selon un objet de comparaison fourni la cration, selon le constructeur utilis. Temps daccs en insertion, recherche, suppression (containsKey(), get(...), put(...) et remove(...)) en O(log n) o n est la taille du conteneur.
257
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Conteneurs de type Collection et Listes Suites accs direct et squentiel Tableau dynamique ArrayList Listes chanes LinkedList
258
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
259
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Ensembles : classes HashSet, LinkedHashSet et TreeSet. Itration des listes : ListIterator, mthodes en plus pour les lts. prcdents.
260
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Suites
Suites accs direct (dans nimporte quel ordre) : implantent RandomAccess. Suites accs squentiel (pour accder i + 1, accder i dabord) : hritent de AbstractSequentialList. Suites accs direct : ArrayList. Suites accs squentiel : LinkedList.
261
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Classe ArrayList
1 2
ArrayList est, grossirement parlant, un tableau longueur variable de rfrences des objets. ArrayList nest pas synchronise par dfaut. Si lon dsire avoir un tableau longueur variable synchronis, utiliser static Collection synchronizedCollection(Collection c) de la classe Collections.
On dispose de 3 constructeurs :
ArrayList() cr une liste de taille initiale 10 rfrences. ArrayList(int size) cr une liste de taille initiale size rfrences. ArrayList(Collection c) cr une liste avec les lts de c. La capacit initiale de la liste est de 110% celle de c. 263
264
Lobjet spci par element est ajout lendroit spci de la liste. Renvoie true si element est contenu dans la liste et false sinon. renvoie lllement situ la position spcie de la liste. Renvoie lindice de la 1ire occurrence de element. Sil ny est pas, -1 est renvoy. Enlve la premire occurrence de element trouve dans la liste. Renvoie une rfrence sur llment enlev. Remplace llment la position spcie par element.
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
265
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Taille initiale : 3 1er element : 1 Dernier element : 5 l contient lentier 3 Elements dans la liste : 1 2 3 4 18.23 5
267
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
268
Classe LinkedList
Mthodes supplmentaires de LinkedList
methode() void addFirst(Object o) void addLast(Object o) Object getFirst() Object getLast() Object removeFirst() Object removeLast() But
269
insre llt. spci au dbut de la liste. ajoute llt. spci la n de la liste. renvoie le 1er lt. de la liste. renvoie le dernier lt. de la liste. enlve et renvoie le 1er lt. de la liste. enlve et renvoie le dernier lt. de la liste.
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
Classe Stack
1
standard.
2
3 4 5
sont propres. Stack nest pas une pile au sens puriste du terme . . . Il est toutefois utile davoir accs aux mthodes de Vector. Un seul constructeur, sans arguments, qui cr une pile vide.
Stack est une sous classe de Vector. Elle hrite donc de toutes les mthodes de Vector, et en dnit cetraines qui lui
270
271
methode() boolean empty() Object peek() Object pop() Object push(Object element) int search(Object element)
Une EmptyStackException est jete si lon appelle pop() lorsque la pile est vide.
272
// For a set or list for(Iterator it=collection.iterator(); it.hasNext(); ) { Object element = it.next(); } // For keys of a map for(Iterator it=map.keySet().iterator(); it.hasNext(); ) { Object key = it.next(); } // For values of a map for(Iterator it=map.values().iterator(); it.hasNext(); ) { Object value = it.next(); } // For both the keys and values of a map for(Iterator it=map.entrySet().iterator(); it.hasNext(); ) { Map.Entry entry = (Map.Entry)it.next(); Object key = entry.getKey(); Object value = entry.getValue(); }
273
LinkedList stack = new LinkedList(); // Push on top of stack stack.addFirst(object); // Pop off top of stack Object o = stack.getFirst(); // If the queue is to be used by multiple threads, // the queue must be wrapped with code to synchronize the methods stack = (LinkedList)Collections.synchronizedList(stack);
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
// Get number of entries in map int size = map.size(); // 2 // Adding an entry whose key exists in the map causes // the new value to replace the old value Object oldValue = map.put("a", new Integer(9)); // 1 // Remove an entry from the map and // return the value of the removed entry oldValue = map.remove("c"); // 3
274
Bases procdurales Notions de POO Bases orientes objet de Java Exceptions Classes utilitaires de base java.util : Conteneurs et autres utilitaires
275