La programmation orient´ee objets

et le langage Java

Master BBSG 2
Laurent Tichit
D´epartement Informatique et Interactions, Facult´e des Sciences de Luminy

Cours 5: Quelques ´el´ements de la
biblioth`eque standard

L.
c Tichit, 2015-2016 POO et Java 1/1

´ ements de la biblioth`
El´ eque

Types ´enum´er´es

Le besoin : manipuler des ensembles finis de donn´
ees conventionnelles :
{ lundi, mardi, ... dimanche }, { nord, sud, est, ouest }, etc.

L.
c Tichit, 2015-2016 POO et Java 2/1

´ ements de la biblioth`
El´ eque

Types ´enum´er´es

Le besoin : manipuler des ensembles finis de donn´
ees conventionnelles :
{ lundi, mardi, ... dimanche }, { nord, sud, est, ouest }, etc.
Ces donn´
ees
sont tr`
es symboliques

L.
c Tichit, 2015-2016 POO et Java 2/1

´ ements de la biblioth` El´ eque Types ´enum´er´es Le besoin : manipuler des ensembles finis de donn´ ees conventionnelles : { lundi. ouest }. sud. comme des entiers) L. . { nord.. etc. est. c Tichit. Ces donn´ ees sont tr` es symboliques sont atomiques (simples. 2015-2016 POO et Java 2/1 .. mardi. dimanche }.

est. Ces donn´ ees sont tr` es symboliques sont atomiques (simples.. c Tichit. sud. etc. { nord. comme des entiers) forment des ensembles finis L. ´ ements de la biblioth` El´ eque Types ´enum´er´es Le besoin : manipuler des ensembles finis de donn´ ees conventionnelles : { lundi.. . 2015-2016 POO et Java 2/1 . ouest }. dimanche }. mardi.

