SlideShare une entreprise Scribd logo
1  sur  31
Variable vs variable
           Programme




                               Modèle statique
         Au début, il y a le
          programme...




                               Modèle dynamique
Variable vs variable
          Programme




                                           Modèle statique
 Classe     Classe




                                           Modèle dynamique
               Le programme définit un
               certain nombre de classes
Variable vs variable
           Programme




                                                Modèle statique
                        Les classes servent à
  Classe     Classe    instancier des objets




Objet      Objet            Objet




                                                Modèle dynamique
Variable vs variable
                  Programme




                                                           Modèle statique
  Classe            Classe




                                    Les objets possèdent
Objet             Objet                Objet méthodes
                                        des




                                                           Modèle dynamique
        Méthode           Méthode
Variable vs variable
                             Programme




                                                                                Modèle statique
  Classe                       Classe




                              Vous connaissez les
Objet                         variables locales?
                             Objet              Objet




                                                                                Modèle dynamique
        Méthode                    Méthode

           Variable locale              Variable locale 1   Variable locale N
Variable vs variable
                                                               Chaque « étage » peut
                             Programme                          avoir ses variables !
            Variable globale 1       Variable globale N




                                                                                        Modèle statique
  Classe                         Classe

    Variable de classe            Variable de classe 1    Variable de classe N




Objet                        Objet                            Objet




                                                                                        Modèle dynamique
 Variable d'instance 1           Variable d'instance            Variable d'instance




        Méthode                      Méthode

           Variable locale                Variable locale 1       Variable locale N
Variable vs variable
                             Programme

            Variable globale 1       Variable globale N




                                                                                    Modèle statique
  Classe                         Classe

    Variable de classe            Variable de classe 1    Variable de classe N


                                                       Seules les méthodes
Objet                        Objet                      sont « actives » !
                                                          Objet




                                                                                    Modèle dynamique
 Variable d'instance 1           Variable d'instance          Variable d'instance




        Méthode                      Méthode

           Variable locale                Variable locale 1     Variable locale N
Variable vs variable
                             Programme

            Variable globale 1       Variable globale N




                                                                                    Modèle statique
  Classe                         Classe

    Variable de classe            Variable de classe 1    Variable de classe N

                                                       Pendant son exécution,
                                                       une méthode « voit » de
Objet                        Objet                       Objet
                                                        nombreuses variables




                                                                                    Modèle dynamique
 Variable d'instance 1           Variable d'instance          Variable d'instance




        Méthode                      Méthode

           Variable locale                Variable locale 1     Variable locale N
Variable vs variable

Variables globales     Visible par toutes les méthodes de tous les
                       objets de toutes les classes




                                                                     Modèle statique
Variables de classe    Visible par toutes les méthodes de tous les
                       objets d'une classe




                                                                     Modèle dynamique
Variables d'instance   Visible par toutes les méthodes d'un objet




Variables locales      Visible par une méthode
Variable vs variable

Variables globales
                       + visible




                                   Modèle statique
Variables de classe




                                   Modèle dynamique
Variables d'instance




Variables locales      - visible
Variable vs variable

Variables globales




                                               Modèle statique
                          une déclaration
                                =
                          un exemplaire
Variables de classe




                                               Modèle dynamique
Variables d'instance
                          une déclaration
                                 =
                       plusieurs exemplaires


Variables locales
Variable vs variable
                       Dans un programme bien conçu
Variables globales                        - nombreuses




                                                         Modèle statique
Variables de classe




                                                         Modèle dynamique
Variables d'instance




Variables locales                        + nombreuses
Variable vs variable
                       Dans un programme bien conçu
Variables globales                  à utiliser en dernier ressort




                                                                     Modèle statique
Variables de classe




                                                                     Modèle dynamique
Variables d'instance




Variables locales                           à utiliser en priorité
Variable vs variable
 Un exemple:



        On veut un programme
        pour afficher une liste de
        livres
Variable vs variable
 Un exemple:

      public class Librairie {
          public static void main(String[] args) {
              Livre[] livres = {
                  new Livre(0, "The Hobbit"),
                  new Livre(1, "The Lord of the Ring")
              };



              for(Livre l : livres) {
                  System.out.println(l);
              }
          }
      }
