Java pour les nuls (et les physiciens)

Document Sample
Java pour les nuls (et les physiciens) Powered By Docstoc
					       PPOOGL
    Florent de Dinechin




Java pour les nuls
(et les physiciens)
                         Java en 30 minutes




1 Introduction


2 Grands principes


3 Pour en finir avec l’organisation


4 Types de base et objets


5 Le reste est dans le manuel




 1
                      Introduction
1 Introduction

2 Grands principes

3 Pour en finir avec l’organisation

4 Types de base et objets

5 Le reste est dans le manuel




 2
            e
    La premi`re fois que vous mettez votre main dans le java




3
            e
    La premi`re fois que vous mettez votre main dans le java

    Fichier source Toto.java, fichier objet Toto.class




3
            e
    La premi`re fois que vous mettez votre main dans le java

    Fichier source Toto.java, fichier objet Toto.class
                      e
    javac Toto.java cr´e Toto.class (le c c’est pour compilo)




3
            e
    La premi`re fois que vous mettez votre main dans le java

    Fichier source Toto.java, fichier objet Toto.class
                      e
    javac Toto.java cr´e Toto.class (le c c’est pour compilo)
                        e
    java Toto lance la m´thode main de Toto.class dans la
    machine virtuelle.




3
            e
    La premi`re fois que vous mettez votre main dans le java

    Fichier source Toto.java, fichier objet Toto.class
                      e
    javac Toto.java cr´e Toto.class (le c c’est pour compilo)
                        e
    java Toto lance la m´thode main de Toto.class dans la
    machine virtuelle.
                                             e
    Si on faisait une applet, c’est pas une m´thode main qu’il
    faudrait.




3
               e
       La premi`re fois que vous mettez votre main dans le java

       Fichier source Toto.java, fichier objet Toto.class
                         e
       javac Toto.java cr´e Toto.class (le c c’est pour compilo)
                           e
       java Toto lance la m´thode main de Toto.class dans la
       machine virtuelle.
                                                e
       Si on faisait une applet, c’est pas une m´thode main qu’il
       faudrait.
        Et voici le code source :
    class Hello {
                                  e
      // pas d’attributs ni de m´thodes, sauf
               e
      // la m´thode main, statique.
                                           e
      // cela veut dire quoi, statique, d´ja ?
      public static void main(String[] args) {
          System.out.println("Hello, java ?");
      }
    }
3
                 Grands principes
1 Introduction

2 Grands principes

3 Pour en finir avec l’organisation

4 Types de base et objets

5 Le reste est dans le manuel



 4
                      Les trucs reposants

    Une classe, un fichier




5
                      Les trucs reposants

    Une classe, un fichier
     ⊕ Pas de fichiers .h




5
                        Les trucs reposants

    Une classe, un fichier
     ⊕ Pas de fichiers .h
     ⊕ La doc du code n’est plus le fichier .h, c’est une vraie doc cr´e
                                                                     e
        par javadoc




5
                        Les trucs reposants

    Une classe, un fichier
     ⊕ Pas de fichiers .h
     ⊕ La doc du code n’est plus le fichier .h, c’est une vraie doc cr´e
                                                                     e
        par javadoc
     ⊕ Pas besoin de Makefile ni d’autoconf




5
                        Les trucs reposants

    Une classe, un fichier
     ⊕ Pas de fichiers .h
     ⊕ La doc du code n’est plus le fichier .h, c’est une vraie doc cr´e
                                                                     e
        par javadoc
     ⊕ Pas besoin de Makefile ni d’autoconf
     ⊕ Pas de bug dˆ au pr´processeur
                   u      e




5
                        Les trucs reposants

    Une classe, un fichier
     ⊕ Pas de fichiers .h
     ⊕ La doc du code n’est plus le fichier .h, c’est une vraie doc cr´e
                                                                     e
        par javadoc
     ⊕ Pas besoin de Makefile ni d’autoconf
     ⊕ Pas de bug dˆ au pr´processeur
                   u      e
                                  e
        Si cela se trouve, c’est mˆme mieux que Caml