. Ces donn´ ees sont tr` es symboliques sont atomiques (simples. etc. dimanche }. est.. comme des entiers) forment des ensembles finis forment des ensembles disjoints L.. ´ ements de la biblioth` El´ eque Types ´enum´er´es Le besoin : manipuler des ensembles finis de donn´ ees conventionnelles : { lundi. mardi. 2015-2016 POO et Java 2/1 . { nord. c Tichit. sud. ouest }.

public static final int MERCREDI = 2.. 2015-2016 POO et Java 2/1 . public static final int SAMEDI = 5. . sud.4 public class JourSemaine { public static final int LUNDI = 0. public static final int VENDREDI = 4. } L. public static final int DIMANCHE = 6. public static final int MARDI = 1. Ces donn´ ees sont tr` es symboliques sont atomiques (simples. etc. c Tichit. { nord. dimanche }. ouest }. mardi. public static final int JEUDI = 3. comme des entiers) forment des ensembles finis forment des ensembles disjoints Jusqu’` a Java 1.. est. ´ ements de la biblioth` El´ eque Types ´enum´er´es Le besoin : manipuler des ensembles finis de donn´ ees conventionnelles : { lundi.

} L. { nord. c Tichit. LUNDI. SAMEDI. mardi.. public static final int DIMANCHE = 6. sud. comme des entiers) forment des ensembles finis forment des ensembles disjoints Jusqu’` a Java 1. . ouest }. dimanche }. JEUDI. public static final int MARDI = 1. } public static final int SAMEDI = 5. MARDI. public enum JourSemaine { public static final int MERCREDI = 2. etc.4 public class JourSemaine { A partir de Java 5 public static final int LUNDI = 0. VENDREDI. DIMANCHE public static final int VENDREDI = 4.. public static final int JEUDI = 3. MERCREDI. 2015-2016 POO et Java 2/1 . Ces donn´ ees sont tr` es symboliques sont atomiques (simples. est. ´ ements de la biblioth` El´ eque Types ´enum´er´es Le besoin : manipuler des ensembles finis de donn´ ees conventionnelles : { lundi.

DIMANCHE public static final int VENDREDI = 4. LUNDI. MARDI. VENDREDI.. public static final int DIMANCHE = 6.MERCREDI. public static final int JEUDI = 3. 2015-2016 POO et Java 3/1 .4 public class JourSemaine { A partir de Java 5 public static final int LUNDI = 0. jour = JourSemaine. MERCREDI. SAMEDI. public static final int MARDI = 1. public enum JourSemaine { public static final int MERCREDI = 2. c Tichit. JEUDI. . Dans le premier cas : int jour. } Emploi.. ´ ements de la biblioth` El´ eque Types ´enum´er´es Jusqu’` a Java 1. } public static final int SAMEDI = 5. L.

. 2015-2016 POO et Java 3/1 . MERCREDI. c Tichit. . } public static final int SAMEDI = 5. public static final int DIMANCHE = 6. . LUNDI. public static final int JEUDI = 3. Dans le premier cas : int jour. Dans le second : JourSemaine jour. } Emploi.4 public class JourSemaine { A partir de Java 5 public static final int LUNDI = 0. public static final int MARDI = 1. JEUDI. ´ ements de la biblioth` El´ eque Types ´enum´er´es Jusqu’` a Java 1... SAMEDI. L.. VENDREDI. public enum JourSemaine { public static final int MERCREDI = 2.MERCREDI.MERCREDI. jour = JourSemaine. MARDI. jour = JourSemaine. DIMANCHE public static final int VENDREDI = 4.

toString() → "LUNDI" L. c Tichit. ´ ements de la biblioth` El´ eque M´ethodes des types ´enum´er´es String toString() – exemple : JourSemaine. 2015-2016 POO et Java 4/1 .LUNDI.

c Tichit.toString() → "LUNDI" static JourSemaine valueOf(String nom) – r´ eciproque de la pr´ ec´ edente : JourSemaine.LUNDI.valueOf("MARDI") → JourSemaine. ´ ements de la biblioth` El´ eque M´ethodes des types ´enum´er´es String toString() – exemple : JourSemaine.MARDI L. 2015-2016 POO et Java 4/1 .

2015-2016 POO et Java 4/1 .toString() → "LUNDI" static JourSemaine valueOf(String nom) – r´ eciproque de la pr´ ec´ edente : JourSemaine.LUNDI.ordinal() → 2 L.valueOf("MARDI") → JourSemaine. c Tichit. ´ ements de la biblioth` El´ eque M´ethodes des types ´enum´er´es String toString() – exemple : JourSemaine.MERCREDI.MARDI int ordinal() – rang (dans l’ordre de la d´ eclaration) : JourSemaine.

. ´ ements de la biblioth` El´ eque M´ethodes des types ´enum´er´es String toString() – exemple : JourSemaine. c Tichit.DIMANCHE L.LUNDI.MERCREDI.LUNDI .toString() → "LUNDI" static JourSemaine valueOf(String nom) – r´ eciproque de la pr´ ec´ edente : JourSemaine.ordinal() → 2 static JourSemaine[] values() – tableau contenant toutes les valeurs du type : JourSemaine. 2015-2016 POO et Java 4/1 .valueOf("MARDI") → JourSemaine.MARDI int ordinal() – rang (dans l’ordre de la d´ eclaration) : JourSemaine.. JourSemaine.

MARDI int ordinal() – rang (dans l’ordre de la d´ eclaration) : JourSemaine. JEUDI. DIMANCHE..valueOf("MARDI") → JourSemaine. ´ ements de la biblioth` El´ eque M´ethodes des types ´enum´er´es String toString() – exemple : JourSemaine. VENDREDI.MERCREDI.length]..LUNDI. 2015-2016 POO et Java 4/1 . } } L.LUNDI . public JourSemaine lendemain() { return values()[(ordinal() + 1) % values(). MERCREDI.toString() → "LUNDI" static JourSemaine valueOf(String nom) – r´ eciproque de la pr´ ec´ edente : JourSemaine.DIMANCHE Exemple : trouver le jour suivant un jour donn´ e: public enum JourSemaine { LUNDI. MARDI. c Tichit. SAMEDI.ordinal() → 2 static JourSemaine[] values() – tableau contenant toutes les valeurs du type : JourSemaine. JourSemaine.

c Tichit. ´ ements de la biblioth` El´ eque Collections et dictionnaires interfaces classes Collection collection la plus g´ en´ erale void add(Object element) int size() boolean contains(Object valeur) L. 2015-2016 POO et Java 5/1 .

´ ements de la biblioth` El´ eque Collections et dictionnaires interfaces classes Collection collection la plus g´ en´ erale void add(Object element) int size() boolean contains(Object valeur) List une collection qu’on peut voir comme une s´ equence void add(int index. c Tichit. Object element) Object get(int index) L. 2015-2016 POO et Java 5/1 .

Object element) Object get(int index) ArrayList tableau (acc`es index´e optimis´ e) qui grandit automatiquement L. 2015-2016 POO et Java 5/1 . ´ ements de la biblioth` El´ eque Collections et dictionnaires interfaces classes Collection collection la plus g´ en´erale void add(Object element) int size() boolean contains(Object valeur) List une collection qu’on peut voir comme une s´ equence void add(int index. c Tichit.

c Tichit. les Vector sont  synchronis´ es  L. De plus. Object element) Object get(int index) ArrayList tableau (acc`es index´e optimis´ e) qui grandit automatiquement Vector Idem. ´ ements de la biblioth` El´ eque Collections et dictionnaires interfaces classes Collection collection la plus g´ en´erale void add(Object element) int size() boolean contains(Object valeur) List une collection qu’on peut voir comme une s´ equence void add(int index. 2015-2016 POO et Java 5/1 .

les Vector sont  synchronis´ es  LinkedList liste chaˆın´ ee (optimise les insertions et suppressions internes) L. ´ ements de la biblioth` El´ eque Collections et dictionnaires interfaces classes Collection collection la plus g´en´ erale void add(Object element) int size() boolean contains(Object valeur) List une collection qu’on peut voir comme une s´ equence void add(int index. De plus. c Tichit. 2015-2016 POO et Java 5/1 . Object element) Object get(int index) ArrayList tableau (acc` es index´ e optimis´e) qui grandit automatiquement Vector Idem.

c Tichit. ´ ements de la biblioth` El´ eque Collections et dictionnaires interfaces classes Collection collection la plus g´en´ erale void add(Object element) int size() boolean contains(Object valeur) List une collection qu’on peut voir comme une s´ equence void add(int index. les Vector sont  synchronis´ es  LinkedList liste chaˆın´ ee (optimise les insertions et suppressions internes) Set collection sans r´ ep´ etition (optimise le test d’appartenance) L. Object element) Object get(int index) ArrayList tableau (acc` es index´ e optimis´e) qui grandit automatiquement Vector Idem. 2015-2016 POO et Java 5/1 . De plus.

les Vector sont  synchronis´ es  LinkedList liste chaˆın´ ee (optimise les insertions et suppressions internes) Set collection sans r´ ep´ etition (optimise le test d’appartenance) HashSet efficacit´ e maximale TreeSet les ´ el´ ements doivent ˆetre ordonn´ es . le parcours respecte cet ordre L. c Tichit. 2015-2016 POO et Java 5/1 . Object element) Object get(int index) ArrayList tableau (acc` es index´ e optimis´e) qui grandit automatiquement Vector Idem. ´ ements de la biblioth` El´ eque Collections et dictionnaires interfaces classes Collection collection la plus g´en´ erale void add(Object element) int size() boolean contains(Object valeur) List une collection qu’on peut voir comme une s´ equence void add(int index. De plus.

Object element) Object get(int index) ArrayList tableau (acc` es index´ e optimis´e) qui grandit automatiquement Vector Idem. les Vector sont  synchronis´ es  LinkedList liste chaˆın´ ee (optimise les insertions et suppressions internes) Set collection sans r´ ep´ etition (optimise le test d’appartenance) HashSet efficacit´ e maximale TreeSet les ´ el´ ements doivent ˆetre ordonn´ es . valeur) L. De plus. le parcours respecte cet ordre Map table associative. 2015-2016 POO et Java 5/1 . faite de couples (cl´ e. ´ ements de la biblioth` El´ eque Collections et dictionnaires interfaces classes Collection collection la plus g´en´ erale void add(Object element) int size() boolean contains(Object valeur) List une collection qu’on peut voir comme une s´ equence void add(int index. c Tichit.

le parcours refl` ete l’ordre L. faite de couples (cl´e. ´ ements de la biblioth` El´ eque Collections et dictionnaires interfaces classes Collection collection la plus g´en´ erale void add(Object element) int size() boolean contains(Object valeur) List une collection qu’on peut voir comme une s´ equence void add(int index. les Vector sont  synchronis´ es  LinkedList liste chaˆın´ ee (optimise les insertions et suppressions internes) Set collection sans r´ ep´ etition (optimise le test d’appartenance) HashSet efficacit´ e maximale TreeSet les ´ el´ ements doivent ˆetre ordonn´ es . le parcours respecte cet ordre Map table associative. 2015-2016 POO et Java 5/1 . Object element) Object get(int index) ArrayList tableau (acc` es index´ e optimis´e) qui grandit automatiquement Vector Idem. De plus. c Tichit. valeur) HashMap efficacit´ e maximale TreeMap les cl´ es doivent ˆ etre ordonn´ees .

c Tichit. 2015-2016 POO et Java 6/1 .length  Object next(). renvoie le prochain ´ el´ ement et fait avancer l’it´ eration. supprime l’´el´ ement en cours (peu utile. ` a la mani`ere de  tab[i++]  void remove(). renvoie true si l’it´ eration n’est pas finie. souvent inop´ erant) } L. ` a la mani`ere de  i < tab. ´ ements de la biblioth` El´ eque Parcours des collections Pour parcourir une collection on utilise un it´ erateur : public interface Iterator { boolean hasNext().

souvent inop´ erant) } les it´ erateurs sont cr´ e´ es et initialis´ es par les collections elles-mˆ emes : Iterator iter = uneCollection. ` a la mani`ere de  i < tab.length  Object next(). cr´ eation d’une it´ eration sur les ´ el´ ements de uneCollection L.iterator(). ´ ements de la biblioth` El´ eque Parcours des collections Pour parcourir une collection on utilise un it´ erateur : public interface Iterator { boolean hasNext(). ` a la mani`ere de  tab[i++]  void remove(). renvoie true si l’it´ eration n’est pas finie. supprime l’´el´ ement en cours (peu utile. renvoie le prochain ´ el´ ement et fait avancer l’it´ eration. 2015-2016 POO et Java 6/1 . c Tichit.

c Tichit. ´ ements de la biblioth` El´ eque Parcours des collections Exemple. La m´ ethode cumul additionne les ´ el´ ements d’une collection de nombres : double cumul(Collection suiteDeNombres) { /* Les ´ el´ ements de suiteDeNombres doivent ˆ etre des objets Double */ L. 2015-2016 POO et Java 7/1 .

iterator(). ´ ements de la biblioth` El´ eque Parcours des collections Exemple. while (iter. return result. 2015-2016 POO et Java 7/1 . c Tichit. Iterator iter = suiteDeNombres.next() . } L. La m´ ethode cumul additionne les ´ el´ ements d’une collection de nombres : double cumul(Collection suiteDeNombres) { /* Les ´ el´ ements de suiteDeNombres doivent ˆ etre des objets Double */ double result = 0.hasNext()) result = result + iter.

c Tichit. } L. ´ ements de la biblioth` El´ eque Parcours des collections Exemple.hasNext()) result = result + (Double) iter.next() . Iterator iter = suiteDeNombres. 2015-2016 POO et Java 7/1 . while (iter.iterator(). La m´ ethode cumul additionne les ´ el´ ements d’une collection de nombres : double cumul(Collection suiteDeNombres) { /* Les ´ el´ ements de suiteDeNombres doivent ˆ etre des objets Double */ double result = 0. return result.

} L.next()). La m´ ethode cumul additionne les ´ el´ ements d’une collection de nombres : double cumul(Collection suiteDeNombres) { /* Les ´ el´ ements de suiteDeNombres doivent ˆ etre des objets Double */ double result = 0. return result.hasNext()) result = result + ((Double) iter. c Tichit. while (iter. 2015-2016 POO et Java 7/1 . Iterator iter = suiteDeNombres. ´ ements de la biblioth` El´ eque Parcours des collections Exemple.doubleValue().iterator().

} essai de cette m´ ethode : void test() { List donnees = new ArrayList(). 2015-2016 POO et Java 7/1 . i < 5.. c Tichit. while (iter.random())).println(cumul(donnees)). ´ ements de la biblioth` El´ eque Parcours des collections Exemple..out. for (int i = 0. } L. i++) donnees. . return result.next()).doubleValue(). System.iterator().add(new Double(Math.hasNext()) result = result + ((Double) iter. Iterator iter = suiteDeNombres. La m´ ethode cumul additionne les ´ el´ ements d’une collection de nombres : double cumul(Collection suiteDeNombres) { /* Les ´ el´ ements de suiteDeNombres doivent ˆ etre des objets Double */ double result = 0.

Iterator iter = suiteDeNombres.. c Tichit.add(new Double(Math.out. . } affichage obtenu 2. ´ ements de la biblioth` El´ eque Parcours des collections Exemple. i < 5.hasNext()) result = result + ((Double) iter.doubleValue(). System.iterator(). i++) donnees.. return result. } essai de cette m´ ethode : void test() { List donnees = new ArrayList(). 2015-2016 POO et Java 7/1 . La m´ ethode cumul additionne les ´ el´ ements d’une collection de nombres : double cumul(Collection suiteDeNombres) { /* Les ´ el´ ements de suiteDeNombres doivent ˆ etre des objets Double */ double result = 0.random())).18124 L. for (int i = 0. while (iter.next()).println(cumul(donnees)).

´ ements de la biblioth` El´ eque Boucle for  am´elior´ee  Si tableau est un tableau de Machin. i < tableau.length. 2015-2016 POO et Java 8/1 . la boucle for (int i = 0. i++) exploiter(tableau[i]) L. c Tichit.

length. la boucle for (int i = 0. 2015-2016 POO et Java 8/1 . c Tichit. i++) exploiter(tableau[i]) peut s’´ ecrire plus simplement for (Machin e : tableau) exploiter(e) L. ´ ements de la biblioth` El´ eque Boucle for  am´elior´ee  Si tableau est un tableau de Machin. i < tableau.

it. la boucle for (Iterator it = collection. 2015-2016 POO et Java 8/1 . ) exploiter((Machin)it. i < tableau.next()) L. i++) exploiter(tableau[i]) peut s’´ ecrire plus simplement for (Machin e : tableau) exploiter(e) Si collection est une collection de Machin.length.iterator(). ´ ements de la biblioth` El´ eque Boucle for  am´elior´ee  Si tableau est un tableau de Machin.hasNext(). la boucle for (int i = 0. c Tichit.

la boucle for (int i = 0.iterator(). la boucle for (Iterator it = collection.length. it. ) exploiter((Machin)it. 2015-2016 POO et Java 8/1 . i < tableau.hasNext().next()) peut s’´ ecrire plus simplement for (Machin e : collection) exploiter(e) L. ´ ements de la biblioth` El´ eque Boucle for  am´elior´ee  Si tableau est un tableau de Machin. i++) exploiter(tableau[i]) peut s’´ ecrire plus simplement for (Machin e : tableau) exploiter(e) Si collection est une collection de Machin. c Tichit.

. double s = 0. ) exploiter((Machin)it.. i < tableau. c Tichit... i++) exploiter(tableau[i]) peut s’´ ecrire plus simplement for (Machin e : tableau) exploiter(e) Si collection est une collection de Machin.. ´ ements de la biblioth` El´ eque Boucle for  am´elior´ee  Si tableau est un tableau de Machin..next()) peut s’´ ecrire plus simplement for (Machin e : collection) exploiter(e) Exemple : . . it. for (double x : t) s += x. double[] t = new double[N]. L.hasNext().length. la boucle for (Iterator it = collection. 2015-2016 POO et Java 8/1 .iterator(). la boucle for (int i = 0. .

´ ements de la biblioth` El´ eque Java 5 : les collections g´en´eriques souvent les collections sont homog` enes : leurs ´ el´ ements ont un type commun mais. d´ efinies en toute g´ en´ eralit´ e.. } L. . ces ´ el´ ements sont d´ eclar´ es Object public interface List { void add(int index. Object element). Object get(int index). 2015-2016 POO et Java 9/1 .. c Tichit.

E element). E get(int index). 2015-2016 POO et Java 9/1 . les classes g´ en´ eriques sont un m´ecanisme ajout´e au niveau du texte source pour indiquer au compilateur le type des ´el´ ements en question public interface List<E> { void add(int index. } L. } apparues en Java 5. .. d´ efinies en toute g´ en´ eralit´ e. Object get(int index). .. c Tichit.. Object element). ces ´ el´ ements sont d´ eclar´ es Object public interface List { void add(int index. ´ ements de la biblioth` El´ eque Java 5 : les collections g´en´eriques souvent les collections sont homog` enes : leurs ´ el´ ements ont un type commun mais..

. . les classes g´ en´ eriques sont un m´ecanisme ajout´e au niveau du texte source pour indiquer au compilateur le type des ´el´ ements en question public interface List<E> { void add(int index.. c Tichit. E get(int index). d´ efinies en toute g´ en´ eralit´ e... } apparues en Java 5. Object get(int index). ´ ements de la biblioth` El´ eque Java 5 : les collections g´en´eriques souvent les collections sont homog` enes : leurs ´ el´ ements ont un type commun mais. E element). ces ´ el´ ements sont d´ eclar´ es Object public interface List { void add(int index. Object element). 2015-2016 POO et Java 9/1 . L.... } le code produit n’est pas modifi´ e par l’utilisation de ce m´ ecanisme.

2015-2016 POO et Java 9/1 ... ces ´ el´ ements sont d´ eclar´ es Object public interface List { void add(int index. E get(int index). Object element).. } apparues en Java 5. les classes g´ en´ eriques sont un m´ecanisme ajout´e au niveau du texte source pour indiquer au compilateur le type des ´el´ ements en question public interface List<E> { void add(int index.. c Tichit. Object get(int index)... d´ efinies en toute g´ en´ eralit´ e. E element). . .qui n’est pas obligatoire L. ´ ements de la biblioth` El´ eque Java 5 : les collections g´en´eriques souvent les collections sont homog` enes : leurs ´ el´ ements ont un type commun mais. } le code produit n’est pas modifi´ e par l’utilisation de ce m´ ecanisme. ...

qui n’est pas obligatoire si on ne l’utilise ` a 100% pas le compilateur affiche des avertissements L... E get(int index). ´ ements de la biblioth` El´ eque Java 5 : les collections g´en´eriques souvent les collections sont homog` enes : leurs ´ el´ ements ont un type commun mais.. Object get(int index). c Tichit... Object element). ces ´ el´ ements sont d´ eclar´ es Object public interface List { void add(int index. . 2015-2016 POO et Java 9/1 .. d´ efinies en toute g´ en´ eralit´ e. } le code produit n’est pas modifi´ e par l’utilisation de ce m´ ecanisme.. E element).. les classes g´ en´ eriques sont un m´ecanisme ajout´e au niveau du texte source pour indiquer au compilateur le type des ´el´ ements en question public interface List<E> { void add(int index. } apparues en Java 5. . .

hasNext()) result = result + ((Double)iter. Iterator<Double> iter = suiteDeNombres.next().next()). } L.doubleValue().doubleValue(). c Tichit. ´ ements de la biblioth` El´ eque Java 5 : les collections g´en´eriques L’exemple devient : static double cumul(Collection<Double> suiteDeNombres) { /* Les ´ el´ ements de suiteDeNombres sont des objets Double */ double result = 0. while (iter. 2015-2016 POO et Java 10 / 1 . result = result + iter.iterator(). return result.

return result..println(cumul(donnees)).add(new Double(Math.iterator(). for (int i = 0. i < 5. c Tichit. result = result + iter. System. } L.hasNext()) result = result + ((Double)iter.doubleValue(). while (iter.doubleValue().. Iterator<Double> iter = suiteDeNombres.next(). } appel : public static void main(String[] args) { List<Double> donnees = new ArrayList<Double>(). 2015-2016 POO et Java 10 / 1 .out. i++) donnees. ´ ements de la biblioth` El´ eque Java 5 : les collections g´en´eriques L’exemple devient : static double cumul(Collection<Double> suiteDeNombres) { /* Les ´ el´ ements de suiteDeNombres sont des objets Double */ double result = 0.next()). .random())).

