Cours 5: Quelques el ements de la biblioth'eque standard

La page est créée Jean-Pierre Leger
 
CONTINUER À LIRE
La programmation orientée objets
                           et le langage Java

                              Master BBSG 2
                              Laurent Tichit
Département Informatique et Interactions, Faculté des Sciences de Luminy

    Cours 5: Quelques éléments de la
         bibliothèque standard

c L. Tichit, 2015-2016            POO et Java                                1/1
Éléments de la bibliothèque

 Types énumérés

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

        c L. Tichit, 2015-2016                                     POO et Java                     2/1
Éléments de la bibliothèque

 Types énumérés

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

        c L. Tichit, 2015-2016                                     POO et Java                     2/1
Éléments de la bibliothèque

 Types énumérés

Le besoin : manipuler des ensembles finis de données conventionnelles :
                                 { lundi, mardi, ... dimanche }, { nord, sud, est, ouest }, etc.
Ces données
      sont très symboliques
      sont atomiques (simples, comme des entiers)

        c L. Tichit, 2015-2016                                     POO et Java                     2/1
Éléments de la bibliothèque

 Types énumérés

Le besoin : manipuler des ensembles finis de données conventionnelles :
                                 { lundi, mardi, ... dimanche }, { nord, sud, est, ouest }, etc.
Ces données
      sont très symboliques
      sont atomiques (simples, comme des entiers)
      forment des ensembles finis

        c L. Tichit, 2015-2016                                     POO et Java                     2/1
Éléments de la bibliothèque

 Types énumérés

Le besoin : manipuler des ensembles finis de données conventionnelles :
                                 { lundi, mardi, ... dimanche }, { nord, sud, est, ouest }, etc.
Ces données
      sont très symboliques
      sont atomiques (simples, comme des entiers)
      forment des ensembles finis
      forment des ensembles disjoints

        c L. Tichit, 2015-2016                                     POO et Java                     2/1
Éléments de la bibliothèque

 Types énumérés

Le besoin : manipuler des ensembles finis de données conventionnelles :
                                 { lundi, mardi, ... dimanche }, { nord, sud, est, ouest }, etc.
Ces données
      sont très symboliques
      sont atomiques (simples, comme des entiers)
      forment des ensembles finis
      forment des ensembles disjoints

  Jusqu’à Java 1.4
  public class JourSemaine {
      public static final int               LUNDI = 0;
      public static final int               MARDI = 1;
      public static final int               MERCREDI = 2;
      public static final int               JEUDI = 3;
      public static final int               VENDREDI = 4;
      public static final int               SAMEDI = 5;
      public static final int               DIMANCHE = 6;
  }

        c L. Tichit, 2015-2016                                     POO et Java                     2/1
Éléments de la bibliothèque

 Types énumérés

Le besoin : manipuler des ensembles finis de données conventionnelles :
                                 { lundi, mardi, ... dimanche }, { nord, sud, est, ouest }, etc.
Ces données
      sont très symboliques
      sont atomiques (simples, comme des entiers)
      forment des ensembles finis
      forment des ensembles disjoints

  Jusqu’à Java 1.4
  public class JourSemaine {                                                     A partir de Java 5
      public static final int               LUNDI = 0;
      public static final int               MARDI = 1;                           public enum JourSemaine {
      public static final int               MERCREDI = 2;                            LUNDI, MARDI, MERCREDI, JEUDI,
      public static final int               JEUDI = 3;                                       VENDREDI, SAMEDI, DIMANCHE
      public static final int               VENDREDI = 4;                        }
      public static final int               SAMEDI = 5;
      public static final int               DIMANCHE = 6;
  }

        c L. Tichit, 2015-2016                                     POO et Java                                            2/1
Éléments de la bibliothèque

 Types énumérés

  Jusqu’à Java 1.4
  public class JourSemaine {                                            A partir de Java 5
      public static final int      LUNDI = 0;
      public static final int      MARDI = 1;                           public enum JourSemaine {
      public static final int      MERCREDI = 2;                            LUNDI, MARDI, MERCREDI, JEUDI,
      public static final int      JEUDI = 3;                                       VENDREDI, SAMEDI, DIMANCHE
      public static final int      VENDREDI = 4;                        }
      public static final int      SAMEDI = 5;
      public static final int      DIMANCHE = 6;
  }

Emploi. Dans le premier cas :
    int jour;
    ...
    jour = JourSemaine.MERCREDI;

        c L. Tichit, 2015-2016                            POO et Java                                            3/1
Éléments de la bibliothèque

 Types énumérés

  Jusqu’à Java 1.4
  public class JourSemaine {                                            A partir de Java 5
      public static final int      LUNDI = 0;
      public static final int      MARDI = 1;                           public enum JourSemaine {
      public static final int      MERCREDI = 2;                            LUNDI, MARDI, MERCREDI, JEUDI,
      public static final int      JEUDI = 3;                                       VENDREDI, SAMEDI, DIMANCHE
      public static final int      VENDREDI = 4;                        }
      public static final int      SAMEDI = 5;
      public static final int      DIMANCHE = 6;
  }

Emploi. Dans le premier cas :
    int jour;
    ...
    jour = JourSemaine.MERCREDI;

Dans le second :
    JourSemaine jour;
    ...
    jour = JourSemaine.MERCREDI;

        c L. Tichit, 2015-2016                            POO et Java                                            3/1
Éléments de la bibliothèque

Méthodes des types énumérés

String toString() – exemple : JourSemaine.LUNDI.toString() → "LUNDI"

      c L. Tichit, 2015-2016                            POO et Java    4/1
Éléments de la bibliothèque

Méthodes des types énumérés

String toString() – exemple : JourSemaine.LUNDI.toString() → "LUNDI"
static JourSemaine valueOf(String nom) – réciproque de la précédente :
               JourSemaine.valueOf("MARDI") → JourSemaine.MARDI

       c L. Tichit, 2015-2016                            POO et Java        4/1
Éléments de la bibliothèque

Méthodes des types énumérés

String toString() – exemple : JourSemaine.LUNDI.toString() → "LUNDI"
static JourSemaine valueOf(String nom) – réciproque de la précédente :
               JourSemaine.valueOf("MARDI") → JourSemaine.MARDI
int ordinal() – rang (dans l’ordre de la déclaration) :
              JourSemaine.MERCREDI.ordinal() → 2

       c L. Tichit, 2015-2016                            POO et Java        4/1
Éléments de la bibliothèque

Méthodes des types énumérés

String toString() – exemple : JourSemaine.LUNDI.toString() → "LUNDI"
static JourSemaine valueOf(String nom) – réciproque de la précédente :
               JourSemaine.valueOf("MARDI") → JourSemaine.MARDI
int ordinal() – rang (dans l’ordre de la déclaration) :
              JourSemaine.MERCREDI.ordinal() → 2
static JourSemaine[] values() – tableau contenant toutes les valeurs du type :
               JourSemaine.LUNDI ... JourSemaine.DIMANCHE

       c L. Tichit, 2015-2016                            POO et Java             4/1
Éléments de la bibliothèque

Méthodes des types énumérés