5
                        Les trucs reposants

    Une classe, un fichier
     ⊕ Pas de fichiers .h
     ⊕ La doc du code n’est plus le fichier .h, c’est une vraie doc cr´e
                                                                     e
        par javadoc
     ⊕ Pas besoin de Makefile ni d’autoconf
     ⊕ Pas de bug dˆ au pr´processeur
                   u      e
                                  e
        Si cela se trouve, c’est mˆme mieux que Caml
    ´
    Edition de lien dynamique




5
                        Les trucs reposants

    Une classe, un fichier
     ⊕ Pas de fichiers .h
     ⊕ La doc du code n’est plus le fichier .h, c’est une vraie doc cr´e
                                                                     e
        par javadoc
     ⊕ Pas besoin de Makefile ni d’autoconf
     ⊕ Pas de bug dˆ au pr´processeur
                   u      e
                                  e
        Si cela se trouve, c’est mˆme mieux que Caml
    ´
    Edition de lien dynamique
                                                   e
        Lorsque la machine virtuelle a besoin de cr´er un objet de
        classe Toto, elle charge Toto.class




5
                        Les trucs reposants

    Une classe, un fichier
     ⊕ Pas de fichiers .h
     ⊕ La doc du code n’est plus le fichier .h, c’est une vraie doc cr´e
                                                                     e
        par javadoc
     ⊕ Pas besoin de Makefile ni d’autoconf
     ⊕ Pas de bug dˆ au pr´processeur
                   u      e
                                  e
        Si cela se trouve, c’est mˆme mieux que Caml
    ´
    Edition de lien dynamique
                                                     e
        Lorsque la machine virtuelle a besoin de cr´er un objet de
        classe Toto, elle charge Toto.class
                               u
        Il faut qu’elle sache o` le trouver (on verra plus loin)




5
                        Les trucs reposants

    Une classe, un fichier
     ⊕ Pas de fichiers .h
     ⊕ La doc du code n’est plus le fichier .h, c’est une vraie doc cr´e
                                                                     e
        par javadoc
     ⊕ Pas besoin de Makefile ni d’autoconf
     ⊕ Pas de bug dˆ au pr´processeur
                   u      e
                                  e
        Si cela se trouve, c’est mˆme mieux que Caml
    ´
    Edition de lien dynamique
                                                    e
       Lorsque la machine virtuelle a besoin de cr´er un objet de
       classe Toto, elle charge Toto.class
                              u
       Il faut qu’elle sache o` le trouver (on verra plus loin)
     ⊕ Pas d’´diteur de lien
              e




5
                        Les trucs reposants

    Une classe, un fichier
     ⊕ Pas de fichiers .h
     ⊕ La doc du code n’est plus le fichier .h, c’est une vraie doc cr´e
                                                                     e
        par javadoc
     ⊕ Pas besoin de Makefile ni d’autoconf
     ⊕ Pas de bug dˆ au pr´processeur
                   u      e
                                  e
        Si cela se trouve, c’est mˆme mieux que Caml
    ´
    Edition de lien dynamique
                                                    e
       Lorsque la machine virtuelle a besoin de cr´er un objet de
       classe Toto, elle charge Toto.class
                              u
       Il faut qu’elle sache o` le trouver (on verra plus loin)
     ⊕ Pas d’´diteur de lien
              e
     ⊕ Pas de Makefile (je l’ai d´j` dit ?)
                                    ea




5
                        Les trucs reposants

    Une classe, un fichier
     ⊕ Pas de fichiers .h
     ⊕ La doc du code n’est plus le fichier .h, c’est une vraie doc cr´e
                                                                     e
        par javadoc
     ⊕ Pas besoin de Makefile ni d’autoconf
     ⊕ Pas de bug dˆ au pr´processeur
                   u      e
                                  e
        Si cela se trouve, c’est mˆme mieux que Caml
    ´
    Edition de lien dynamique
                                                    e
       Lorsque la machine virtuelle a besoin de cr´er un objet de
       classe Toto, elle charge Toto.class
                              u
       Il faut qu’elle sache o` le trouver (on verra plus loin)
     ⊕ Pas d’´diteur de lien
              e
     ⊕ Pas de Makefile (je l’ai d´j` dit ?)
                                    ea
     ⊕ Les chemins pour la compilation, pour l’´dition de liens et pour
                                                 e
            e                 e
       l’ex´cution sont les mˆmes.



5
                        Les trucs reposants

    Une classe, un fichier
     ⊕ Pas de fichiers .h
     ⊕ La doc du code n’est plus le fichier .h, c’est une vraie doc cr´e
                                                                     e
        par javadoc
     ⊕ Pas besoin de Makefile ni d’autoconf
     ⊕ Pas de bug dˆ au pr´processeur
                   u      e
                                  e
        Si cela se trouve, c’est mˆme mieux que Caml
    ´
    Edition de lien dynamique
                                                    e
       Lorsque la machine virtuelle a besoin de cr´er un objet de
       classe Toto, elle charge Toto.class
                              u
       Il faut qu’elle sache o` le trouver (on verra plus loin)
     ⊕ Pas d’´diteur de lien
              e
     ⊕ Pas de Makefile (je l’ai d´j` dit ?)
                                    ea
     ⊕ Les chemins pour la compilation, pour l’´dition de liens et pour
                                                 e
            e                 e
       l’ex´cution sont les mˆmes.
                              e                e      e         e
       Performance : des acc`s disques (et mˆme r´seau) cach´s au
       milieu de votre programme

5
                       Applet et application

               c
applet (en fran¸ais appliquette ou programmouillette) :
          ea                       e
    destin´ ` tourner dans une fenˆtre de navigateur chez des
                             e
    gens qu’on ne connait mˆme pas
     e                                      e               o
    d´rive d’une classe qui en principe prot`ge la machine hˆte
    (sandbox)
               e
         pas d’´criture ni de lecture du disque local
                        e             a
         par contre acc`s en lecture ` tous les fichiers du Ternet par
         leur url




6
                       Applet et application




                    c
application (en fran¸ais application)
                          e e
    pas les restriction pr´c´dentes
    un navigateur n’a pas plus le droit de la lancer qu’un autre
      e
    ex´cutable



6
                       Applet et application

               c
applet (en fran¸ais appliquette ou programmouillette) :
          ea                       e
    destin´ ` tourner dans une fenˆtre de navigateur chez des
                             e
    gens qu’on ne connait mˆme pas
     e                                      e               o
    d´rive d’une classe qui en principe prot`ge la machine hˆte
    (sandbox)
               e
         pas d’´criture ni de lecture du disque local
                        e             a
         par contre acc`s en lecture ` tous les fichiers du Ternet par
         leur url


                    c
application (en fran¸ais application)
                          e e
    pas les restriction pr´c´dentes
    un navigateur n’a pas plus le droit de la lancer qu’un autre
      e
    ex´cutable
                                                             e
Applications et appliquettes partagent le gros de la biblioth`que
standard, notamment l’awt (abstract windowing toolkit).
6
                              Au fait




                    a                 a
JavaScript n’a rien ` voir avec Java ` part la syntaxe superficielle :
                        ee                      e     e
c’est un langage interpr´t´, plein de trous de s´curit´, pas OO pour
un sou, et qu’on laissera volontiers aux authentiques kakous.




7
                            Javadoc


                                            e
    Un outil qui prend du code bien document´, et construit une
    doc html toute jolie
    Les commentaires pour Javadoc sont entre /** ... */
                                   e
    Un commentaire de ce type par m´thode, attribut, classe, etc.
    Ligne de commande : javadoc Toto.java
                  ee
    Les docs de r´f´rence des classes standard du langage sont
    construites comme cela




8
                            Javadoc


                                            e
    Un outil qui prend du code bien document´, et construit une
    doc html toute jolie
    Les commentaires pour Javadoc sont entre /** ... */
                                   e
    Un commentaire de ce type par m´thode, attribut, classe, etc.
    Ligne de commande : javadoc Toto.java
                  ee
    Les docs de r´f´rence des classes standard du langage sont
    construites comme cela

Exemple de commentaire de l’an dernier :
 /**
 * classe Cartes
 */
 public class Cartes extends Remote ...

8
  Pour en finir avec l’organisation
1 Introduction

2 Grands principes

3 Pour en finir avec l’organisation

4 Types de base et objets

5 Le reste est dans le manuel



 9
     Paquetages




10
                         Paquetages

     Un paquetage c’est comme un module en Caml.




10
                           Paquetages

     Un paquetage c’est comme un module en Caml.
                                  e e                   e
     Les paquetages sont organis´s hi´rarchiquement en r´pertoires.
             a                e
        Rien ` voir avec la hi´rarchie des classes.




10
                           Paquetages

     Un paquetage c’est comme un module en Caml.
                                  e e                   e
     Les paquetages sont organis´s hi´rarchiquement en r´pertoires.
             a                e
        Rien ` voir avec la hi´rarchie des classes.
                 e              e
     Exemples tir´s des biblioth`ques standard :
      java.applet                   java.math
      java.io                       java.awt
      java.awt.image                java.awt.event




10
                           Paquetages

     Un paquetage c’est comme un module en Caml.
                                  e e                   e
     Les paquetages sont organis´s hi´rarchiquement en r´pertoires.
             a                e
        Rien ` voir avec la hi´rarchie des classes.
                 e              e
     Exemples tir´s des biblioth`ques standard :
      java.applet                   java.math
      java.io                       java.awt
      java.awt.image                java.awt.event
          e
     On d´clare qu’une classe Toto fait partie d’un paquetage
                                               e
     projetLala.tata en mettant tout au d´but de Toto.java :
      package projetLala.tata ;




10
                              Paquetages

     Un paquetage c’est comme un module en Caml.
                                  e e                   e
     Les paquetages sont organis´s hi´rarchiquement en r´pertoires.
             a                e
        Rien ` voir avec la hi´rarchie des classes.
                 e              e
     Exemples tir´s des biblioth`ques standard :
      java.applet                   java.math
      java.io                       java.awt
      java.awt.image                java.awt.event
          e
     On d´clare qu’une classe Toto fait partie d’un paquetage
                                               e
     projetLala.tata en mettant tout au d´but de Toto.java :
      package projetLala.tata ;
     En l’absence d’une telle ligne, la classe fait partie du
                     e               e
     paquetage par d´faut, constitu´ de
                                          e
          l’ensemble des classes dans le r´pertoire courant
          l’ensemble des classes accessibles par la variable CLASSPATH



10
                              Paquetages

     Un paquetage c’est comme un module en Caml.
                                  e e                   e
     Les paquetages sont organis´s hi´rarchiquement en r´pertoires.
             a                e
        Rien ` voir avec la hi´rarchie des classes.
                 e              e
     Exemples tir´s des biblioth`ques standard :
      java.applet                   java.math
      java.io                       java.awt
      java.awt.image                java.awt.event
          e
     On d´clare qu’une classe Toto fait partie d’un paquetage
                                               e
     projetLala.tata en mettant tout au d´but de Toto.java :
      package projetLala.tata ;
     En l’absence d’une telle ligne, la classe fait partie du
                     e               e
     paquetage par d´faut, constitu´ de
                                          e
          l’ensemble des classes dans le r´pertoire courant
          l’ensemble des classes accessibles par la variable CLASSPATH
     On peut ranger un paquetage dans une archive zip, qui
     s’appellera d’ailleurs jar, mais il faut lire le manuel.
10
                   Paquetages et nommages

     Le nom complet d’une classe est paquetage.Classe




11
                    Paquetages et nommages

     Le nom complet d’une classe est paquetage.Classe
           e     e                                e
     Unicit´ plan´taire des noms par l’URL renvers´e :
     com.projetMIM2002.www.lala.test




11
                   Paquetages et nommages

     Le nom complet d’une classe est paquetage.Classe
           e     e                                e
     Unicit´ plan´taire des noms par l’URL renvers´e :
     com.projetMIM2002.www.lala.test
     Le nom complet d’un membre est paquetage.Classe.membre




11
                    Paquetages et nommages

     Le nom complet d’une classe est paquetage.Classe
           e     e                                e
     Unicit´ plan´taire des noms par l’URL renvers´e :
     com.projetMIM2002.www.lala.test
     Le nom complet d’un membre est paquetage.Classe.membre
         la fonction sinus : java.lang.Math.sin(x)




11
                    Paquetages et nommages

     Le nom complet d’une classe est paquetage.Classe
           e     e                                e
     Unicit´ plan´taire des noms par l’URL renvers´e :
     com.projetMIM2002.www.lala.test
     Le nom complet d’un membre est paquetage.Classe.membre
         la fonction sinus : java.lang.Math.sin(x)
                     a         e     e
         la variable ` l’unicit´ plan´taire :
         com.projetMIM2002.www.lala.test.RandomTest.nombreErreurs