Variable vs variable
 Un exemple:

           public class Librairie {
               public static void main(String[] args) {
                   Livre[] livres = {
                       new Livre(0, "The Hobbit"),
  Initialisation
                       new Livre(1, "The Lord of the Ring")
                   };



                 for(Livre l : livres) {
                     System.out.println(l);
   Traitement
                 }
             }
         }
Variable vs variable
 Un exemple:

           public class Librairie {
               public static void main(String[] args) {
                   Livre[] livres = {
                       new Livre(0, "The Hobbit"),
  Initialisation
                       new Livre(1, "The Lord of the Ring")
                   };
                                              Ces données doivent
                                              pouvoir être récupérées là

                 for(Livre l : livres) {
                     System.out.println(l);
   Traitement
                 }
             }
         }
Variable vs variable
 Un exemple:

           public class Librairie {
               public static void main(String[] args) {
                   Livre[] livres = {
                       new Livre(0, "The Hobbit"),
  Initialisation
                       new Livre(1, "The Lord of the Ring")
                   };
                                        Solution:
                                      Chaque livre doit mémoriser ses
                                      informations
                 for(Livre l : livres) {
                     System.out.println(l);
   Traitement
                 }
             }
         }
Variable vs variable

Variables globales     Une pour le programme




                                                          Modèle statique
Variables de classe    Une pour la classe




                                                          Modèle dynamique
Variables d'instance   Une pour chaque objet




Variables locales      Une pour chaque appel de méthode
Variable vs variable

Variables globales     Une pour le programme




                                                             Modèle statique
Variables de classe    Une pour la classe
                           Chaque livre doit mémoriser ses
                           informations




                                                             Modèle dynamique
Variables d'instance   Une pour chaque objet




Variables locales      Une pour chaque appel de méthode
Variable vs variable
 Un exemple:

       public class Livre {
           public Livre(int id, String titre) {
               this.id = id;
               this.titre = titre;
           }

           public String toString() {
               return "id: " + id + " titre: " + titre;
           }

           private final int           id;
           private final String        titre;
       }
Variable vs variable
   Un exemple:

                 public class Livre {
                     public Livre(int id, String titre) {
  Constructeur:          this.id = id;
           Sert         this.titre = titre;
                 à
initialiser l'objet
                     }

               public String toString() {
                   return "id: " + id + " titre: " + titre;
      Méthode
               }

                private final int           id;
                private final String        titre;
            }
Variable vs variable
 Un exemple:
                                              paramètre ≈ variable locale
          public class Livre {
              public Livre(int id, String titre) {
                  this.id = id;
Constructeur
                  this.titre = titre;
              }

            public String toString() {
                return "id: " + id + " titre: " + titre;
   Méthode
            }

             private final int           id;
             private final String        titre;
         }
                                             Variable d'instance
Variable vs variable
 Un exemple:

      public class Librairie {
          public static void main(String[] args) {
              Livre[] livres = {
                  new Livre(0, "The Hobbit"),
                  new Livre(1, "The Lord of the Ring"),
                  new Livre(1, "Tom Bombadil")
              };



              for(Livre l : livres) {
                  System.out.println(l);
              }
          }
      }
Variable vs variable
 Un exemple:

      public class Librairie {
          public static void main(String[] args) {
              Livre[] livres = {
                  new Livre(0, "The Hobbit"),
                  new Livre(1, "The Lord of the Ring"),
                  new Livre(1, "Tom Bombadil")
              };


                                       Oups !
              for(Livre l : livres) {
                  System.out.println(l);
              }
          }
      }
Variable vs variable
 Un exemple:

      public class Librairie {
          public static void main(String[] args) {
              Livre[] livres = {
                  new Livre(0, "The Hobbit"),
                  new Livre(1, "The Lord of the Ring"),
                  new Livre(1, "Tom Bombadil")
              };

                                Solution:
                              Ne pas compter sur l'appelant,
                              Mais mémoriser d'un objet à l'autre
              for(Livre l : livres) {
                              le compteur des « id »
                  System.out.println(l);
              }
          }
      }