2015-2016 POO et Java 11 / 1 . c Tichit. ´ ements de la biblioth` El´ eque Java 5 : emballage et d´eballage automatiques Autre bonne nouvelle : depuis Java 5 l’emballage et le d´ eballage sont automatiques (ins´ er´ es par le compilateur l` a o` u c’est n´ ecessaire) L.

´ ements de la biblioth`
El´ eque

Java 5 : emballage et d´eballage automatiques

Autre bonne nouvelle : depuis Java 5 l’emballage et le d´
eballage sont automatiques (ins´
er´
es
par le compilateur l`
a o`
u c’est n´
ecessaire)
exemple : si unObjet est d’un type objet et unInt de type int, il est permis d’´
ecrire
unObjet = unInt;

L.
c Tichit, 2015-2016 POO et Java 11 / 1

´ ements de la biblioth`
El´ eque

Java 5 : emballage et d´eballage automatiques

Autre bonne nouvelle : depuis Java 5 l’emballage et le d´
eballage sont automatiques (ins´
er´
es
par le compilateur l`
a o`
u c’est n´
ecessaire)
exemple : si unObjet est d’un type objet et unInt de type int, il est permis d’´
ecrire
unObjet = unInt;
cela est automatiquement traduit par le compilateur par
unObjet = new Integer(unInt);

L.
c Tichit, 2015-2016 POO et Java 11 / 1

´ ements de la biblioth`
El´ eque

Java 5 : emballage et d´eballage automatiques

Autre bonne nouvelle : depuis Java 5 l’emballage et le d´
eballage sont automatiques (ins´
er´
es
par le compilateur l`
a o`
u c’est n´
ecessaire)
exemple : si unObjet est d’un type objet et unInt de type int, il est permis d’´
ecrire
unObjet = unInt;
cela est automatiquement traduit par le compilateur par
unObjet = new Integer(unInt);

eciproquement, il est permis d’´
ecrire
unInt = unObjet;

L.
c Tichit, 2015-2016 POO et Java 11 / 1

2015-2016 POO et Java 11 / 1 . L. il est permis d’´ ecrire unInt = unObjet. il est permis d’´ ecrire unObjet = unInt. R´ eciproquement. ´ ements de la biblioth` El´ eque Java 5 : emballage et d´eballage automatiques Autre bonne nouvelle : depuis Java 5 l’emballage et le d´ eballage sont automatiques (ins´ er´ es par le compilateur l` a o` u c’est n´ ecessaire) exemple : si unObjet est d’un type objet et unInt de type int.intValue(). cela est automatiquement traduit par le compilateur par unObjet = new Integer(unInt). c Tichit. cela est automatiquement traduit par unInt = unObjet.

cela est automatiquement traduit par le compilateur par unObjet = new Integer(unInt). contrainte : il faut que unObjet soit de la classe-enveloppe correspondant au type primitif vis´ e (ici la classe enveloppe est Integer puisque le type primitif est int) L.intValue(). il est permis d’´ ecrire unInt = unObjet. 2015-2016 POO et Java 11 / 1 . cela est automatiquement traduit par unInt = unObjet. ´ ements de la biblioth` El´ eque Java 5 : emballage et d´eballage automatiques Autre bonne nouvelle : depuis Java 5 l’emballage et le d´ eballage sont automatiques (ins´ er´ es par le compilateur l` a o` u c’est n´ ecessaire) exemple : si unObjet est d’un type objet et unInt de type int. R´ eciproquement. il est permis d’´ ecrire unObjet = unInt. c Tichit.

