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 :

Redéfinition d'une classe


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut Redéfinition d'une classe
    j'ai un code devant moi que j'arrive pas à comprendre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    import java.util.Vector;
    import java.io.*;
     
    public class trace {
        public static void main(String argv[]) {
    	Vector v = new Vector();
    	v.addElement(new AA("UN"));
    	v.addElement(new AA("DEUX"));
    	v.addElement(new AA("TROIS"));
    	System.out.println(v);
        }
    }
     
    class AA {
        String nom;
        public AA (String lenom) {
    	nom = lenom;
        }
        public String toString() {
    	return nom;
        }
    }
    ce que je ne comprend pas c'est comment et quand le programme fait appelle à la méthode toString() ?? savant que l'exécution se passe bien

  2. #2
    Membre éclairé
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Points : 709
    Points
    709
    Par défaut
    [QUOTE=Zikas-r;3847985]j'ai un code devant moi que j'arrive pas à comprendre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    import java.util.Vector;
    import java.io.*;
     
    public class trace {
        public static void main(String argv[]) {
    	Vector v = new Vector();
    	v.addElement(new AA("UN"));/* ici tu appelles la fonction responsable de tout ça*/
    	v.addElement(new AA("DEUX"));
    	v.addElement(new AA("TROIS"));
    	System.out.println(v);
        }
    }
     
    class AA {
        String nom;
        public AA (String lenom) { /*c'est la fonction responsable de tout ça*/
    	nom = lenom;
        }
        public String toString() {
    	return nom;
        }
    }
    la fonction
    public AA (String lenom) { /*c'est la fonction responsable de tout ça*/
    nom = lenom;
    }

    s'appelle un constructeur, c'est elle qui assigne lenom a nom
    cordialement
    If you type Google into Google, you Can break the internet" - The IT Crowd

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut
    Merci pour ta réponse
    en faite je sais bien que c'est le constructeur. Quand on crée l'objet AA on fait appelle au constructeur de AA automatiquement ça c'est claire mais l'appel de toString() que je ne comprend pas quand ça se fait !!

  4. #4
    Membre éclairé
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Points : 709
    Points
    709
    Par défaut re
    tu peux écrire les résultats affiché stp?
    If you type Google into Google, you Can break the internet" - The IT Crowd

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut
    voila le résultat affiché :

    si j'enlève la méthode toString() j'obtiens le résultat suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [AA@3e25a5, AA@19821f, AA@addbf1]

  6. #6
    Membre éclairé
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Points : 709
    Points
    709
    Par défaut
    peut etre que
    public String toString() {
    return nom;

    }
    fonctionne comme un "constructeur". essaye de changer quelques paramètres de la fonction pour expérimenter les résultats.
    If you type Google into Google, you Can break the internet" - The IT Crowd

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut
    Peut être !!
    Merci pour tt, you are the
    En attendant une réponse plus précise...

  8. #8
    Invité
    Invité(e)
    Par défaut
    Salut,
    Tu appelles tout simplement la méthode toString de ton Vector en l'affichant avec System.out.println(), et cette méthode toString de Vector doit appeler le toString des objects qu'il contient. Si tu ne redéfinis pas ta méthode toString, celle par défaut est celle de la classe Object (dont toutes les classes héritent implicitement en Java), qui donne tout simplement l'adresse de l'objet en mémoire (le "AA@3e25a5" -> Type@Adresse)

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par buggen25 Voir le message
    peut etre que
    public String toString() {
    return nom;

    }
    fonctionne comme un "constructeur".
    Bien sûr que non... C'est une méthode !





    La méthode toString est définie dans la classe Object.
    Par défaut, elle renvoie une représentation de la référence de l'objet (enfin je crois). Ce sont les "AA@3e25a5" bizarres que tu obtiens quand tu ne définis pas explicitement cette méthode dans ta classe AA : "objet AA n° 3e25a5". Pour des explications plus exactes de la signification du numéro 3e25a5 il faudra quelqu'un d'autre que moi...
    En redéfinissant cette méthode, tu peux définir la représentation que tu veux pour ton objet.

    Dans ton exemple :
    La fonction main définit un objet Vector, rempli avec trois objets AA (appelons-les a, b, c). Puis en appelant System.out.println(v); c'est en fait un System.out.println(v.toString()); qui est appelé implicitement.
    La méthode toString de l'objet Vector renvoie une représentation du vecteur sous la forme [a.toString(), b.toString(), c.toString()].
    Et donc, selon la définition de la méthode toString de la classe AA (soit la définition par défaut soit ta redéfinition), tu obtiens tes deux résultats.



    EDIT : mince, j'ai mis au moins 15 min à écrire ces qqs lignes ??

  10. #10
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut
    donc si je comprend bien à chaque fois que je fait appelle à ça entraine un appelle implicite automatique de toString() ??

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par Zikas-r Voir le message
    ça entraine un appelle implicite automatique de toString() ??
    Oui, bien sûr !
    Tu cherches à écrire une chaîne de caractère dans ta sortie standard... Et donc dès que tu passes un objet différent d'un String à la fonction println il faut bien que celle-ci trouve cette chaîne de caractère quelque part

  12. #12
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut
    Ban merci à vous tous des gas comme vous me font aimé JAVA

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

Discussions similaires

  1. destruction d'une classe qui herite de CDialog
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 03/02/2004, 17h39
  2. Réponses: 14
    Dernier message: 15/01/2004, 01h15
  3. Conception d'une classe parente
    Par VincentB dans le forum Langage
    Réponses: 9
    Dernier message: 24/06/2003, 17h28
  4. Variable d'une Classe Ancêtre
    Par Génie dans le forum Langage
    Réponses: 3
    Dernier message: 18/09/2002, 19h24
  5. Sortir un typedef d'une classe
    Par Theophil dans le forum C++Builder
    Réponses: 13
    Dernier message: 03/07/2002, 17h21

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