Variable vs variable

Variables globales     Une pour le programme




                                                          Modèle statique
Variables de classe    Une pour la classe




                                                          Modèle dynamique
Variables d'instance   Une pour chaque objet




Variables locales      Une pour chaque appel de méthode
Variable vs variable

Variables globales     Une pour le programme objet à l'autre
                           Mais mémoriser d'un
                           le compteur des « id »




                                                          Modèle statique
Variables de classe    Une pour la classe




                                                          Modèle dynamique
Variables d'instance   Une pour chaque objet




Variables locales      Une pour chaque appel de méthode
Variable vs variable
 Un exemple:

       public class Livre {
           public Livre(String titre) {
               this.id = nextId++;
               this.titre = titre;
           }                                      Variable de classe

           public String toString() {
               return "id: " + id + " titre: " + titre;
           }

           private static int          nextId  = 0;
           private final  int          id;
           private final  String       titre;
       }
                                           Variable d'instance
Variable vs variable
 Refactorisez:




            public static void main(String[] args) {
                Librairie   librairie = new Librairie();

                librarie.afficheLivres();
            }




         http://olympe.maupertuis.intra/svn/cours/trunk
                                              ./variables
Variable vs variable
                                                     visibilité: +     -

  Modèle statique                Modèle dynamique

           Programme

       Variable globale                      Objet

                                              Variable d'instance
      Classe
                             instanciation
        Variable de classe
                                               Méthode

                                                     Variable locale




               Unique                        Autant que nécessaire

Contenu connexe

En vedette

1 presentación jornada 1 p. formadores esgn 2014 b2
1 presentación jornada 1 p. formadores esgn 2014 b21 presentación jornada 1 p. formadores esgn 2014 b2
1 presentación jornada 1 p. formadores esgn 2014 b2Eduardo R. Diaz Madero
 
La veille de Red Guy du 22.01.14 - La Now Generation
La veille de Red Guy du 22.01.14 - La Now GenerationLa veille de Red Guy du 22.01.14 - La Now Generation
La veille de Red Guy du 22.01.14 - La Now GenerationRed Guy
 
Du côté du cdi 19 16mars
Du côté du cdi 19 16marsDu côté du cdi 19 16mars
Du côté du cdi 19 16marsClaudie Merlet
 
Material bibliográfico
Material bibliográficoMaterial bibliográfico
Material bibliográficoRita Ramírez
 
Imaginons Saint-Armand...
Imaginons Saint-Armand...Imaginons Saint-Armand...
Imaginons Saint-Armand...darmandie
 
Prochain lieu de
Prochain lieu de Prochain lieu de
Prochain lieu de Fanny Diori
 
La veille de red guy du 16.07.14 parler aux étudiants
La veille de red guy du 16.07.14   parler aux étudiantsLa veille de red guy du 16.07.14   parler aux étudiants
La veille de red guy du 16.07.14 parler aux étudiantsRed Guy
 
Marta bedoya sánchez
Marta bedoya sánchez Marta bedoya sánchez
Marta bedoya sánchez soledadojeda
 
Référentiel métier informateur jeunesse réseau ij 2013
Référentiel métier informateur jeunesse réseau ij 2013Référentiel métier informateur jeunesse réseau ij 2013
Référentiel métier informateur jeunesse réseau ij 2013InfoJeunesse ValdOise
 
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...Sébastien Prunier
 
Richard De Bury Histoire De St Louis Roi De France
Richard De Bury   Histoire De St Louis Roi De FranceRichard De Bury   Histoire De St Louis Roi De France
Richard De Bury Histoire De St Louis Roi De FranceSais Abdelkrim
 
Pensez écolo
Pensez écoloPensez écolo
Pensez écoloCurrante
 
FCE, le 19 Octobre 2015 _ Pour une réforme du droit de lentreprise en diffic...
FCE, le 19  Octobre 2015 _ Pour une réforme du droit de lentreprise en diffic...FCE, le 19  Octobre 2015 _ Pour une réforme du droit de lentreprise en diffic...
FCE, le 19 Octobre 2015 _ Pour une réforme du droit de lentreprise en diffic...OUADA Yazid
 