String toString() – exemple : JourSemaine.LUNDI.toString() → "LUNDI"
static JourSemaine valueOf(String nom) – réciproque de la précédente :
               JourSemaine.valueOf("MARDI") → JourSemaine.MARDI
int ordinal() – rang (dans l’ordre de la déclaration) :
              JourSemaine.MERCREDI.ordinal() → 2
static JourSemaine[] values() – tableau contenant toutes les valeurs du type :
               JourSemaine.LUNDI ... JourSemaine.DIMANCHE

Exemple : trouver le jour suivant un jour donné :
   public enum JourSemaine {
       LUNDI, MARDI, MERCREDI, JEUDI, VENDREDI, SAMEDI, DIMANCHE;

        public JourSemaine lendemain() {
            return values()[(ordinal() + 1) % values().length];
        }
   }

       c L. Tichit, 2015-2016                            POO et Java             4/1
Éléments de la bibliothèque

Collections et dictionnaires

                                                                          interfaces classes
Collection                     collection la plus générale
                                       void add(Object element)
                                       int size()
                                       boolean contains(Object valeur)

      c L. Tichit, 2015-2016                                POO et Java                        5/1
Éléments de la bibliothèque

Collections et dictionnaires

                                                                              interfaces classes
Collection                     collection la plus générale
                                       void add(Object element)
                                       int size()
                                       boolean contains(Object valeur)
   List                        une collection qu’on peut voir comme une séquence
                                       void add(int index, Object element)
                                       Object get(int index)

      c L. Tichit, 2015-2016                                POO et Java                            5/1
Éléments de la bibliothèque

Collections et dictionnaires

                                                                                interfaces classes
Collection                     collection la plus générale
                                       void add(Object element)
                                       int size()
                                       boolean contains(Object valeur)
   List                        une collection qu’on peut voir comme une séquence
                                       void add(int index, Object element)
                                       Object get(int index)
      ArrayList                tableau (accès indexé optimisé) qui grandit automatiquement

      c L. Tichit, 2015-2016                                 POO et Java                             5/1
Éléments de la bibliothèque

Collections et dictionnaires

                                                                                interfaces classes
Collection                     collection la plus générale
                                       void add(Object element)
                                       int size()
                                       boolean contains(Object valeur)
   List                        une collection qu’on peut voir comme une séquence
                                       void add(int index, Object element)
                                       Object get(int index)
      ArrayList                tableau (accès indexé optimisé) qui grandit automatiquement
      Vector                   Idem. De plus, les Vector sont  synchronisés 

      c L. Tichit, 2015-2016                                 POO et Java                             5/1
Éléments de la bibliothèque

Collections et dictionnaires

                                                                                   interfaces classes
Collection                     collection la plus générale
                                       void add(Object element)
                                       int size()
                                       boolean contains(Object valeur)
   List                        une collection qu’on peut voir comme une séquence
                                       void add(int index, Object element)
                                       Object get(int index)
      ArrayList                tableau (accès indexé optimisé) qui grandit automatiquement
      Vector                   Idem. De plus, les Vector sont  synchronisés 
      LinkedList               liste chaı̂née (optimise les insertions et suppressions internes)

      c L. Tichit, 2015-2016                                 POO et Java                                5/1
Éléments de la bibliothèque

Collections et dictionnaires

                                                                                   interfaces classes
Collection                     collection la plus générale
                                       void add(Object element)
                                       int size()
                                       boolean contains(Object valeur)
   List                        une collection qu’on peut voir comme une séquence
                                       void add(int index, Object element)
                                       Object get(int index)
         ArrayList             tableau (accès indexé optimisé) qui grandit automatiquement
         Vector                Idem. De plus, les Vector sont  synchronisés 
         LinkedList            liste chaı̂née (optimise les insertions et suppressions internes)

   Set                         collection sans répétition (optimise le test d’appartenance)

      c L. Tichit, 2015-2016                                 POO et Java                                5/1
Éléments de la bibliothèque

Collections et dictionnaires

                                                                                   interfaces classes
Collection                     collection la plus générale
                                       void add(Object element)
                                       int size()
                                       boolean contains(Object valeur)
   List                        une collection qu’on peut voir comme une séquence
                                       void add(int index, Object element)
                                       Object get(int index)
         ArrayList             tableau (accès indexé optimisé) qui grandit automatiquement
         Vector                Idem. De plus, les Vector sont  synchronisés 
         LinkedList            liste chaı̂née (optimise les insertions et suppressions internes)

   Set                         collection sans répétition (optimise le test d’appartenance)
         HashSet               efficacité maximale
         TreeSet               les éléments doivent être ordonnés ; le parcours respecte cet ordre

      c L. Tichit, 2015-2016                                 POO et Java                                 5/1
Éléments de la bibliothèque

Collections et dictionnaires

                                                                                      interfaces classes
Collection                       collection la plus générale
                                         void add(Object element)
                                         int size()
                                         boolean contains(Object valeur)
      List                       une collection qu’on peut voir comme une séquence
                                         void add(int index, Object element)
                                         Object get(int index)
            ArrayList            tableau (accès indexé optimisé) qui grandit automatiquement
            Vector               Idem. De plus, les Vector sont  synchronisés 
            LinkedList           liste chaı̂née (optimise les insertions et suppressions internes)

      Set                        collection sans répétition (optimise le test d’appartenance)
            HashSet              efficacité maximale
            TreeSet              les éléments doivent être ordonnés ; le parcours respecte cet ordre

Map                              table associative, faite de couples (clé, valeur)

        c L. Tichit, 2015-2016                                 POO et Java                                 5/1
Éléments de la bibliothèque

Collections et dictionnaires

                                                                                        interfaces classes
Collection                       collection la plus générale
                                         void add(Object element)
                                         int size()
                                         boolean contains(Object valeur)
      List                       une collection qu’on peut voir comme une séquence
                                         void add(int index, Object element)
                                         Object get(int index)
            ArrayList            tableau (accès indexé optimisé) qui grandit automatiquement
            Vector               Idem. De plus, les Vector sont  synchronisés 
            LinkedList           liste chaı̂née (optimise les insertions et suppressions internes)

      Set                        collection sans répétition (optimise le test d’appartenance)
            HashSet              efficacité maximale
            TreeSet              les éléments doivent être ordonnés ; le parcours respecte cet ordre

Map                              table associative, faite de couples (clé, valeur)
      HashMap                    efficacité maximale
      TreeMap                    les clés doivent être ordonnées ; le parcours reflète l’ordre

        c L. Tichit, 2015-2016                                 POO et Java                                   5/1
Éléments de la bibliothèque

Parcours des collections

  Pour parcourir une collection on utilise un itérateur :

  public interface Iterator {
      boolean hasNext();
              renvoie true si l’itération n’est pas finie,
              à la manière de  i < tab.length 
      Object next();
              renvoie le prochain élément et fait avancer l’itération,
              à la manière de  tab[i++] 
      void remove();
              supprime l’élément en cours (peu utile, souvent inopérant)
  }

    c L. Tichit, 2015-2016                            POO et Java             6/1
Éléments de la bibliothèque

Parcours des collections

  Pour parcourir une collection on utilise un itérateur :

  public interface Iterator {
      boolean hasNext();
              renvoie true si l’itération n’est pas finie,
              à la manière de  i < tab.length 
      Object next();
              renvoie le prochain élément et fait avancer l’itération,
              à la manière de  tab[i++] 
      void remove();
              supprime l’élément en cours (peu utile, souvent inopérant)
  }

  les itérateurs sont créés et initialisés par les collections elles-mêmes :

  Iterator iter = uneCollection.iterator();
               création d’une itération sur les éléments de uneCollection

    c L. Tichit, 2015-2016                             POO et Java                  6/1
Éléments de la bibliothèque

Parcours des collections

  Exemple. La méthode cumul additionne les éléments d’une collection de nombres :
     double cumul(Collection suiteDeNombres) {
             /* Les éléments de suiteDeNombres doivent être des objets Double */

    c L. Tichit, 2015-2016                            POO et Java                      7/1
Éléments de la bibliothèque

Parcours des collections

  Exemple. La méthode cumul additionne les éléments d’une collection de nombres :
     double cumul(Collection suiteDeNombres) {
             /* Les éléments de suiteDeNombres doivent être des objets Double */
         double result = 0;
         Iterator iter = suiteDeNombres.iterator();
         while (iter.hasNext())
             result = result +               iter.next()                     ;
         return result;
     }

    c L. Tichit, 2015-2016                            POO et Java                      7/1
Éléments de la bibliothèque

Parcours des collections

  Exemple. La méthode cumul additionne les éléments d’une collection de nombres :
     double cumul(Collection suiteDeNombres) {
             /* Les éléments de suiteDeNombres doivent être des objets Double */
         double result = 0;
         Iterator iter = suiteDeNombres.iterator();
         while (iter.hasNext())
             result = result + (Double) iter.next()                          ;
         return result;
     }

    c L. Tichit, 2015-2016                            POO et Java                      7/1
Éléments de la bibliothèque

Parcours des collections

  Exemple. La méthode cumul additionne les éléments d’une collection de nombres :
     double cumul(Collection suiteDeNombres) {
             /* Les éléments de suiteDeNombres doivent être des objets Double */
         double result = 0;
         Iterator iter = suiteDeNombres.iterator();
         while (iter.hasNext())
             result = result + ((Double) iter.next()).doubleValue();
         return result;
     }

    c L. Tichit, 2015-2016                            POO et Java                      7/1
Éléments de la bibliothèque

Parcours des collections

  Exemple. La méthode cumul additionne les éléments d’une collection de nombres :
     double cumul(Collection suiteDeNombres) {
             /* Les éléments de suiteDeNombres doivent être des objets Double */
         double result = 0;
         Iterator iter = suiteDeNombres.iterator();
         while (iter.hasNext())
             result = result + ((Double) iter.next()).doubleValue();
         return result;
     }

  essai de cette méthode :
     void test() {
         List donnees = new ArrayList();
         for (int i = 0; i < 5; i++)
             donnees.add(new Double(Math.random()));
         System.out.println(cumul(donnees));
         ...
     }

    c L. Tichit, 2015-2016                             POO et Java                     7/1
Éléments de la bibliothèque

Parcours des collections

  Exemple. La méthode cumul additionne les éléments d’une collection de nombres :
     double cumul(Collection suiteDeNombres) {
             /* Les éléments de suiteDeNombres doivent être des objets Double */
         double result = 0;
         Iterator iter = suiteDeNombres.iterator();
         while (iter.hasNext())
             result = result + ((Double) iter.next()).doubleValue();
         return result;
     }

  essai de cette méthode :
     void test() {
         List donnees = new ArrayList();
         for (int i = 0; i < 5; i++)
             donnees.add(new Double(Math.random()));
         System.out.println(cumul(donnees));
         ...
     }

  affichage obtenu
      2.18124

    c L. Tichit, 2015-2016                             POO et Java                     7/1
Éléments de la bibliothèque

Boucle for                  améliorée 

  Si tableau est un tableau de Machin, la boucle
            for (int i = 0; i < tableau.length; i++)
                exploiter(tableau[i])

    c L. Tichit, 2015-2016                                 POO et Java   8/1
Éléments de la bibliothèque

Boucle for                  améliorée 

  Si tableau est un tableau de Machin, la boucle
            for (int i = 0; i < tableau.length; i++)
                exploiter(tableau[i])
  peut s’écrire plus simplement
            for (Machin e : tableau)
                exploiter(e)

    c L. Tichit, 2015-2016                                 POO et Java   8/1
Éléments de la bibliothèque

Boucle for                  améliorée 

  Si tableau est un tableau de Machin, la boucle
            for (int i = 0; i < tableau.length; i++)
                exploiter(tableau[i])
  peut s’écrire plus simplement
            for (Machin e : tableau)
                exploiter(e)
  Si collection est une collection de Machin, la boucle
            for (Iterator it = collection.iterator(); it.hasNext(); )
                exploiter((Machin)it.next())

    c L. Tichit, 2015-2016                                 POO et Java   8/1
Éléments de la bibliothèque

Boucle for                  améliorée 

  Si tableau est un tableau de Machin, la boucle
            for (int i = 0; i < tableau.length; i++)
                exploiter(tableau[i])
  peut s’écrire plus simplement
            for (Machin e : tableau)
                exploiter(e)
  Si collection est une collection de Machin, la boucle
            for (Iterator it = collection.iterator(); it.hasNext(); )
                exploiter((Machin)it.next())
  peut s’écrire plus simplement
            for (Machin e : collection)
                exploiter(e)

    c L. Tichit, 2015-2016                                 POO et Java   8/1
Éléments de la bibliothèque

Boucle for                  améliorée 

  Si tableau est un tableau de Machin, la boucle
            for (int i = 0; i < tableau.length; i++)
                exploiter(tableau[i])
  peut s’écrire plus simplement
            for (Machin e : tableau)
                exploiter(e)
  Si collection est une collection de Machin, la boucle
            for (Iterator it = collection.iterator(); it.hasNext(); )
                exploiter((Machin)it.next())
  peut s’écrire plus simplement
            for (Machin e : collection)
                exploiter(e)

  Exemple :
                  ...
                  double[] t = new double[N];
                  ...
                  double s = 0;
                  for (double x : t)
                      s += x;
                  ...

    c L. Tichit, 2015-2016                                 POO et Java   8/1
Éléments de la bibliothèque

Java 5 : les collections génériques

   souvent les collections sont homogènes : leurs éléments ont un type commun
   mais, définies en toute généralité, ces éléments sont déclarés Object
             public interface List {
                 void add(int index, Object element);
                 Object get(int index);
                 ...
             }

     c L. Tichit, 2015-2016                            POO et Java                 9/1
Éléments de la bibliothèque

Java 5 : les collections génériques

   souvent les collections sont homogènes : leurs éléments ont un type commun
   mais, définies en toute généralité, ces éléments sont déclarés Object
             public interface List {
                 void add(int index, Object element);
                 Object get(int index);
                 ...
             }

   apparues en Java 5, les classes génériques sont un mécanisme ajouté au niveau du texte
   source pour indiquer au compilateur le type des éléments en question
             public interface List {
                 void add(int index, E element);
                 E get(int index);
                 ...
             }

     c L. Tichit, 2015-2016                            POO et Java                              9/1
Éléments de la bibliothèque

Java 5 : les collections génériques

   souvent les collections sont homogènes : leurs éléments ont un type commun
   mais, définies en toute généralité, ces éléments sont déclarés Object
             public interface List {
                 void add(int index, Object element);
                 Object get(int index);
                 ...
             }

   apparues en Java 5, les classes génériques sont un mécanisme ajouté au niveau du texte
   source pour indiquer au compilateur le type des éléments en question
             public interface List {
                 void add(int index, E element);
                 E get(int index);
                 ...
             }

   le code produit n’est pas modifié par l’utilisation de ce mécanisme...

     c L. Tichit, 2015-2016                            POO et Java                              9/1
Éléments de la bibliothèque

Java 5 : les collections génériques

   souvent les collections sont homogènes : leurs éléments ont un type commun
   mais, définies en toute généralité, ces éléments sont déclarés Object
             public interface List {
                 void add(int index, Object element);
                 Object get(int index);
                 ...
             }

   apparues en Java 5, les classes génériques sont un mécanisme ajouté au niveau du texte
   source pour indiquer au compilateur le type des éléments en question
             public interface List {
                 void add(int index, E element);
                 E get(int index);
                 ...
             }

   le code produit n’est pas modifié par l’utilisation de ce mécanisme...
   ...qui n’est pas obligatoire

     c L. Tichit, 2015-2016                            POO et Java                              9/1
Éléments de la bibliothèque

Java 5 : les collections génériques

   souvent les collections sont homogènes : leurs éléments ont un type commun
   mais, définies en toute généralité, ces éléments sont déclarés Object
             public interface List {
                 void add(int index, Object element);
                 Object get(int index);
                 ...
             }

   apparues en Java 5, les classes génériques sont un mécanisme ajouté au niveau du texte
   source pour indiquer au compilateur le type des éléments en question
             public interface List {
                 void add(int index, E element);
                 E get(int index);
                 ...
             }

   le code produit n’est pas modifié par l’utilisation de ce mécanisme...
   ...qui n’est pas obligatoire
   si on ne l’utilise à 100% pas le compilateur affiche des avertissements

     c L. Tichit, 2015-2016                            POO et Java                              9/1
Éléments de la bibliothèque

Java 5 : les collections génériques

   L’exemple devient :
      static double cumul(Collection suiteDeNombres) {
              /* Les éléments de suiteDeNombres sont des objets Double */
          double result = 0;
          Iterator iter = suiteDeNombres.iterator();
          while (iter.hasNext())
              result = result + ((Double)iter.next()).doubleValue();
              result = result + iter.next().doubleValue();
          return result;
      }

     c L. Tichit, 2015-2016                            POO et Java            10 / 1
Éléments de la bibliothèque

Java 5 : les collections génériques

   L’exemple devient :
      static double cumul(Collection suiteDeNombres) {
              /* Les éléments de suiteDeNombres sont des objets Double */
          double result = 0;
          Iterator iter = suiteDeNombres.iterator();
          while (iter.hasNext())
              result = result + ((Double)iter.next()).doubleValue();
              result = result + iter.next().doubleValue();
          return result;
      }

   appel :
      public static void main(String[] args) {
          List donnees = new ArrayList();
          for (int i = 0; i < 5; i++)
              donnees.add(new Double(Math.random()));
          System.out.println(cumul(donnees));
          ...
      }

     c L. Tichit, 2015-2016                            POO et Java            10 / 1
Éléments de la bibliothèque

Java 5 : emballage et déballage automatiques

  Autre bonne nouvelle : depuis Java 5 l’emballage et le déballage sont automatiques (insérés
  par le compilateur là où c’est nécessaire)

   c L. Tichit, 2015-2016                            POO et Java                             11 / 1
Éléments de la bibliothèque

Java 5 : emballage et déballage automatiques

  Autre bonne nouvelle : depuis Java 5 l’emballage et le déballage sont automatiques (insérés
  par le compilateur là où c’est nécessaire)
  exemple : si unObjet est d’un type objet et unInt de type int, il est permis d’écrire
           unObjet = unInt;

   c L. Tichit, 2015-2016                            POO et Java                             11 / 1
Éléments de la bibliothèque

Java 5 : emballage et déballage automatiques

  Autre bonne nouvelle : depuis Java 5 l’emballage et le déballage sont automatiques (insérés
  par le compilateur là où c’est nécessaire)
  exemple : si unObjet est d’un type objet et unInt de type int, il est permis d’écrire
            unObjet = unInt;
  cela est automatiquement traduit par le compilateur par
            unObjet = new Integer(unInt);

   c L. Tichit, 2015-2016                            POO et Java                             11 / 1
Éléments de la bibliothèque

Java 5 : emballage et déballage automatiques

  Autre bonne nouvelle : depuis Java 5 l’emballage et le déballage sont automatiques (insérés
  par le compilateur là où c’est nécessaire)
  exemple : si unObjet est d’un type objet et unInt de type int, il est permis d’écrire
            unObjet = unInt;
  cela est automatiquement traduit par le compilateur par
            unObjet = new Integer(unInt);
  Réciproquement, il est permis d’écrire
            unInt = unObjet;

    c L. Tichit, 2015-2016                            POO et Java                            11 / 1
Éléments de la bibliothèque

Java 5 : emballage et déballage automatiques

  Autre bonne nouvelle : depuis Java 5 l’emballage et le déballage sont automatiques (insérés
  par le compilateur là où c’est nécessaire)
  exemple : si unObjet est d’un type objet et unInt de type int, il est permis d’écrire
            unObjet = unInt;
  cela est automatiquement traduit par le compilateur par
            unObjet = new Integer(unInt);
  Réciproquement, il est permis d’écrire
            unInt = unObjet;
  cela est automatiquement traduit par
            unInt = unObjet.intValue();

   c L. Tichit, 2015-2016                            POO et Java                             11 / 1
Éléments de la bibliothèque

Java 5 : emballage et déballage automatiques

  Autre bonne nouvelle : depuis Java 5 l’emballage et le déballage sont automatiques (insérés
  par le compilateur là où c’est nécessaire)
  exemple : si unObjet est d’un type objet et unInt de type int, il est permis d’écrire
            unObjet = unInt;
  cela est automatiquement traduit par le compilateur par
            unObjet = new Integer(unInt);
  Réciproquement, il est permis d’écrire
            unInt = unObjet;
  cela est automatiquement traduit par
            unInt = unObjet.intValue();

  contrainte : il faut que unObjet soit de la classe-enveloppe correspondant au type primitif
  visé (ici la classe enveloppe est Integer puisque le type primitif est int)

   c L. Tichit, 2015-2016                            POO et Java                             11 / 1
Éléments de la bibliothèque

Java 5 : généricité + (emb|déb)allage automatiques

  L’exemple devient :
     static double cumul(Collection suiteDeNombres) {
             /* Les éléments de suiteDeNombres sont des objets Double */
         double result = 0;
         Iterator iter = suiteDeNombres.iterator();
         while (iter.hasNext())
             result = result + iter.next().doubleValue();
             result = result + iter.next();
         return result;
     }

    c L. Tichit, 2015-2016                            POO et Java            12 / 1
Éléments de la bibliothèque

Java 5 : généricité + (emb|déb)allage automatiques

  L’exemple devient :
     static double cumul(Collection suiteDeNombres) {
             /* Les éléments de suiteDeNombres sont des objets Double */
         double result = 0;
         Iterator iter = suiteDeNombres.iterator();
         while (iter.hasNext())
             result = result + iter.next().doubleValue();
             result = result + iter.next();
         return result;
     }

  appel :
     public static void main(String[] args) {
         ArrayList donnees = new ArrayList();
         for (int i = 0; i < 5; i++)
             donnees.add( new Double(Math.random()) );
             donnees.add( Math.random() );
         System.out.println(cumul(donnees));
         ...
     }

    c L. Tichit, 2015-2016                            POO et Java            12 / 1
Éléments de la bibliothèque

Avec une boucle for améliorée

  Dernier avatar de notre exemple, avec
         collection générique,
         emballage-déballage automatiques et
         boucle for améliorée

  ce qui donne :

     static double cumul(Collection suiteDeNombres) {
             /* Les éléments de suiteDeNombres sont des objets Double */
         double result = 0;
            for (Double x : suiteDeNombres)
                result = result + x;
            return result;
     }

    c L. Tichit, 2015-2016                                  POO et Java      13 / 1
Éléments de la bibliothèque

Table associative

  collection de paires (clé, valeur) munie d’un                   accès par les clés  optimisé

    c L. Tichit, 2015-2016                            POO et Java                                      14 / 1
Éléments de la bibliothèque

Table associative

  collection de paires (clé, valeur) munie d’un                   accès par les clés  optimisé
  deux méthodes fondamentales :
     Interface Map {
          void put(Object cle, Object valeur); // ajout d’une paire
          Object get(Object cle); // recherche de la valeur associée à une clé
          ...

    c L. Tichit, 2015-2016                            POO et Java                                      14 / 1
Éléments de la bibliothèque

Table associative

  collection de paires (clé, valeur) munie d’un                   accès par les clés  optimisé
  deux méthodes fondamentales :
     Interface Map {
          void put(Object cle, Object valeur); // ajout d’une paire
          Object get(Object cle); // recherche de la valeur associée à une clé
          ...
  ou, depuis Java 5 :
      Interface Map {
          void put(K cle, V valeur); // ajout d’une paire
          V get(Object cle); // recherche de la valeur associée à une clé
          ...

    c L. Tichit, 2015-2016                            POO et Java                                      14 / 1
Éléments de la bibliothèque

Table associative

  collection de paires (clé, valeur) munie d’un                   accès par les clés  optimisé
  deux méthodes fondamentales :
     Interface Map {
          void put(Object cle, Object valeur); // ajout d’une paire
          Object get(Object cle); // recherche de la valeur associée à une clé
          ...
  ou, depuis Java 5 :
      Interface Map {
          void put(K cle, V valeur); // ajout d’une paire
          V get(Object cle); // recherche de la valeur associée à une clé
          ...
  deux implémentations principales :
         HashMap : implémentation par une  table de hachage  ; la plus efficace, mais les
         clés n’y sont pas ordonnées
         TreeMap : implémentation par un arbre binaire de recherche ; un peu moins efficace
         (mais en O(log n) quand-même), les clés y sont ordonnées

    c L. Tichit, 2015-2016                            POO et Java                                      14 / 1
Éléments de la bibliothèque

Exemple classique
Écriture d’un dictionnaire pour associer des descriptions à des mots.
Deux commandes :
      ?mot       : pour obtenir la description d’un mot
        +mot  : pour ajouter un mot et sa description (demandée ensuite)

       c L. Tichit, 2015-2016                               POO et Java       15 / 1
Éléments de la bibliothèque

Exemple classique
Écriture d’un dictionnaire pour associer des descriptions à des mots.
Deux commandes :
      ?mot       : pour obtenir la description d’un mot
        +mot  : pour ajouter un mot et sa description (demandée ensuite)

             Scanner entree = new Scanner(System.in);
             String commande, nom, description;

             Map repertoire = new HashMap();

             for (;;) {
                 System.out.print("commande: ");
                 commande = entree.nextLine().trim();
                 char code = commande.charAt(0);
                 nom = commande.substring(1).trim();

       c L. Tichit, 2015-2016                               POO et Java        15 / 1
Éléments de la bibliothèque

Exemple classique
Écriture d’un dictionnaire pour associer des descriptions à des mots.
Deux commandes :
      ?mot       : pour obtenir la description d’un mot
        +mot  : pour ajouter un mot et sa description (demandée ensuite)

             Scanner entree = new Scanner(System.in);
             String commande, nom, description;

             Map repertoire = new HashMap();

             for (;;) {
                 System.out.print("commande: ");
                 commande = entree.nextLine().trim();
                 char code = commande.charAt(0);
                 nom = commande.substring(1).trim();
                 if (code == ’?’) {
                     description = (String) repertoire.get(nom);
                     if (description != null)
                         System.out.println(nom + " : " + description);
                 }

       c L. Tichit, 2015-2016                               POO et Java        15 / 1
Éléments de la bibliothèque

Exemple classique
Écriture d’un dictionnaire pour associer des descriptions à des mots.
Deux commandes :
      ?mot       : pour obtenir la description d’un mot
        +mot  : pour ajouter un mot et sa description (demandée ensuite)

             Scanner entree = new Scanner(System.in);
             String commande, nom, description;

             Map repertoire = new HashMap();

             for (;;) {
                 System.out.print("commande: ");
                 commande = entree.nextLine().trim();
                 char code = commande.charAt(0);
                 nom = commande.substring(1).trim();
                 if (code == ’?’) {
                     description = (String) repertoire.get(nom);
                     if (description != null)
                         System.out.println(nom + " : " + description);
                 } else if (code == ’+’) {
                     System.out.print("description: ");
                     description = entree.nextLine();
                     repertoire.put(nom, description);
                 }
             }

       c L. Tichit, 2015-2016                               POO et Java        15 / 1
Éléments de la bibliothèque

Entrées-sorties

Petit choix de classes usuelles du paquetage java.io :

File                               Identification d’un fichier + gestion  externe  des fichiers
                                   (rename, copy, delete, contenu des répertoires, etc.)

       c L. Tichit, 2015-2016                            POO et Java                                16 / 1
Éléments de la bibliothèque

Entrées-sorties

Petit choix de classes usuelles du paquetage java.io :

File                               Identification d’un fichier + gestion  externe  des fichiers
                                   (rename, copy, delete, contenu des répertoires, etc.)

InputStream                        Flot d’octets en entrée...
   FileInputStream                 ...provenant d’un fichier
   DataInputStream                 ...transformés en données de types primitifs
   ObjectInputStream               ...transformés en objets

       c L. Tichit, 2015-2016                            POO et Java                                16 / 1
Éléments de la bibliothèque

Entrées-sorties

Petit choix de classes usuelles du paquetage java.io :

File                               Identification d’un fichier + gestion  externe  des fichiers
                                   (rename, copy, delete, contenu des répertoires, etc.)

InputStream                        Flot d’octets en entrée...
   FileInputStream                 ...provenant d’un fichier
   DataInputStream                 ...transformés en données de types primitifs
   ObjectInputStream               ...transformés en objets

OutputStream                       Même chose, en sortie (même genre de sous-classes)

       c L. Tichit, 2015-2016                            POO et Java                                16 / 1
Éléments de la bibliothèque

Entrées-sorties

Petit choix de classes usuelles du paquetage java.io :

File                               Identification d’un fichier + gestion  externe  des fichiers
                                   (rename, copy, delete, contenu des répertoires, etc.)

InputStream                        Flot d’octets en entrée...
   FileInputStream                 ...provenant d’un fichier
   DataInputStream                 ...transformés en données de types primitifs
   ObjectInputStream               ...transformés en objets

OutputStream                       Même chose, en sortie (même genre de sous-classes)

Reader                             Flot de caractères en entrée...
   InputStreamReader               ...provenant d’un InputStream
   BufferedReader                  ...regroupés en lignes

       c L. Tichit, 2015-2016                            POO et Java                                16 / 1
Éléments de la bibliothèque

Entrées-sorties

Petit choix de classes usuelles du paquetage java.io :

File                               Identification d’un fichier + gestion  externe  des fichiers
                                   (rename, copy, delete, contenu des répertoires, etc.)

InputStream                        Flot d’octets en entrée...
   FileInputStream                 ...provenant d’un fichier
   DataInputStream                 ...transformés en données de types primitifs
   ObjectInputStream               ...transformés en objets

OutputStream                       Même chose, en sortie (même genre de sous-classes)

Reader                             Flot de caractères en entrée...
   InputStreamReader               ...provenant d’un InputStream
   BufferedReader                  ...regroupés en lignes

Writer                             Même chose, en sortie
   PrintWriter                     avec mise en forme des données (ex. : System.out)

       c L. Tichit, 2015-2016                            POO et Java                                16 / 1
Éléments de la bibliothèque

Les flots, 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

       c L. Tichit, 2015-2016                                   POO et Java   17 / 1
Éléments de la bibliothèque

Les flots, c’est de la plomberie...

 application qui effectue
  des lectures de lignes                                          Ce qui, dans le code, donne :
     readLine()
             lignes de caractères
                                                                  File f = new File("mydata.txt");
                                                                  FileInputStream fis =
                      BufferedReader                                          new FileInputStream(f);
                                                                  InputStreamReader isr =
             caractères                                                       new InputStreamReader(fis);
                                                                  BufferedReader br =
                      InputStreamReader                                       new BufferedReader(isr);
             octets

                      FileInputStream

             un fichier (la source des octets)

                                File

       c L. Tichit, 2015-2016                                   POO et Java                                 17 / 1
Éléments de la bibliothèque

Les flots, c’est de la plomberie...

 application qui effectue
  des lectures de lignes                                          Ce qui, dans le code, donne :
     readLine()
             lignes de caractères
                                                                  File f = new File("mydata.txt");
                                                                  FileInputStream fis =
                      BufferedReader                                          new FileInputStream(f);
                                                                  InputStreamReader isr =
             caractères                                                       new InputStreamReader(fis);
                                                                  BufferedReader br =
                      InputStreamReader                                       new BufferedReader(isr);
             octets                                               ou, en version compacte :
                      FileInputStream                             BufferedReader br =
                                                                      new BufferedReader(
             un fichier (la source des octets)                            new InputStreamReader(
                                                                              new FileInputStream(
                                File                                              new File("mydata.txt"))));

       c L. Tichit, 2015-2016                                   POO et Java                                    17 / 1
Éléments de la bibliothèque

Exemple : lire des lignes

Lister un fichier par lignes numérotées :

                                                          Fichier Listing.java

                                                              import java.io.*;
  application qui effectue                                    public class Listing {
   des lectures de lignes                                         public static void main(String[] args) {
      readLine()                                                      int n = 0;
                lignes de caractères
                                                                             File f = new File(args[0]);
                         BufferedReader                                      InputStream is = new FileInputStream(f);
            br
                                                                             Reader r = new InputStreamReader(is);
                caractères                                                   BufferedReader br = new BufferedReader(r);

            r            InputStreamReader

                octets

            is           FileInputStream

                un fichier (la source des octets)

                              File
                  f

          c L. Tichit, 2015-2016                                             POO et Java                                  18 / 1
Éléments de la bibliothèque

Exemple : lire des lignes

Lister un fichier par lignes numérotées :

                                                          Fichier Listing.java

                                                              import java.io.*;
  application qui effectue                                    public class Listing {
   des lectures de lignes                                         public static void main(String[] args) {
      readLine()                                                      int n = 0;
                lignes de caractères
                                                                             File f = new File(args[0]);
                         BufferedReader                                      InputStream is = new FileInputStream(f);
            br
                                                                             Reader r = new InputStreamReader(is);
                caractères                                                   BufferedReader br = new BufferedReader(r);

            r            InputStreamReader                                   String ligne = br.readLine();
                                                                             while (ligne != null) {
                                                                                 System.out.printf((++n) + " " + ligne);
                octets
                                                                                 ligne = br.readLine();
                                                                             }
            is           FileInputStream
                                                                             is.close();
                un fichier (la source des octets)

                              File
                  f

          c L. Tichit, 2015-2016                                             POO et Java                                   18 / 1
Éléments de la bibliothèque

Exemple : lire des lignes

Lister un fichier par lignes numérotées :

                                                          Fichier Listing.java

                                                              import java.io.*;
  application qui effectue                                    public class Listing {
   des lectures de lignes                                         public static void main(String[] args) {
      readLine()                                                      int n = 0;
                lignes de caractères                                  try {
                                                                          File f = new File(args[0]);
                         BufferedReader                                   InputStream is = new FileInputStream(f);
            br
                                                                          Reader r = new InputStreamReader(is);
                caractères                                                BufferedReader br = new BufferedReader(r);

            r            InputStreamReader                                   String ligne = br.readLine();
                                                                             while (ligne != null) {
                                                                                 System.out.printf((++n) + " " + ligne);
                octets
                                                                                 ligne = br.readLine();
                                                                             }
            is           FileInputStream
                                                                            is.close();
                un fichier (la source des octets)
                                                                        } catch (ArrayIndexOutOfBoundsException e) {
                                                                            System.err.println("emploi: java Listing ");
                                                                        } catch (FileNotFoundException e) {
                              File
                  f                                                         System.err.println("fichier inconnu: " + args[0]);
                                                                        } catch (IOException e) {
                                                                            System.err.println("erreur après " + n + " lignes");
                                                                        }
                                                                   }
                                                              }

          c L. Tichit, 2015-2016                                             POO et Java                                            18 / 1
Éléments de la bibliothèque

 Exemple : lire des lignes
Une autre manière de désigner le fichier (au lieu de  File f = new File(args[0]) ) :

   Fichier Listing.java

      public class Listing {
          public static void main(String[] args) {
              int n = 0;
              try {
                  JFileChooser dial = new JFileChooser();
                  personnalisation de dial
                  int res = dial.showOpenDialog(null);
                  if (res != JFileChooser.APPROVE OPTION)
                       return;
                  File f = dial.getSelectedFile();

           c L. Tichit, 2015-2016                                     POO et Java          19 / 1
Éléments de la bibliothèque

 Exemple : lire des lignes
Une autre manière de désigner le fichier (au lieu de  File f = new File(args[0]) ) :

   Fichier Listing.java

      public class Listing {
          public static void main(String[] args) {
              int n = 0;
              try {
                  JFileChooser dial = new JFileChooser();
                  personnalisation de dial
                  int res = dial.showOpenDialog(null);
                  if (res != JFileChooser.APPROVE OPTION)
                       return;
                  File f = dial.getSelectedFile();
                  InputStream is = new FileInputStream(f);
                  Reader r = new InputStreamReader(is);
                  BufferedReader br = new BufferedReader(r);
                  String ligne = br.readLine();
                  while (ligne != null) {
                       System.out.println((++n) + " " + ligne);
                       ligne = br.readLine();
                  }
                  is.close();
              } catch (ArrayIndexOutOfBoundsException e) {
                  System.err.println("emploi: java Listing ");
              } catch (FileNotFoundException e) { /* cette exception ne sera pas lancée */
                  System.err.println("fichier inconnu");
              } catch (IOException e) {
                  System.err.println("erreur après " + n + " lignes");
              }
          }
      }

           c L. Tichit, 2015-2016                                     POO et Java             19 / 1
Éléments de la bibliothèque

Exemple : lire des unites lexicales

   Exemple : lecture d’un fichier de texte formé de couples                 nom , nombre  comme
             ... poids 1800.0 vitesse 145 largeur 1.40 longueur 3.25 ...

   écrivons une méthode
         Map lireInfos(File fichier);

   qui lit ces couples et en fait une table associative

                                               clé               valeur
                                               poids           1800.0
                                            vitesse            145
                                            largeur            1.40
                                           longueur            3.25
                                              ...                 ...

     c L. Tichit, 2015-2016                            POO et Java                                   20 / 1
Éléments de la bibliothèque

 Exemple : lire des unites lexicales

Exemple : lecture de couples         nom, valeur  et rangement dans une table associative :

   Extrait de code
      ...
      Map lireInfos(File fichier) throws IOException {
          HashMap result = new HashMap();

         c L. Tichit, 2015-2016                                  POO et Java                    21 / 1
Éléments de la bibliothèque

 Exemple : lire des unites lexicales

Exemple : lecture de couples            nom, valeur  et rangement dans une table associative :

   Extrait de code
      ...
      Map lireInfos(File fichier) throws IOException {
          HashMap result = new HashMap();

           InputStream is = new FileInputStream(fichier);
           Reader r = new InputStreamReader(is);
           StreamTokenizer tokenizer = new StreamTokenizer(r);
           /* personnalisation éventuelle de tokenizer (quels sont les caractères  blancs , etc.) */

         c L. Tichit, 2015-2016                                      POO et Java                           21 / 1
Éléments de la bibliothèque

 Exemple : lire des unites lexicales

Exemple : lecture de couples            nom, valeur  et rangement dans une table associative :

   Extrait de code
      ...
      Map lireInfos(File fichier) throws IOException {
          HashMap result = new HashMap();

           InputStream is = new FileInputStream(fichier);
           Reader r = new InputStreamReader(is);
           StreamTokenizer tokenizer = new StreamTokenizer(r);
           /* personnalisation éventuelle de tokenizer (quels sont les caractères  blancs , etc.) */
           for (;;) {
               int unite = tokenizer.nextToken();
               if (unite == StreamTokenizer.TT EOF)
                    break;

         c L. Tichit, 2015-2016                                      POO et Java                           21 / 1
Éléments de la bibliothèque

 Exemple : lire des unites lexicales

Exemple : lecture de couples            nom, valeur  et rangement dans une table associative :

   Extrait de code
      ...
      Map lireInfos(File fichier) throws IOException {
          HashMap result = new HashMap();

           InputStream is = new FileInputStream(fichier);
           Reader r = new InputStreamReader(is);
           StreamTokenizer tokenizer = new StreamTokenizer(r);
           /* personnalisation éventuelle de tokenizer (quels sont les caractères  blancs , etc.) */
           for (;;) {
               int unite = tokenizer.nextToken();
               if (unite == StreamTokenizer.TT EOF)
                    break;
               if (unite != StreamTokenizer.TT WORD)
                    throw new IOException("mot attendu");
               String cle = tokenizer.sval;

         c L. Tichit, 2015-2016                                      POO et Java                           21 / 1
Éléments de la bibliothèque

 Exemple : lire des unites lexicales

Exemple : lecture de couples            nom, valeur  et rangement dans une table associative :

   Extrait de code
      ...
      Map lireInfos(File fichier) throws IOException {
          HashMap result = new HashMap();

           InputStream is = new FileInputStream(fichier);
           Reader r = new InputStreamReader(is);
           StreamTokenizer tokenizer = new StreamTokenizer(r);
           /* personnalisation éventuelle de tokenizer (quels sont les caractères  blancs , etc.) */
           for (;;) {
               int unite = tokenizer.nextToken();
               if (unite == StreamTokenizer.TT EOF)
                    break;
               if (unite != StreamTokenizer.TT WORD)
                    throw new IOException("mot attendu");
               String cle = tokenizer.sval;
               unite = tokenizer.nextToken();
               if (unite != StreamTokenizer.TT NUMBER)
                    throw new IOException("nombre attendu");
               double valeur = tokenizer.nval;

         c L. Tichit, 2015-2016                                      POO et Java                           21 / 1
Éléments de la bibliothèque

 Exemple : lire des unites lexicales

Exemple : lecture de couples             nom, valeur  et rangement dans une table associative :

   Extrait de code
      ...
      Map lireInfos(File fichier) throws IOException {
          HashMap result = new HashMap();

            InputStream is = new FileInputStream(fichier);
            Reader r = new InputStreamReader(is);
            StreamTokenizer tokenizer = new StreamTokenizer(r);
            /* personnalisation éventuelle de tokenizer (quels sont les caractères  blancs , etc.) */
            for (;;) {
                int unite = tokenizer.nextToken();
                if (unite == StreamTokenizer.TT EOF)
                     break;
                if (unite != StreamTokenizer.TT WORD)
                     throw new IOException("mot attendu");
                String cle = tokenizer.sval;
                unite = tokenizer.nextToken();
                if (unite != StreamTokenizer.TT NUMBER)
                     throw new IOException("nombre attendu");
                double valeur = tokenizer.nval;
                result.put(cle, new Double(valeur));
            }
            return result;
      }
      ...

         c L. Tichit, 2015-2016                                       POO et Java                           21 / 1
Éléments de la bibliothèque

 Autre exemple : mise en forme de données

Afficher un listing avec des colonnes bien alignées

     Fichier Article.java

        public class Article {
            int ref;
            String denom;
            double prix;
            public Article(int r, String d, double p) {
                ref = r; denom = d; prix = p;
            }
        }

         c L. Tichit, 2015-2016                                POO et Java   22 / 1
Éléments de la bibliothèque

 Autre exemple : mise en forme de données

Afficher un listing avec des colonnes bien alignées

     Fichier Article.java

        public class Article {
            int ref;
            String denom;
            double prix;
            public Article(int r, String d, double p) {
                ref = r; denom = d; prix = p;
            }
        }

     Fichier TestFormat.java

        public class TestFormat {
            public static void main(String[] args) {
                Article[] maListe = {
                        new Article(75, "Savon à barbe", 2.40),
                        new Article(24085, "Gillette 6 lames x 5", 18),
                        new Article(125, "Javel 1L", 0.85),
                    };
                imprimer(maListe);
            }

            static void imprimer(Article[] liste) {
                c’est ici qu’il faut réfléchir...
            }
        }

         c L. Tichit, 2015-2016                                POO et Java   22 / 1
Éléments de la bibliothèque

 Exemple : mise en forme de données

Première version

       Fichier TestFormat.java

           import java.text.*;

           public class TestFormat {
               ...
               static void imprimer(Article[] liste) {
                   NumberFormat fd = new DecimalFormat("#,##0.00");

                      for (int i = 0; i < liste.length; i++)
                          System.out.println(liste[i].ref + " | " +
                                  liste[i].denom + " | " +
                                  fd.format(liste[i].prix));
                }
                ...
           }

            c L. Tichit, 2015-2016                                   POO et Java   23 / 1
Éléments de la bibliothèque

 Exemple : mise en forme de données

Première version

        Fichier TestFormat.java

           import java.text.*;

           public class TestFormat {
               ...
               static void imprimer(Article[] liste) {
                   NumberFormat fd = new DecimalFormat("#,##0.00");

                       for (int i = 0; i < liste.length; i++)
                           System.out.println(liste[i].ref + " | " +
                                   liste[i].denom + " | " +
                                   fd.format(liste[i].prix));
                 }
                 ...
           }

Résultat obtenu (pas terrible !) :

   75 | Savon à barbe | 2,40
   24085 | Gillette 6 lames x 5 | 18,00
   125 | Javel 1L | 0,85

             c L. Tichit, 2015-2016                                   POO et Java   23 / 1
Éléments de la bibliothèque

 Exemple : mise en forme de données

Meilleure version (Java 5)

       Fichier TestFormat.java

           public class TestFormat {
               ...
               static void imprimer(Article[] liste) {
                   for (int i = 0; i < liste.length; i++)
                       System.out.printf("%8d | %-30s | %8.2f%n",
                               liste[i].ref, liste[i].denom, liste[i].prix);
               }
               ...
           }

            c L. Tichit, 2015-2016                                POO et Java   24 / 1
Éléments de la bibliothèque

 Exemple : mise en forme de données

Meilleure version (Java 5)

       Fichier TestFormat.java

           public class TestFormat {
               ...
               static void imprimer(Article[] liste) {
                   for (int i = 0; i < liste.length; i++)
                       System.out.printf("%8d | %-30s | %8.2f%n",
                               liste[i].ref, liste[i].denom, liste[i].prix);
               }
               ...
           }

       Résultat obtenu :

                 75 | Savon à barbe                   |       2,40
              24085 | Gillette 6 lames x 5             |      18,00
                125 | Javel 1L                         |       0,85

            c L. Tichit, 2015-2016                                POO et Java   24 / 1
Éléments de la bibliothèque

Expressions régulières

   expressions régulières en Java : paquetage java.util.regex

    c L. Tichit, 2015-2016                            POO et Java   25 / 1
Éléments de la bibliothèque

Expressions régulières

   expressions régulières en Java : paquetage java.util.regex
   deux classes :
         Pattern : représentation  compilée  d’une expression régulière
         Matcher : variables et méthodes pour  faire travailler  une expression
         régulière sur un texte donné

    c L. Tichit, 2015-2016                            POO et Java                    25 / 1
Éléments de la bibliothèque

Expressions régulières

   expressions régulières en Java : paquetage java.util.regex
   deux classes :
         Pattern : représentation  compilée  d’une expression régulière
         Matcher : variables et méthodes pour  faire travailler  une expression
         régulière sur un texte donné
   exemple : extraire les liens d’une page html, représentés par des balises :
              
    c L. Tichit, 2015-2016                            POO et Java                    25 / 1
Éléments de la bibliothèque

Expressions régulières

   expressions régulières en Java : paquetage java.util.regex
   deux classes :
         Pattern : représentation  compilée  d’une expression régulière
         Matcher : variables et méthodes pour  faire travailler  une expression
         régulière sur un texte donné
   exemple : extraire les liens d’une page html, représentés par des balises :
              
   l’expression régulière correspondante est :
Éléments de la bibliothèque

Expressions régulières

   expressions régulières en Java : paquetage java.util.regex
   deux classes :
         Pattern : représentation  compilée  d’une expression régulière
         Matcher : variables et méthodes pour  faire travailler  une expression
         régulière sur un texte donné
   exemple : extraire les liens d’une page html, représentés par des balises :
              
   l’expression régulière correspondante est :
Éléments de la bibliothèque

 Expressions régulières, exemple

Version de base :

Fichier TestExpressionsRegulieres.java

  public class TestExpressionsRegulieres {

       public static void main(String[] args) {
           String texte = null;

            /* Obtention du texte à 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;
            }

           c L. Tichit, 2015-2016                                  POO et Java   26 / 1
Éléments de la bibliothèque

 Expressions régulières, exemple

Version de base :

Fichier TestExpressionsRegulieres.java

  public class TestExpressionsRegulieres {                                       /* L’expression régulière */
                                                                                 String expReg =
       public static void main(String[] args) {                                      "
Éléments de la bibliothèque

 Expressions régulières, exemple

Version de base :

Fichier TestExpressionsRegulieres.java

  public class TestExpressionsRegulieres {                                         /* L’expression régulière */
                                                                                   String expReg =
       public static void main(String[] args) {                                        "
Éléments de la bibliothèque

 Expressions régulières, exemple

Version de base :

Fichier TestExpressionsRegulieres.java

  public class TestExpressionsRegulieres {                                         /* L’expression régulière */
                                                                                   String expReg =
       public static void main(String[] args) {                                        "
Éléments de la bibliothèque

 Expressions régulières, exemple

Amélioration :

Fichier TestExpressionsRegulieres.java

  public class TestExpressionsRegulieres {                                         /* L’expression régulière */
                                                                                   String expReg =
       public static void main(String[] args) {                                        "
Éléments de la bibliothèque

 Expressions régulières, exemple

Amélioration :

Fichier TestExpressionsRegulieres.java

  public class TestExpressionsRegulieres {                                           /* L’expression régulière */
                                                                                     String expReg =
       public static void main(String[] args) {                                          "
Vous pouvez aussi lire