11
                     Paquetages et nommages

     Le nom complet d’une classe est paquetage.Classe
           e     e                                e
     Unicit´ plan´taire des noms par l’URL renvers´e :
     com.projetMIM2002.www.lala.test
     Le nom complet d’un membre est paquetage.Classe.membre
         la fonction sinus : java.lang.Math.sin(x)
                     a         e     e
         la variable ` l’unicit´ plan´taire :
         com.projetMIM2002.www.lala.test.RandomTest.nombreErreurs


     Si on a la flemme de taper tout cela tout le temps dans
                                                            e
     Toto.java, on peut importer une fois pour toutes, au d´but
     de ce fichier,
         une classe : import java.lang.Math ;
         ou bien toutes les classes d’un paquetage :
         import java.lang.* ;




11
                     Paquetages et nommages

     Le nom complet d’une classe est paquetage.Classe
           e     e                                e
     Unicit´ plan´taire des noms par l’URL renvers´e :
     com.projetMIM2002.www.lala.test
     Le nom complet d’un membre est paquetage.Classe.membre
         la fonction sinus : java.lang.Math.sin(x)
                     a         e     e
         la variable ` l’unicit´ plan´taire :
         com.projetMIM2002.www.lala.test.RandomTest.nombreErreurs


     Si on a la flemme de taper tout cela tout le temps dans
                                                            e
     Toto.java, on peut importer une fois pour toutes, au d´but
     de ce fichier,
         une classe : import java.lang.Math ;
         ou bien toutes les classes d’un paquetage :
         import java.lang.* ;

                         e
     On n’est pas dispens´ de taper Classe.membre ou
     objet.membre... Exemple Math.sin(x).
11
                      Quelques conventions




     Tout le monde appelle ses classes avec une majuscule. Du
     coup les fichiers aussi.

     Les membres de la plupart des programmeurs sont minuscules.

     Vous faites bien ce que vous voudrez.




12
         e                   e
     Port´e des classes, port´e des identificateurs




13
               e                   e
           Port´e des classes, port´e des identificateurs


                          e
     Dans le corps d’une m´thode, c’est comme en C.