La persévérance
La persévéranceLa persévérance
La persévérancewafaa3d
 
Du côté du cdi 26 1juin
Du côté du cdi 26 1juinDu côté du cdi 26 1juin
Du côté du cdi 26 1juinClaudie Merlet
 
Sentiments
SentimentsSentiments
SentimentsCurrante
 
Unique labs labothèque v4
Unique labs labothèque v4Unique labs labothèque v4
Unique labs labothèque v4uniquelabs
 

En vedette (20)

1 presentación jornada 1 p. formadores esgn 2014 b2
1 presentación jornada 1 p. formadores esgn 2014 b21 presentación jornada 1 p. formadores esgn 2014 b2
1 presentación jornada 1 p. formadores esgn 2014 b2
 
La veille de Red Guy du 22.01.14 - La Now Generation
La veille de Red Guy du 22.01.14 - La Now GenerationLa veille de Red Guy du 22.01.14 - La Now Generation
La veille de Red Guy du 22.01.14 - La Now Generation
 
Du côté du cdi 19 16mars
Du côté du cdi 19 16marsDu côté du cdi 19 16mars
Du côté du cdi 19 16mars
 
Musique sur internet
Musique sur internetMusique sur internet
Musique sur internet
 
Material bibliográfico
Material bibliográficoMaterial bibliográfico
Material bibliográfico
 
Imaginons Saint-Armand...
Imaginons Saint-Armand...Imaginons Saint-Armand...
Imaginons Saint-Armand...
 
Prochain lieu de
Prochain lieu de Prochain lieu de
Prochain lieu de
 
La veille de red guy du 16.07.14 parler aux étudiants
La veille de red guy du 16.07.14   parler aux étudiantsLa veille de red guy du 16.07.14   parler aux étudiants
La veille de red guy du 16.07.14 parler aux étudiants
 
Marta bedoya sánchez
Marta bedoya sánchez Marta bedoya sánchez
Marta bedoya sánchez
 
Cheese boutique
Cheese boutiqueCheese boutique
Cheese boutique
 
Référentiel métier informateur jeunesse réseau ij 2013
Référentiel métier informateur jeunesse réseau ij 2013Référentiel métier informateur jeunesse réseau ij 2013
Référentiel métier informateur jeunesse réseau ij 2013
 
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
 
Richard De Bury Histoire De St Louis Roi De France
Richard De Bury   Histoire De St Louis Roi De FranceRichard De Bury   Histoire De St Louis Roi De France
Richard De Bury Histoire De St Louis Roi De France
 
Actividad Nº 6
Actividad Nº 6Actividad Nº 6
Actividad Nº 6
 
Pensez écolo
Pensez écoloPensez écolo
Pensez écolo
 
FCE, le 19 Octobre 2015 _ Pour une réforme du droit de lentreprise en diffic...
FCE, le 19  Octobre 2015 _ Pour une réforme du droit de lentreprise en diffic...FCE, le 19  Octobre 2015 _ Pour une réforme du droit de lentreprise en diffic...
FCE, le 19 Octobre 2015 _ Pour une réforme du droit de lentreprise en diffic...
 
La persévérance
La persévéranceLa persévérance
La persévérance
 
Du côté du cdi 26 1juin
Du côté du cdi 26 1juinDu côté du cdi 26 1juin
Du côté du cdi 26 1juin
 
Sentiments
SentimentsSentiments
Sentiments
 
Unique labs labothèque v4
Unique labs labothèque v4Unique labs labothèque v4
Unique labs labothèque v4
 

Plus de Sylvain Leroux

Plus de Sylvain Leroux (8)

ModèLes DexéCution
ModèLes DexéCutionModèLes DexéCution
ModèLes DexéCution
 
Le Jdk En 5 Minutes
Le Jdk En 5 MinutesLe Jdk En 5 Minutes
Le Jdk En 5 Minutes
 
Java Platform
Java PlatformJava Platform
Java Platform
 
UML+Python
UML+PythonUML+Python
UML+Python
 
Premier contact avec Subversion
Premier contact avec SubversionPremier contact avec Subversion
Premier contact avec Subversion
 
