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 :

Problème avec une methode de classe qui retourne le même objet de classe


Sujet :

avec Java

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Points : 92
    Points
    92
    Par défaut Problème avec une methode de classe qui retourne le même objet de classe
    Bonjour,

    Je suis étudiant et on apprend a lire dans les fichier en java et utilise netbeans

    mon problème est le suivant j'ai une classe nommée Personnes avec comme attribut numeros, nom, prenom, age, salaire, un constructeur vide et un constructeur paramétré avec comme paramètre tous les attribut.
    J'ai les getter et setter, et une méthode read qui lit dans un fichier binaire 1 personne a la fois et qui la retourne.
    Moi je pensais dans ma méthode read de retourner l'objet en cours avec this au lieu de retourner un objet personne et d'instancier une nouvelle personne à l'intérieur de la methode .
    Seulement netbeans me donne une erreur et me dis

    illegal start of type
    invalid method declaration; return type required

    voici ma classe
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    public class Personnes {
     
        private int numero;
        private String nom;
        private String prenom;
        private int age;
        private int salaire;
     
        public Personnes(){
     
        }
        public Personnes(int numero, String nom, String prenom, int age, int salaire) {
            this.numero = numero;
            this.nom = nom;
            this.prenom = prenom;
            this.age = age;
            this.salaire = salaire;
        }
     
        public int getSalaire() {
            return salaire;
        }
     
        public int getAge() {
            return age;
        }
     
        public String getNom() {
            return nom;
        }
     
        public int getNumero() {
            return numero;
        }
     
        public String getPrenom() {
            return prenom;
        }
     
        public void setAge(int age) {
            this.age = age;
        }
     
        public void setNom(String nom) {
            this.nom = nom;
        }
     
        public void setNumero(int numero) {
            this.numero = numero;
        }
     
        public void setPrenom(String prenom) {
            this.prenom = prenom;
        }
     
        public void setSalaire(int salaire) {
            this.salaire = salaire;
        }
     
            public this read(DataInputStream f) throws IOException {
     
            try {
                this.setNumero(f.readInt());
                this.setNom(f.readUTF()) ;
                this.setPrenom(f.readUTF()) ;
                this.setAge(f.readInt());
                this.setSalaire(f.readInt());
            } catch (EOFException e) {
                this = null;
            }
            return this;
        }
    }
    Et ce que il n'est pas possible de retourner l'objet en cours ou c'est moi qui fais une erreur.
    merci d'avance pour votre aide

    Di Blasio Michael

  2. #2
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 38
    Points : 52
    Points
    52
    Par défaut
    Hello,

    ne pas confondre class et instance.
    this est une instance de ta classe Personne.

    Ta signature doit retourner des class et pas des instances.
    Ca devrait etre donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      public Personnes read(DataInputStream f) throws IOException {
     
            try {
                this.setNumero(f.readInt());
                this.setNom(f.readUTF()) ;
                this.setPrenom(f.readUTF()) ;
                this.setAge(f.readInt());
                this.setSalaire(f.readInt());
            } catch (EOFException e) {
                this = null;
            }
            return this;
        }
    Attention à la conception de ton truc, c'est quand même bien faux.
    this = null à éviter (je sais mm pas ce que ca donne à l'exécution)!!

    De plus ta class devrait s'appeler Personne (sans s à la fin)

    Enfin tu devrait créer une méthode en charge de construire et retrouver tes personnes (on appelle ça un DAO pour data access object).

    ++

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    Citation Envoyé par super_toinou Voir le message
    this = null à éviter (je sais mm pas ce que ca donne à l'exécution)!!
    'Suffit d'essayer. Ça ne compile pas, donc ça ne s'exécute pas non plus.
    On ne peut pas affecter this.

    C'est pas tant à éviter, qu'une syntaxe incorrecte qui ne compile pas.

  4. #4
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Points : 92
    Points
    92
    Par défaut
    merci pour la réponse aussi rapide
    C'est bien juste this = null ne fonctionne pas
    donc si on ne prend pas en compte la DAO car pour l'instant je ne connais. pas la méthode "juste" serrait de créer un nouvelle objet Personne dans ma méthode comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        public Personne read(DataInputStream f) throws IOException {
            Personne pers = null;
            try {
                pers.setNumero(f.readInt());
                pers.setNom(f.readUTF());
                pers.setPrenom(f.readUTF());
                pers.setAge(f.readInt());
                pers.setSalaire(f.readInt());
            } catch (EOFException e) {
                pers = null;
            }
            return pers;
        }

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Points : 92
    Points
    92
    Par défaut
    En lisant un article sur wiki sur DAO
    je devrais avoir une classe qui me récupère les personne dans mon fichier
    et les stocker dans un Array de personne dans ma classe Personne
    et quand je veux récupérer une personne la méthode la récupère dans mon array de personne.

    J'ai lu en vitesse sa pourrais être cela le principe

  6. #6
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 38
    Points : 52
    Points
    52
    Par défaut
    Yep c'est ça !!

    par contre ton code va te donner un NullPointer
    il faut faire une new avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public Personne read(DataInputStream f) throws IOException {
            Personne pers = new Personne();
            try {
                pers.setNumero(f.readInt());
                pers.setNom(f.readUTF());
                pers.setPrenom(f.readUTF());
                pers.setAge(f.readInt());
                pers.setSalaire(f.readInt());
            } catch (EOFException e) {
                pers = null;
            }
            return pers;
        }

  7. #7
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Points : 92
    Points
    92
    Par défaut
    Un grand merci pour toute ces info et cette rapidité

    mais juste encore un petit détail avant tag en resolu le post

    le yep étais pour le DAO ou pour la méthode

  8. #8
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 38
    Points : 52
    Points
    52
    Par défaut
    pour les 2 !

  9. #9
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Points : 92
    Points
    92
    Par défaut
    ok merci

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

Discussions similaires

  1. problème avec une methode d'une classe
    Par membreComplexe12 dans le forum C++
    Réponses: 2
    Dernier message: 13/01/2011, 09h21
  2. Réponses: 5
    Dernier message: 29/05/2008, 10h05
  3. Problème avec une generic method
    Par Pragmateek dans le forum Langage
    Réponses: 15
    Dernier message: 24/05/2006, 19h25
  4. Problème avec une classe... "without object"
    Par z980x dans le forum C++
    Réponses: 8
    Dernier message: 27/04/2006, 16h00
  5. [POO] Prob avec une méthode de classe
    Par Ludo75 dans le forum Langage
    Réponses: 9
    Dernier message: 06/02/2006, 22h37

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