next().doubleValue(). result = result + iter.next(). Iterator<Double> iter = suiteDeNombres. while (iter. ´ ements de la biblioth` El´ eque Java 5 : g´en´ericit´e + (emb|d´eb)allage automatiques L’exemple devient : static double cumul(Collection<Double> suiteDeNombres) { /* Les ´ el´ ements de suiteDeNombres sont des objets Double */ double result = 0. } L. c Tichit.iterator(). return result.hasNext()) result = result + iter. 2015-2016 POO et Java 12 / 1 .

add( new Double(Math.. } L. while (iter. . i < 5. donnees.out.iterator(). Iterator<Double> iter = suiteDeNombres. 2015-2016 POO et Java 12 / 1 . ´ ements de la biblioth` El´ eque Java 5 : g´en´ericit´e + (emb|d´eb)allage automatiques L’exemple devient : static double cumul(Collection<Double> suiteDeNombres) { /* Les ´ el´ ements de suiteDeNombres sont des objets Double */ double result = 0. c Tichit.next(). System.random() ). i++) donnees.add( Math.println(cumul(donnees)).next(). for (int i = 0. return result.hasNext()) result = result + iter.random()) ).. } appel : public static void main(String[] args) { ArrayList<Double> donnees = new ArrayList<Double>(). result = result + iter.doubleValue().

} L. avec collection g´ en´ erique. ´ ements de la biblioth` El´ eque Avec une boucle for am´elior´ee Dernier avatar de notre exemple. for (Double x : suiteDeNombres) result = result + x. 2015-2016 POO et Java 13 / 1 . emballage-d´ eballage automatiques et boucle for am´ elior´ ee ce qui donne : static double cumul(Collection<Double> suiteDeNombres) { /* Les ´ el´ ements de suiteDeNombres sont des objets Double */ double result = 0. c Tichit. return result.

´ ements de la biblioth` El´ eque Table associative collection de paires (cl´ e. valeur) munie d’un  acc` es par les cl´ es  optimis´ e L. c Tichit. 2015-2016 POO et Java 14 / 1 .

2015-2016 POO et Java 14 / 1 . L.. valeur) munie d’un  acc` es par les cl´ es  optimis´ e deux m´ ethodes fondamentales : Interface Map { void put(Object cle. ´ ements de la biblioth` El´ eque Table associative collection de paires (cl´ e. c Tichit. // ajout d’une paire Object get(Object cle).. Object valeur). // recherche de la valeur associ´ ee ` a une cl´ e .

Object valeur). L.. // ajout d’une paire V get(Object cle). valeur) munie d’un  acc` es par les cl´ es  optimis´ e deux m´ ethodes fondamentales : Interface Map { void put(Object cle. c Tichit... 2015-2016 POO et Java 14 / 1 . V valeur). ´ ements de la biblioth` El´ eque Table associative collection de paires (cl´ e. ou. V> { void put(K cle.. depuis Java 5 : Interface Map<K. // recherche de la valeur associ´ ee ` a une cl´ e . // recherche de la valeur associ´ ee ` a une cl´ e . // ajout d’une paire Object get(Object cle).

valeur) munie d’un  acc` es par les cl´ es  optimis´ e deux m´ ethodes fondamentales : Interface Map { void put(Object cle... depuis Java 5 : Interface Map<K. c Tichit. Object valeur). // ajout d’une paire V get(Object cle). // recherche de la valeur associ´ ee ` a une cl´ e . V> { void put(K cle. mais les cl´ es n’y sont pas ordonn´ ees TreeMap : impl´ementation par un arbre binaire de recherche . // ajout d’une paire Object get(Object cle). les cl´ es y sont ordonn´ ees L. V valeur). ou.. // recherche de la valeur associ´ ee ` a une cl´ e . 2015-2016 POO et Java 14 / 1 . ´ ements de la biblioth` El´ eque Table associative collection de paires (cl´ e. un peu moins efficace (mais en O(log n) quand-mˆ eme). la plus efficace.. deux impl´ ementations principales : HashMap : impl´ementation par une  table de hachage  .

2015-2016 POO et Java 15 / 1 . Deux commandes :  ?mot  : pour obtenir la description d’un mot  +mot  : pour ajouter un mot et sa description (demand´ ee ensuite) L. c Tichit. ´ ements de la biblioth` El´ eque Exemple classique ´ Ecriture d’un dictionnaire pour associer des descriptions ` a des mots.

in)..out. c Tichit. ´ ements de la biblioth` El´ eque Exemple classique ´ Ecriture d’un dictionnaire pour associer des descriptions ` a des mots. Map<String. 2015-2016 POO et Java 15 / 1 . description.trim().) { System. String commande.trim().substring(1). String>().nextLine(). Deux commandes :  ?mot  : pour obtenir la description d’un mot  +mot  : pour ajouter un mot et sa description (demand´ ee ensuite) Scanner entree = new Scanner(System. L.print("commande: "). commande = entree. char code = commande.charAt(0). nom. nom = commande. String> repertoire = new HashMap<String. for (.

substring(1). if (description != null) System. 2015-2016 POO et Java 15 / 1 .out.get(nom). nom = commande. ´ ements de la biblioth` El´ eque Exemple classique ´ Ecriture d’un dictionnaire pour associer des descriptions ` a des mots. Deux commandes :  ?mot  : pour obtenir la description d’un mot  +mot  : pour ajouter un mot et sa description (demand´ ee ensuite) Scanner entree = new Scanner(System.) { System. commande = entree. if (code == ’?’) { description = (String) repertoire. Map<String.out. for (.trim(). c Tichit.trim().. String>().charAt(0). nom.print("commande: "). String commande. String> repertoire = new HashMap<String. } L. char code = commande.in). description.println(nom + " : " + description).nextLine().

trim().nextLine(). for (. description = entree. nom..nextLine().trim().out. ´ ements de la biblioth` El´ eque Exemple classique ´ Ecriture d’un dictionnaire pour associer des descriptions ` a des mots.println(nom + " : " + description). repertoire.charAt(0).print("description: ").get(nom). String> repertoire = new HashMap<String.print("commande: "). if (code == ’?’) { description = (String) repertoire. nom = commande.out. } } L. c Tichit.put(nom. String>(). } else if (code == ’+’) { System. if (description != null) System.) { System. commande = entree. 2015-2016 POO et Java 15 / 1 . char code = commande.out.in). Map<String. description.substring(1). String commande. Deux commandes :  ?mot  : pour obtenir la description d’un mot  +mot  : pour ajouter un mot et sa description (demand´ ee ensuite) Scanner entree = new Scanner(System. description).

) L. copy. c Tichit.io : File Identification d’un fichier + gestion  externe  des fichiers (rename. 2015-2016 POO et Java 16 / 1 . delete. etc. contenu des r´ epertoires. ´ ements de la biblioth` El´ eque Entr´ees-sorties Petit choix de classes usuelles du paquetage java.

contenu des r´ epertoires.. ´ ements de la biblioth` El´ eque Entr´ees-sorties Petit choix de classes usuelles du paquetage java. FileInputStream . copy. c Tichit.provenant d’un fichier DataInputStream . 2015-2016 POO et Java 16 / 1 ..transform´ es en donn´ees de types primitifs ObjectInputStream ..io : File Identification d’un fichier + gestion  externe  des fichiers (rename....transform´ es en objets L. etc. delete...) InputStream Flot d’octets en entr´ ee.

2015-2016 POO et Java 16 / 1 .transform´ es en donn´ees de types primitifs ObjectInputStream . c Tichit... ´ ements de la biblioth` El´ eque Entr´ees-sorties Petit choix de classes usuelles du paquetage java. delete.....) InputStream Flot d’octets en entr´ ee.. copy.transform´ es en objets OutputStream Mˆ eme chose. contenu des r´ epertoires. en sortie (mˆ eme genre de sous-classes) L.. FileInputStream .io : File Identification d’un fichier + gestion  externe  des fichiers (rename. etc.provenant d’un fichier DataInputStream .

transform´ es en objets OutputStream Mˆ eme chose. copy. delete.. en sortie (mˆ eme genre de sous-classes) Reader Flot de caract` eres en entr´ ee.) InputStream Flot d’octets en entr´ ee. InputStreamReader .regroup´ es en lignes L..provenant d’un InputStream BufferedReader . contenu des r´ epertoires..provenant d’un fichier DataInputStream ...... etc. ´ ements de la biblioth` El´ eque Entr´ees-sorties Petit choix de classes usuelles du paquetage java.. c Tichit.transform´ es en donn´ees de types primitifs ObjectInputStream ..io : File Identification d’un fichier + gestion  externe  des fichiers (rename.... 2015-2016 POO et Java 16 / 1 . FileInputStream ..

provenant d’un fichier DataInputStream .) InputStream Flot d’octets en entr´ ee. c Tichit.. en sortie PrintWriter avec mise en forme des donn´ ees (ex. : System.regroup´ es en lignes Writer Mˆeme chose. etc.. FileInputStream ...provenant d’un InputStream BufferedReader .transform´ es en donn´ees de types primitifs ObjectInputStream .io : File Identification d’un fichier + gestion  externe  des fichiers (rename. contenu des r´ epertoires. InputStreamReader ...... copy.... 2015-2016 POO et Java 16 / 1 .. ´ ements de la biblioth` El´ eque Entr´ees-sorties Petit choix de classes usuelles du paquetage java. en sortie (mˆ eme genre de sous-classes) Reader Flot de caract` eres en entr´ ee.out) L. delete..transform´ es en objets OutputStream Mˆ eme chose.

c’est de la plomberie. application qui effectue des lectures de lignes readLine() lignes de caractères BufferedReader caractères InputStreamReader octets FileInputStream un fichier (la source des octets) File L.. 2015-2016 POO et Java 17 / 1 . c Tichit. ´ ements de la biblioth` El´ eque Les flots..

BufferedReader br = InputStreamReader new BufferedReader(isr). FileInputStream fis = BufferedReader new FileInputStream(f). donne : readLine() lignes de caractères File f = new File("mydata. InputStreamReader isr = caractères new InputStreamReader(fis). 2015-2016 POO et Java 17 / 1 . ´ ements de la biblioth` El´ eque Les flots. application qui effectue des lectures de lignes Ce qui.. dans le code..txt"). octets FileInputStream un fichier (la source des octets) File L. c’est de la plomberie. c Tichit.

´ ements de la biblioth` El´ eque Les flots. octets ou..txt"). InputStreamReader isr = caractères new InputStreamReader(fis). FileInputStream fis = BufferedReader new FileInputStream(f).txt")))). BufferedReader br = InputStreamReader new BufferedReader(isr). L. application qui effectue des lectures de lignes Ce qui. c’est de la plomberie. dans le code. 2015-2016 POO et Java 17 / 1 .. c Tichit. en version compacte : FileInputStream BufferedReader br = new BufferedReader( un fichier (la source des octets) new InputStreamReader( new FileInputStream( File new File("mydata. donne : readLine() lignes de caractères File f = new File("mydata.

lignes de caractères File f = new File(args[0]). r InputStreamReader octets is FileInputStream un fichier (la source des octets) File f L. caractères BufferedReader br = new BufferedReader(r). application qui effectue public class Listing { des lectures de lignes public static void main(String[] args) { readLine() int n = 0. br Reader r = new InputStreamReader(is). c Tichit. BufferedReader InputStream is = new FileInputStream(f). ´ ements de la biblioth` El´ eque Exemple : lire des lignes Lister un fichier par lignes num´ erot´ ees : Fichier Listing. 2015-2016 POO et Java 18 / 1 .java import java.*.io.

readLine(). 2015-2016 POO et Java 18 / 1 . lignes de caractères File f = new File(args[0]). caractères BufferedReader br = new BufferedReader(r). application qui effectue public class Listing { des lectures de lignes public static void main(String[] args) { readLine() int n = 0.close(). ´ ements de la biblioth` El´ eque Exemple : lire des lignes Lister un fichier par lignes num´ erot´ ees : Fichier Listing.*.printf((++n) + " " + ligne).readLine(). } is FileInputStream is.io. while (ligne != null) { System. br Reader r = new InputStreamReader(is).out. BufferedReader InputStream is = new FileInputStream(f). r InputStreamReader String ligne = br. c Tichit.java import java. un fichier (la source des octets) File f L. octets ligne = br.

readLine().println("fichier inconnu: " + args[0]).printf((++n) + " " + ligne). ´ ements de la biblioth` El´ eque Exemple : lire des lignes Lister un fichier par lignes num´ erot´ ees : Fichier Listing. octets ligne = br. c Tichit. } catch (FileNotFoundException e) { File f System. BufferedReader InputStream is = new FileInputStream(f).err. 2015-2016 POO et Java 18 / 1 .*. un fichier (la source des octets) } catch (ArrayIndexOutOfBoundsException e) { System. } is FileInputStream is.println("erreur apr` es " + n + " lignes"). lignes de caractères try { File f = new File(args[0]). } catch (IOException e) { System. caractères BufferedReader br = new BufferedReader(r). } } } L.readLine(). application qui effectue public class Listing { des lectures de lignes public static void main(String[] args) { readLine() int n = 0. br Reader r = new InputStreamReader(is).err. r InputStreamReader String ligne = br.close().out.io.java import java.err. while (ligne != null) { System.println("emploi: java Listing <fichier>").

if (res != JFileChooser.getSelectedFile().java public class Listing { public static void main(String[] args) { int n = 0. L. try { JFileChooser dial = new JFileChooser(). 2015-2016 POO et Java 19 / 1 .APPROVE OPTION) return. c Tichit. personnalisation de dial int res = dial.showOpenDialog(null). File f = dial. ´ ements de la biblioth` El´ eque Exemple : lire des lignes Une autre mani` esigner le fichier (au lieu de  File f = new File(args[0]) ) : ere de d´ Fichier Listing.

getSelectedFile(). 2015-2016 POO et Java 19 / 1 . try { JFileChooser dial = new JFileChooser().out. if (res != JFileChooser. c Tichit.err.readLine().println("erreur apr`es " + n + " lignes").println("emploi: java Listing <fichier>"). personnalisation de dial int res = dial. } } } L.err.err.APPROVE OPTION) return. InputStream is = new FileInputStream(f).close(). } catch (FileNotFoundException e) { /* cette exception ne sera pas lanc´ ee */ System.readLine().println("fichier inconnu"). while (ligne != null) { System.println((++n) + " " + ligne). } catch (ArrayIndexOutOfBoundsException e) { System. File f = dial. ligne = br. String ligne = br. Reader r = new InputStreamReader(is). } is. } catch (IOException e) { System. BufferedReader br = new BufferedReader(r). ´ ements de la biblioth` El´ eque Exemple : lire des lignes Une autre mani` esigner le fichier (au lieu de  File f = new File(args[0]) ) : ere de d´ Fichier Listing.showOpenDialog(null).java public class Listing { public static void main(String[] args) { int n = 0.

. c Tichit. 2015-2016 POO et Java 20 / 1 ..0 vitesse 145 largeur 1.. ´ ements de la biblioth` El´ eque Exemple : lire des unites lexicales Exemple : lecture d’un fichier de texte form´ e de couples  nom ..40 longueur 3.0 vitesse 145 largeur 1.25 ... nombre  comme .. qui lit ces couples et en fait une table associative clé valeur poids 1800.25 . poids 1800. L..40 longueur 3. ´ ecrivons une m´ ethode Map lireInfos(File fichier)..

Map lireInfos(File fichier) throws IOException { HashMap result = new HashMap(). 2015-2016 POO et Java 21 / 1 .. c Tichit. ´ ements de la biblioth` El´ eque Exemple : lire des unites lexicales Exemple : lecture de couples  nom.. L. valeur  et rangement dans une table associative : Extrait de code .

etc. Reader r = new InputStreamReader(is). ´ ements de la biblioth` El´ eque Exemple : lire des unites lexicales Exemple : lecture de couples  nom. 2015-2016 POO et Java 21 / 1 .. valeur  et rangement dans une table associative : Extrait de code . /* personnalisation ´ eres  blancs .. Map lireInfos(File fichier) throws IOException { HashMap result = new HashMap(). InputStream is = new FileInputStream(fichier). c Tichit.) */ eventuelle de tokenizer (quels sont les caract` L. StreamTokenizer tokenizer = new StreamTokenizer(r).

valeur  et rangement dans une table associative : Extrait de code . /* personnalisation ´ eres  blancs . etc.. L. 2015-2016 POO et Java 21 / 1 .) */ eventuelle de tokenizer (quels sont les caract` for (.. if (unite == StreamTokenizer. StreamTokenizer tokenizer = new StreamTokenizer(r). InputStream is = new FileInputStream(fichier).TT EOF) break. ´ ements de la biblioth` El´ eque Exemple : lire des unites lexicales Exemple : lecture de couples  nom. Map lireInfos(File fichier) throws IOException { HashMap result = new HashMap().) { int unite = tokenizer. c Tichit..nextToken(). Reader r = new InputStreamReader(is).

. if (unite != StreamTokenizer. 2015-2016 POO et Java 21 / 1 . ´ ements de la biblioth` El´ eque Exemple : lire des unites lexicales Exemple : lecture de couples  nom. c Tichit.. /* personnalisation ´ eres  blancs . Reader r = new InputStreamReader(is).TT WORD) throw new IOException("mot attendu"). Map lireInfos(File fichier) throws IOException { HashMap result = new HashMap(). StreamTokenizer tokenizer = new StreamTokenizer(r). L. if (unite == StreamTokenizer. InputStream is = new FileInputStream(fichier).sval.) */ eventuelle de tokenizer (quels sont les caract` for (.) { int unite = tokenizer.TT EOF) break. etc. String cle = tokenizer. valeur  et rangement dans une table associative : Extrait de code ..nextToken().

/* personnalisation ´ eres  blancs . Map lireInfos(File fichier) throws IOException { HashMap result = new HashMap().nextToken().) { int unite = tokenizer.TT EOF) break. double valeur = tokenizer. c Tichit. if (unite != StreamTokenizer.nextToken(). valeur  et rangement dans une table associative : Extrait de code . StreamTokenizer tokenizer = new StreamTokenizer(r). if (unite == StreamTokenizer. Reader r = new InputStreamReader(is).... 2015-2016 POO et Java 21 / 1 . unite = tokenizer. if (unite != StreamTokenizer.TT WORD) throw new IOException("mot attendu").TT NUMBER) throw new IOException("nombre attendu"). etc. InputStream is = new FileInputStream(fichier). ´ ements de la biblioth` El´ eque Exemple : lire des unites lexicales Exemple : lecture de couples  nom.) */ eventuelle de tokenizer (quels sont les caract` for (.nval.sval. L. String cle = tokenizer.

TT EOF) break. double valeur = tokenizer. Map lireInfos(File fichier) throws IOException { HashMap result = new HashMap(). String cle = tokenizer.. /* personnalisation ´ eres  blancs .. if (unite == StreamTokenizer.nval..put(cle. Reader r = new InputStreamReader(is). unite = tokenizer. result. } return result.) */ eventuelle de tokenizer (quels sont les caract` for (.TT NUMBER) throw new IOException("nombre attendu").. StreamTokenizer tokenizer = new StreamTokenizer(r). 2015-2016 POO et Java 21 / 1 . } .) { int unite = tokenizer. ´ ements de la biblioth` El´ eque Exemple : lire des unites lexicales Exemple : lecture de couples  nom.TT WORD) throw new IOException("mot attendu"). L.nextToken(). if (unite != StreamTokenizer. c Tichit. if (unite != StreamTokenizer. new Double(valeur)).sval. valeur  et rangement dans une table associative : Extrait de code . InputStream is = new FileInputStream(fichier). etc.nextToken()..

double p) { ref = r. ´ ements de la biblioth` El´ eque Autre exemple : mise en forme de donn´ees Afficher un listing avec des colonnes bien align´ ees Fichier Article. } } L. c Tichit.java public class Article { int ref. String denom. 2015-2016 POO et Java 22 / 1 . public Article(int r. prix = p. String d. double prix. denom = d.

85). double prix. denom = d.java public class TestFormat { public static void main(String[] args) { Article[] maListe = { new Article(75.. imprimer(maListe). double p) { ref = r. 18). 2. public Article(int r.. 0. "Javel 1L". prix = p. } } Fichier TestFormat. String d. new Article(24085. }.java public class Article { int ref. String denom. "Savon ` a barbe". ´ ements de la biblioth` El´ eque Autre exemple : mise en forme de donn´ees Afficher un listing avec des colonnes bien align´ ees Fichier Article. "Gillette 6 lames x 5". } static void imprimer(Article[] liste) { c’est ici qu’il faut r´ efl´ echir. new Article(125. c Tichit.40). 2015-2016 POO et Java 22 / 1 . } } L.

##0.*. } .java import java.00"). c Tichit. 2015-2016 POO et Java 23 / 1 . ´ ements de la biblioth` El´ eque Exemple : mise en forme de donn´ees Premi` ere version Fichier TestFormat.format(liste[i].. i++) System.length. public class TestFormat { ..ref + " | " + liste[i]. for (int i = 0.out.text.println(liste[i].. i < liste. } L.prix)).. static void imprimer(Article[] liste) { NumberFormat fd = new DecimalFormat("#.denom + " | " + fd.

println(liste[i]..prix)).length. } R´ esultat obtenu (pas terrible !) : 75 | Savon ` a barbe | 2.00").00 125 | Javel 1L | 0.out. ´ ements de la biblioth` El´ eque Exemple : mise en forme de donn´ees Premi` ere version Fichier TestFormat.. 2015-2016 POO et Java 23 / 1 . for (int i = 0. public class TestFormat { . } .*.java import java.ref + " | " + liste[i]. i++) System. static void imprimer(Article[] liste) { NumberFormat fd = new DecimalFormat("#.##0.85 L.text.denom + " | " + fd. c Tichit.. i < liste.40 24085 | Gillette 6 lames x 5 | 18.format(liste[i]..

.prix). liste[i].2f%n". liste[i].. 2015-2016 POO et Java 24 / 1 ...out. i++) System. liste[i]. static void imprimer(Article[] liste) { for (int i = 0. c Tichit.denom. ´ ements de la biblioth` El´ eque Exemple : mise en forme de donn´ees Meilleure version (Java 5) Fichier TestFormat.printf("%8d | %-30s | %8.ref.length. i < liste. } L.java public class TestFormat { . } .

2015-2016 POO et Java 24 / 1 .denom. i < liste.length. liste[i].java public class TestFormat { .. } R´ esultat obtenu : 75 | Savon ` a barbe | 2.2f%n".prix). ´ ements de la biblioth` El´ eque Exemple : mise en forme de donn´ees Meilleure version (Java 5) Fichier TestFormat.00 125 | Javel 1L | 0. liste[i].. liste[i].printf("%8d | %-30s | %8.. c Tichit..85 L. i++) System.40 24085 | Gillette 6 lames x 5 | 18. } . static void imprimer(Article[] liste) { for (int i = 0.out.ref.

util.regex L. c Tichit. 2015-2016 POO et Java 25 / 1 . ´ ements de la biblioth` El´ eque Expressions r´eguli`eres expressions r´eguli`eres en Java : paquetage java.

´ ements de la biblioth` El´ eque Expressions r´eguli`eres expressions r´eguli`eres en Java : paquetage java.regex deux classes : Pattern : repr´esentation  compil´ee  d’une expression r´eguli`ere Matcher : variables et m´ethodes pour  faire travailler  une expression r´eguli`ere sur un texte donn´e L. 2015-2016 POO et Java 25 / 1 .util. c Tichit.

´ ements de la biblioth` El´ eque Expressions r´eguli`eres expressions r´eguli`eres en Java : paquetage java.univ-mrs.regex deux classes : Pattern : repr´esentation  compil´ee  d’une expression r´eguli`ere Matcher : variables et m´ethodes pour  faire travailler  une expression r´eguli`ere sur un texte donn´e exemple : extraire les liens d’une page html. repr´esent´es par des balises : <a href="http://www.. > L. 2015-2016 POO et Java 25 / 1 . c Tichit..fr" .luminy.util.

luminy. encadrés par " L..fr" . un ou plusieurs blancs . ´ ements de la biblioth` El´ eque Expressions r´eguli`eres expressions r´eguli`eres en Java : paquetage java.... 2015-2016 POO et Java 25 / 1 ...univ-mrs. c Tichit. > l’expression r´eguli`ere correspondante est : <a[ \t\n]+href="[^"]+" plusieurs caractères autres que " . repr´esent´es par des balises : <a href="http://www.util.regex deux classes : Pattern : repr´esentation  compil´ee  d’une expression r´eguli`ere Matcher : variables et m´ethodes pour  faire travailler  une expression r´eguli`ere sur un texte donn´e exemple : extraire les liens d’une page html.

sous forme de chaˆıne de caract`eres Java : "<a[ \\t\\n]+href=\"[^\"]+\"" L. encadrés par " soit.util.fr" .regex deux classes : Pattern : repr´esentation  compil´ee  d’une expression r´eguli`ere Matcher : variables et m´ethodes pour  faire travailler  une expression r´eguli`ere sur un texte donn´e exemple : extraire les liens d’une page html. > l’expression r´eguli`ere correspondante est : <a[ \t\n]+href="[^"]+" plusieurs caractères autres que " .univ-mrs... c Tichit. ´ ements de la biblioth` El´ eque Expressions r´eguli`eres expressions r´eguli`eres en Java : paquetage java.. un ou plusieurs blancs ..luminy. 2015-2016 POO et Java 25 / 1 .. repr´esent´es par des balises : <a href="http://www..

lecteur. Reader lecteur = new FileReader(fic). } catch (IOException e) { e.length()].printStackTrace(). c Tichit.java public class TestExpressionsRegulieres { public static void main(String[] args) { String texte = null. 2015-2016 POO et Java 26 / 1 . return. exemple Version de base : Fichier TestExpressionsRegulieres. ´ ements de la biblioth` El´ eque Expressions r´eguli`eres.read(tmp). } L.close(). /* Obtention du texte ` a analyser */ try { File fic = new File(args[0]). char[] tmp = new char[(int) fic. texte = new String(tmp). lecteur.

´ ements de la biblioth`
El´ eque

Expressions r´eguli`eres, exemple

Version de base :

Fichier TestExpressionsRegulieres.java

public class TestExpressionsRegulieres { /* L’expression r´
eguli`
ere */
String expReg =
public static void main(String[] args) { "<a[ \\t\\n]+href=\"[^\"]+\"";
String texte = null; Pattern motif =
Pattern.compile(expReg);
/* Obtention du texte `
a analyser */
try {
File fic = new File(args[0]);
char[] tmp =
new char[(int) fic.length()];
Reader lecteur =
new FileReader(fic);
lecteur.read(tmp);
lecteur.close();
texte = new String(tmp);
} catch (IOException e) {
e.printStackTrace();
return;
}

L.
c Tichit, 2015-2016 POO et Java 26 / 1

´ ements de la biblioth`
El´ eque

Expressions r´eguli`eres, exemple

Version de base :

Fichier TestExpressionsRegulieres.java

public class TestExpressionsRegulieres { /* L’expression r´
eguli`
ere */
String expReg =
public static void main(String[] args) { "<a[ \\t\\n]+href=\"[^\"]+\"";
String texte = null; Pattern motif =
Pattern.compile(expReg);
/* Obtention du texte `
a analyser */
try { /* Analyse */
File fic = new File(args[0]); Matcher recon = motif.matcher(texte);
char[] tmp =
new char[(int) fic.length()]; int position = 0;
Reader lecteur = while (recon.find(position)) {
new FileReader(fic); String s = texte.substring(
lecteur.read(tmp); recon.start(), recon.end());
lecteur.close(); System.out.println(s);
texte = new String(tmp); position = recon.end();
} catch (IOException e) { }
e.printStackTrace(); }
return; }
}

L.
c Tichit, 2015-2016 POO et Java 26 / 1

´ ements de la biblioth`
El´ eque

Expressions r´eguli`eres, exemple

Version de base :

Fichier TestExpressionsRegulieres.java

public class TestExpressionsRegulieres { /* L’expression r´
eguli`
ere */
String expReg =
public static void main(String[] args) { "<a[ \\t\\n]+href=\"[^\"]+\"";
String texte = null; Pattern motif =
Pattern.compile(expReg);
/* Obtention du texte `
a analyser */
try { /* Analyse */
File fic = new File(args[0]); Matcher recon = motif.matcher(texte);
char[] tmp =
new char[(int) fic.length()]; int position = 0;
Reader lecteur = while (recon.find(position)) {
new FileReader(fic); String s = texte.substring(
lecteur.read(tmp); recon.start(), recon.end());
lecteur.close(); System.out.println(s);
texte = new String(tmp); position = recon.end();
} catch (IOException e) { }
e.printStackTrace(); }
return; }
}

Affichage obtenu

<a href="http://www.pagesjaunes.fr/pb.cgi?"
<a href="http://annuaire.univ-mrs.fr/"
<a href="http://localhost:805/"
<a href="http://www.lemonde.fr/"
etc.

L.
c Tichit, 2015-2016 POO et Java 26 / 1

compile(expReg).println(s).length()].end(). texte = new String(tmp). Matcher recon = motif. } catch (IOException e) { } e. } } L.close(). lecteur.find(position)) { new FileReader(fic).read(tmp). Reader lecteur = while (recon. char[] tmp = new char[(int) fic. String s = texte. exemple Am´ elioration : Fichier TestExpressionsRegulieres. ´ ements de la biblioth` El´ eque Expressions r´eguli`eres. /* Obtention du texte ` a analyser */ try { /* Analyse */ File fic = new File(args[0]). } return.start(1). position = recon. int position = 0.end(1)). recon. System. 2015-2016 POO et Java 27 / 1 . Pattern motif = Pattern.out.substring( lecteur.printStackTrace().matcher(texte).java public class TestExpressionsRegulieres { /* L’expression r´ eguli` ere */ String expReg = public static void main(String[] args) { "<a[ \\t\\n]+href=\"([^\"]+)\"". recon. c Tichit. String texte = null.

close(). } } Affichage obtenu http://www.compile(expReg).find(position)) { new FileReader(fic).end(). lecteur.java public class TestExpressionsRegulieres { /* L’expression r´ eguli` ere */ String expReg = public static void main(String[] args) { "<a[ \\t\\n]+href=\"([^\"]+)\"". /* Obtention du texte ` a analyser */ try { /* Analyse */ File fic = new File(args[0]).substring( lecteur. texte = new String(tmp).length()].cgi? http://annuaire.out. System. recon. String texte = null. char[] tmp = new char[(int) fic. Matcher recon = motif. Reader lecteur = while (recon.println(s).read(tmp). position = recon.end(1)).fr/pb.univ-mrs.fr/ etc.start(1). } catch (IOException e) { } e.fr/ http://localhost:805/ http://www. } return. int position = 0.matcher(texte). c Tichit.printStackTrace(). String s = texte. ´ ements de la biblioth` El´ eque Expressions r´eguli`eres.lemonde. Pattern motif = Pattern. recon. exemple Am´ elioration : Fichier TestExpressionsRegulieres. L. 2015-2016 POO et Java 27 / 1 .pagesjaunes.