13
               e                   e
           Port´e des classes, port´e des identificateurs


                          e
     Dans le corps d’une m´thode, c’est comme en C.

                                                e
     Dans le corps d’une classe, un membre peut ˆtre
                                            e
         public : tout le monde le voit mˆme en dehors de la classe
                                         a     e
         private : visible uniquement ` l’int´rieur de la classe
         protected : visible dans la classe, ses sous-classes, et le
         paquetage
         rien du tout : visible dans le paquetage




13
               e                   e
           Port´e des classes, port´e des identificateurs


                          e
     Dans le corps d’une m´thode, c’est comme en C.

                                                e
     Dans le corps d’une classe, un membre peut ˆtre
                                            e
         public : tout le monde le voit mˆme en dehors de la classe
                                         a     e
         private : visible uniquement ` l’int´rieur de la classe
         protected : visible dans la classe, ses sous-classes, et le
         paquetage
         rien du tout : visible dans le paquetage


                                        e
     Dans un paquetage, une classe peut-ˆtre
                                            e
         public : tout le monde le voit mˆme en dehors du paquetage
         rien du tout : visible dans le paquetage seulement




13
               e                   e
           Port´e des classes, port´e des identificateurs


                          e
     Dans le corps d’une m´thode, c’est comme en C.

                                                e
     Dans le corps d’une classe, un membre peut ˆtre
                                            e
         public : tout le monde le voit mˆme en dehors de la classe
                                         a     e
         private : visible uniquement ` l’int´rieur de la classe
         protected : visible dans la classe, ses sous-classes, et le
         paquetage
         rien du tout : visible dans le paquetage


                                        e
     Dans un paquetage, une classe peut-ˆtre
                                            e
         public : tout le monde le voit mˆme en dehors du paquetage
         rien du tout : visible dans le paquetage seulement


     Vous trouverez plein d’exemples sur le Ternet.

13
          Types de base et objets
1 Introduction

2 Grands principes

3 Pour en finir avec l’organisation

4 Types de base et objets

5 Le reste est dans le manuel



 14
                             Les faciles

                 e        e
     Entiers sign´s de diff´rentes tailles : byte (8 bits), short
     (16), int (32), long (64)
     Nombres en virgule flottante : float et double
     boolean qui vaut true ou false
                       e
     char est un caract`re Unicode (sur 16 bits !)

                                              e e
     Tous ces types ont une valeur initiale sp´cifi´e par le langage,
     mais javac fait des warning si on ne les initialise pas.
 class HelloHello {
  public static void main(String[] args) {
   int i;
   for(i=0; i<10; i++) {
     System.out.println("Hello, java, " + i + " fois?");
   }
  }
 }
15
                       Les objets




 import java.awt.*;

 class HelloLaFenetre {
  public static void main(String[] args) {
   Frame objet_fenetre;

   objet_fenetre = new Frame("Hello, java ?") ;
   objet_fenetre.setSize(300,100);
   objet_fenetre.setVisible(true);
  }
 }




16
                                           La vraie classe



     import java.awt.*;

     public class ObjetHello {
                                                     //import java.awt.*; // plus besoin ici
         private Frame fenetre;
                                                     public class ProjetHello {
         public void construit(String titre){
           fenetre = new Frame(titre) ;
                                                         public static void main(String[] args) {
           fenetre.setSize(300,100);
                                                           // un objet que c’est moi qui l’ai fait
           fenetre.setVisible(true);
                                                           ObjetHello uoqcmqlaf;
           }
                                                             uoqcmqlaf = new ObjetHello();
         //constructeurs
           public ObjetHello(){
                                                             uoqcmqlaf = new ObjetHello("Youpi!");
             construit("Hello, java ?");
           }
                                                         }
          public ObjetHello(String titre){
                                                     }
            construit(titre);
          }
          // Pas besoin de main() ici
     }




17
                                                                     e
                                                                    H´ritage

                   a e
Reprenons cet UML bˆcl´ :
straterisk




                       jeu




                                Plateau
                         +cases: Case[][] =
                         +tour_de_jeu(): void
                         +afficher(): void
                         +enregistrer(): void
                         +charger(): void                                      armee


                                                                                                      Unite
                                                                                              +force_de_frappe: int
     terrain                                                                                  +dessine_toi(): void


                                  Case
                   +occupants: Unite[]
                   +meteo: Meteo
                   +dessine_toi(): void
                                                                                  UniteAerienne    UniteNavale        UniteTerrestre
                   +dessine_tes_occupants(): void



                 Mer                              Terre
                                          +facilite
         +dessine_toi(): void             +dessine_toi(): void



                                Desert           Plaine          Montagne
                        +dessine_toi(): void




18
                                            e
                                           H´ritage

              a
et passons-le ` dia2code
                                                      package straterisk.terrain;

                                                      import straterisk.terrain.Case;
     package straterisk.terrain;
                                                      public class Terre extends Case {
     import straterisk.jeu.Plateau;                     /** Attributes */
                                                        public facilite;
     public abstract class Case {                       /**
       /** Attributes */                                  * Operation
       public Unite[] occupants;                          *
       public Meteo meteo;                                */
       /** Associations */                              public void dessine_toi ( ){
       private Plateau;                                 }
       /**                                            }
         * Operation
         *
         */                                           package straterisk.terrain;
       abstract public void dessine_toi ( );
       /**                                            import straterisk.terrain.Terre;
         * Operation
         *                                            public class Desert extends Terre {
         */                                             /**
       public void dessine_tes_occupants ( ){             * Operation
       }                                                  *
     }                                                    */
                                                        public void dessine_toi ( ){
                                                        }
                                                      }



19
                        Remarques sordides




dia2code c’est pas encore cela
         e
     Il g`re bien les import et package dans le code source, mais
                           e             e
     ne construit pas la hi´rarchie des r´pertoires
     La version du CRI est un peu vieille
     Utilisable uniquement en phase initiale
                           a       e e              e
Mais bon, cela vous oblige ` bien r´fl´chir votre mod`le objet
avant de coder...




20
              Retour aux types de base : les bizarres



     String est une classe d’objets (majuscule...) mais avec du
     sucre syntaxique dans le langage pour le constructeur, la
            e
     concat´nation (+), ...
      int i,j ;
      String errorMessage ;
      (...)
      errorMessage="Feature not implemented, because we
      started the project two days before the deadline" ;
       e                 ıne
     M´thodes d’une chaˆ : errorMessage.length(), et plein
     d’autres.

                         ınes de taille variable (StringBuffer), etc
     Il y a aussi des chaˆ



21
                Retour aux types : les bizarres (2)

Les tableaux sont aussi des objets avec du sucre syntaxique et
 e                        e e
s´mantique (classe param´tr´e).
 public class SpaceHello {

     public static void main(String[] args) {
     ObjetHello[] plein_de_fenetres;

     if(args.length == 0)
       System.err.println("Usage: java SpaceHello text ");
     else
       {
         int i;
         plein_de_fenetres = new ObjetHello[args.length];
         for(i=0; i<args.length; i++)
            plein_de_fenetres[i] = new ObjetHello(args[i]);
       }
     }
 }
22
      Le reste est dans le manuel
1 Introduction

2 Grands principes

3 Pour en finir avec l’organisation

4 Types de base et objets

5 Le reste est dans le manuel




 23
                              ee
                             R´f´rences




     Le site de Sun
         Des tutoriels
                      ee
         La doc de r´f´rence sur le langage (on s’en passe bien)
                      ee                                a
         La doc de r´f´rences sur les classes standard (` parcourir
         absolument !)
                  ee
         le tout t´l´chargeable pour pouvoir partir en vacances avec
                       a            e
     Plein de bouquins ` la biblioth`que
                               c
     Celui de Brondeau en fran¸ais
      ⊕ court
      ⊕ en fran¸ais
               c
                 e
         un peu l`ge sur l’OO




24