Notion de fonction en Python
Notion de fonction en PythonNotion de fonction en Python
Notion de fonction en Python
 
Poo
PooPoo
Poo
 
Merise vs UML
Merise vs UMLMerise vs UML
Merise vs UML
 

Variables variables

  • 1. Variable vs variable Programme Modèle statique Au début, il y a le programme... Modèle dynamique
  • 2. Variable vs variable Programme Modèle statique Classe Classe Modèle dynamique Le programme définit un certain nombre de classes
  • 3. Variable vs variable Programme Modèle statique Les classes servent à Classe Classe instancier des objets Objet Objet Objet Modèle dynamique
  • 4. Variable vs variable Programme Modèle statique Classe Classe Les objets possèdent Objet Objet Objet méthodes des Modèle dynamique Méthode Méthode
  • 5. Variable vs variable Programme Modèle statique Classe Classe Vous connaissez les Objet variables locales? Objet Objet Modèle dynamique Méthode Méthode Variable locale Variable locale 1 Variable locale N
  • 6. Variable vs variable Chaque « étage » peut Programme avoir ses variables ! Variable globale 1 Variable globale N Modèle statique Classe Classe Variable de classe Variable de classe 1 Variable de classe N Objet Objet Objet Modèle dynamique Variable d'instance 1 Variable d'instance Variable d'instance Méthode Méthode Variable locale Variable locale 1 Variable locale N
  • 7. Variable vs variable Programme Variable globale 1 Variable globale N Modèle statique Classe Classe Variable de classe Variable de classe 1 Variable de classe N Seules les méthodes Objet Objet sont « actives » ! Objet Modèle dynamique Variable d'instance 1 Variable d'instance Variable d'instance Méthode Méthode Variable locale Variable locale 1 Variable locale N
  • 8. Variable vs variable Programme Variable globale 1 Variable globale N Modèle statique Classe Classe Variable de classe Variable de classe 1 Variable de classe N Pendant son exécution, une méthode « voit » de Objet Objet Objet nombreuses variables Modèle dynamique Variable d'instance 1 Variable d'instance Variable d'instance Méthode Méthode Variable locale Variable locale 1 Variable locale N
  • 9. Variable vs variable Variables globales Visible par toutes les méthodes de tous les objets de toutes les classes Modèle statique Variables de classe Visible par toutes les méthodes de tous les objets d'une classe Modèle dynamique Variables d'instance Visible par toutes les méthodes d'un objet Variables locales Visible par une méthode
  • 10. Variable vs variable Variables globales + visible Modèle statique Variables de classe Modèle dynamique Variables d'instance Variables locales - visible
  • 11. Variable vs variable Variables globales Modèle statique une déclaration = un exemplaire Variables de classe Modèle dynamique Variables d'instance une déclaration = plusieurs exemplaires Variables locales
  • 12. Variable vs variable Dans un programme bien conçu Variables globales - nombreuses Modèle statique Variables de classe Modèle dynamique Variables d'instance Variables locales + nombreuses
  • 13. Variable vs variable Dans un programme bien conçu Variables globales à utiliser en dernier ressort Modèle statique Variables de classe Modèle dynamique Variables d'instance Variables locales à utiliser en priorité
  • 14. Variable vs variable Un exemple: On veut un programme pour afficher une liste de livres
  • 15. Variable vs variable Un exemple: public class Librairie {     public static void main(String[] args) {         Livre[] livres = {             new Livre(0, "The Hobbit"),             new Livre(1, "The Lord of the Ring")         };         for(Livre l : livres) {             System.out.println(l);         }     } }
  • 16. Variable vs variable Un exemple: public class Librairie {     public static void main(String[] args) {         Livre[] livres = {             new Livre(0, "The Hobbit"), Initialisation             new Livre(1, "The Lord of the Ring")         };         for(Livre l : livres) {             System.out.println(l); Traitement         }     } }
  • 17. Variable vs variable Un exemple: public class Librairie {     public static void main(String[] args) {         Livre[] livres = {             new Livre(0, "The Hobbit"), Initialisation             new Livre(1, "The Lord of the Ring")         }; Ces données doivent pouvoir être récupérées là         for(Livre l : livres) {             System.out.println(l); Traitement         }     } }
  • 18. Variable vs variable Un exemple: public class Librairie {     public static void main(String[] args) {         Livre[] livres = {             new Livre(0, "The Hobbit"), Initialisation             new Livre(1, "The Lord of the Ring")         }; Solution: Chaque livre doit mémoriser ses informations         for(Livre l : livres) {             System.out.println(l); Traitement         }     } }
  • 19. Variable vs variable Variables globales Une pour le programme Modèle statique Variables de classe Une pour la classe Modèle dynamique Variables d'instance Une pour chaque objet Variables locales Une pour chaque appel de méthode
  • 20. Variable vs variable Variables globales Une pour le programme Modèle statique Variables de classe Une pour la classe Chaque livre doit mémoriser ses informations Modèle dynamique Variables d'instance Une pour chaque objet Variables locales Une pour chaque appel de méthode
  • 21. Variable vs variable Un exemple: public class Livre {     public Livre(int id, String titre) {         this.id = id;         this.titre = titre;     }     public String toString() {         return "id: " + id + " titre: " + titre;     }     private final int           id;     private final String        titre; }
  • 22. Variable vs variable Un exemple: public class Livre {     public Livre(int id, String titre) { Constructeur:         this.id = id; Sert         this.titre = titre; à initialiser l'objet     }     public String toString() {         return "id: " + id + " titre: " + titre; Méthode     }     private final int           id;     private final String        titre; }
  • 23. Variable vs variable Un exemple: paramètre ≈ variable locale public class Livre {     public Livre(int id, String titre) {         this.id = id; Constructeur         this.titre = titre;     }     public String toString() {         return "id: " + id + " titre: " + titre; Méthode     }     private final int           id;     private final String        titre; } Variable d'instance
  • 24. Variable vs variable Un exemple: public class Librairie {     public static void main(String[] args) {         Livre[] livres = {             new Livre(0, "The Hobbit"),             new Livre(1, "The Lord of the Ring"),             new Livre(1, "Tom Bombadil")         };         for(Livre l : livres) {             System.out.println(l);         }     } }
  • 25. Variable vs variable Un exemple: public class Librairie {     public static void main(String[] args) {         Livre[] livres = {             new Livre(0, "The Hobbit"),             new Livre(1, "The Lord of the Ring"),             new Livre(1, "Tom Bombadil")         }; Oups !         for(Livre l : livres) {             System.out.println(l);         }     } }
  • 26. Variable vs variable Un exemple: public class Librairie {     public static void main(String[] args) {         Livre[] livres = {             new Livre(0, "The Hobbit"),             new Livre(1, "The Lord of the Ring"),             new Livre(1, "Tom Bombadil")         }; Solution: Ne pas compter sur l'appelant, Mais mémoriser d'un objet à l'autre         for(Livre l : livres) { le compteur des « id »             System.out.println(l);         }     } }
  • 27. Variable vs variable Variables globales Une pour le programme Modèle statique Variables de classe Une pour la classe Modèle dynamique Variables d'instance Une pour chaque objet Variables locales Une pour chaque appel de méthode
  • 28. Variable vs variable Variables globales Une pour le programme objet à l'autre Mais mémoriser d'un le compteur des « id » Modèle statique Variables de classe Une pour la classe Modèle dynamique Variables d'instance Une pour chaque objet Variables locales Une pour chaque appel de méthode
  • 29. Variable vs variable Un exemple: public class Livre {     public Livre(String titre) {         this.id = nextId++;         this.titre = titre;     } Variable de classe     public String toString() {         return "id: " + id + " titre: " + titre;     }     private static int          nextId  = 0;     private final  int          id;     private final  String       titre; } Variable d'instance
  • 30. Variable vs variable Refactorisez:     public static void main(String[] args) {         Librairie   librairie = new Librairie();         librarie.afficheLivres();     } http://olympe.maupertuis.intra/svn/cours/trunk ./variables
  • 31. Variable vs variable visibilité: + - Modèle statique Modèle dynamique Programme Variable globale Objet Variable d'instance Classe instanciation Variable de classe Méthode Variable locale Unique Autant que nécessaire