IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Interrogtion sur "toString()"


Sujet :

avec Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 757
    Points : 208
    Points
    208
    Par défaut Interrogtion sur "toString()"
    Bonjour,
    J'ai une classe Livre qui étends Article. Avec une constructeur dans la classe Livre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public LivreC3(int reference,String designation,double 
        		 prix,String isbn,int nbPages,PersonneC auteur) 
        		          {   
        		              super(reference,designation,prix); 
        		              setIsbn(isbn); 
        		              setNbPages(nbPages); 
        		              setAuteur(auteur);
        		          }
    que j'utilise dans une classe Main pour instancier des objets Livre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    l=new LivreC3();
            l.setReference(005);
            l.setDesignation("Le Pigeon3");
            l.setPrix(35.54);
            l.setIsbn("1245879218");
            l.setNbPages(375);
            l.setAuteur(p=new PersonneC("Zone3","Eric3",LocalDate.of(1983, 12,11),l.getReference(),l.getDesignation(),l.getPrix()));
    J'ajoute tous ces objets dans une liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    listArticle.addAll(p.getoeuvresList());
    ou p est l'objet qui instance la classe Personne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class PersonneC  
     { 
         private String nom; 
         private String prenom; 
         private LocalDate date_nais; 
         private ArrayList<ArticleC> oeuvresList; // p.getoeuvresList()
    ...
    A la fin de toutes les instanciations je parcours la liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Article a;
    a=new ArticleC();
    Iterator<ArticleC> itA;
            itA=listArticle.iterator();
            while (itA.hasNext())
            {
            	a=  itA.next();
            	System.out.println("Liste des Article(s)itA " + a.toString());
           
            } 
            System.out.println("il y a  " + listArticle.size() + " articles(s) dans la liste");
    La particularité est que je stipule et que le programme va sur la toString de la classe Livre qui étends la classe Article
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     public String toString() 
            	          {       	            
            	              return super.toString() +
            	        " Nbre Pages  : "	  + getNbPages() +
            	               " ISBN : " + getIsbn() +
            	              " Auteur :  " + getAuteur();	       	              
            	          }
    car si j'enlève
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return super.toString()
    Il donne comme résultat :

    Liste des Article(s)itA Nbre Pages : 254 ISBN : 1245879215 Auteur : Eric3 Zone3 1983-12-11
    Liste des Article(s)itA Nbre Pages : 254 ISBN : 1245879215 Auteur : Eric3 Zone3 1983-12-11
    Liste des Article(s)itA Nbre Pages : 254 ISBN : 1245879215 Auteur : Eric3 Zone3 1983-12-11
    Liste des Article(s)itA Nbre Pages : 275 ISBN : 1245879217 Auteur : Eric3 Zone3 1983-12-11
    Liste des Article(s)itA Nbre Pages : 375 ISBN : 1245879218 Auteur : Eric3 Zone3 1983-12-11
    il y a 5 articles(s) dans la liste

    Il doit y avoir une raison, si quelqu'un la connait MErci

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    ben, parce que ce sont des Livres que tu as créés avec new Livre(), et que derrière tu demandes à exécuter leurs méthodes toString(), donc ils exécutent celle de leur classe, la classe Livre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 757
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Hello,

    ben, parce que ce sont des Livres que tu as créés avec new Livre(), et que derrière tu demandes à exécuter leurs méthodes toString(), donc ils exécutent celle de leur classe, la classe Livre.
    ****************************************
    Merci pour ta réponse, c'est dont ce que je me doutais un peu mais curieux quand même comme logique car je demande dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Article a;
    a=new ArticleC();
    Iterator<ArticleC> itA;
            itA=listArticle.iterator();
            while (itA.hasNext())
            {
            	a=  itA.next();
            	System.out.println("Liste des Article(s)itA " + a.toString());
     
            } 
            System.out.println("il y a  " + listArticle.size() + " articles(s) dans la liste");
    d'utiliser le toString de a donc de Article...
    Bon en tout cas merci à+

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    C'est tout le principe du polymorphisme, l'un des mécanismes principaux de la programmation orientée objet.

    Quand on demande à exécuter une méthode, on le demande à l'objet sur lequel on appelle cette méthode. Et cet objet va appeler sa méthode à lui. Les variables qui l'ont impliqué ne rentrent pas en compte.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    Citation Envoyé par xeron33 Voir le message
    Bonjour,
    J'ai une classe Livre qui étends Article. Avec une constructeur dans la classe Livre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public LivreC3(int reference,String designation,double 
        		 prix,String isbn,int nbPages,PersonneC auteur) 
        		          {   
        		              super(reference,designation,prix); 
        		              setIsbn(isbn); 
        		              setNbPages(nbPages); 
        		              setAuteur(auteur);
        		          }
    que j'utilise dans une classe Main pour instancier des objets Livre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    l=new LivreC3();
            l.setReference(005);
            l.setDesignation("Le Pigeon3");
            l.setPrix(35.54);
            l.setIsbn("1245879218");
            l.setNbPages(375);
            l.setAuteur(p=new PersonneC("Zone3","Eric3",LocalDate.of(1983, 12,11),l.getReference(),l.getDesignation(),l.getPrix()));
    question annexe (sans rapport avec ta question initiale): tu as un constructeur de LivreC3 tout ce qu'il y a de raisonnable... et tu utilises ensuite un constructeur sans paramètres ... Il y a un raison pour avoir un tel constructeur? (et pour l'utiliser ainsi?)
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 757
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par professeur shadoko Voir le message
    question annexe (sans rapport avec ta question initiale): tu as un constructeur de LivreC3 tout ce qu'il y a de raisonnable... et tu utilises ensuite un constructeur sans paramètres ... Il y a un raison pour avoir un tel constructeur? (et pour l'utiliser ainsi?)
    ************************************************************
    Non pas de raison, je dois dire que je me suis fais moi même la remarque quelque temps après, mais j'ai laissé comme ça, en effet je pouvais l'écrire autrement...
    Merci pour ta contribution
    A+

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 757
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par thelvin Voir le message
    C'est tout le principe du polymorphisme, l'un des mécanismes principaux de la programmation orientée objet.

    Quand on demande à exécuter une méthode, on le demande à l'objet sur lequel on appelle cette méthode. Et cet objet va appeler sa méthode à lui. Les variables qui l'ont impliqué ne rentrent pas en compte.
    ***************************************************
    MErci à toi pour l'info

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. UPDATE en ajoutant un 0 sur un champ de type "char"
    Par doum2 dans le forum Requêtes
    Réponses: 1
    Dernier message: 08/03/2006, 14h22
  2. Problème sur Request.ServerVariables("QUERY_STRING"
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 25/03/2005, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo