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 le this en java


Sujet :

avec Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Problème avec le this en java
    Bonjour,
    je ne comprends pas comment le this fonctionne dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.cellule.prendreOccupant(this); // la cellule prend l’occupant courant
    est-ce que quelqu'un pourrait m'expliquer comment il faut comprendre cette ligne merci?
    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
    abstract class Occupant {
    // Attribut
      protected Cellule cellule; // référence à la cellule affectée à l’occupant
     
    // Constructeur qui affecte une cellule à l’occupant
      public Occupant (Cellule cellule){
        this.cellule=cellule;
        this.cellule.prendreOccupant(this); // la cellule prend l’occupant courant
      }
     
    // Accesseurs
      public Cellule getCellule() { return this.cellule; }
      public void setCellule(Cellule uneCel) { this.cellule=uneCel; }
     
    // Prototype de méthode retournant la chaîne visuelle de l’occupant d’une cellule (voir ANNEXE A)
      abstract public String image();
    }

  2. #2
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    je pense qu'il serait intéressant de voir le code de la classe Cellule
    Ceci nous permettrait peut être de comprendre pourquoi la méthode prendreOccupant a besoin de 'this' en paramètre.
    @ bientôt...

    Salut & @+ sur 3W!

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Voilà la 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
    class Cellule {
    // attributs privés
       private Cellule sud;
       private Cellule est;
       private Cellule nord;
       private Cellule ouest;
       private Occupant occupant; // référence à l’occupant de la cellule
     
    // Méthode qui retourne un booléen indiquant si la cellule est libre de tout occupant 
      public boolean estLibre() { return this.occupant == null; }
     
    // Méthode à compléter permettant à la cellule de prendre l’occupant en paramètre et si cet
    // occupant n’est pas vide de lui affecter la cellule
    public void prendreOccupant(Occupant occupant){}
     
    // Méthode permettant à l’occupant non libre de lui affecter une cellule vide et de vider l’occupant de
    // la cellule
      public void perdreOccupant(){
        if (this.estLibre() == false) this.occupant.setCellule(null);
        this.occupant=null;
      }
     
    // Constructeur à compléter qui initialise tous les attributs privés grâce aux paramètres
      public Cellule (Cellule sud, Cellule est, Cellule nord, Cellule ouest, Occupant occupant){}
     
    }

  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
    this fonctionne dans cette ligne comme il fonctionne toujours.

    this représente l'objet en cours. Donc cette ligne appelle cellule.prendreOccupant() en lui donnant l'objet en cours en paramètre. Bref l'objet s'ajoute lui-même comme occupant de la cellule.

    Au passage, c'est une très mauvaise pratique de faire ça dans le constructeur. this ne devrait jamais être montré à l'extérieur avant d'être sorti du constructeur.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Problème avec le wizard de java.net
    Par cdtkoenig dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 09/06/2009, 17h24
  2. problème avec un code source JAVA
    Par magicbisous-nours dans le forum SQL
    Réponses: 7
    Dernier message: 10/12/2007, 17h09
  3. Problème avec les méthodes en JAVA
    Par beegees dans le forum Langage
    Réponses: 9
    Dernier message: 04/02/2007, 20h19
  4. Problème avec l'installation de java
    Par jab dans le forum Windows Vista
    Réponses: 1
    Dernier message: 05/01/2007, 17h17
  5. [Débutant] problème avec les IO de java
    Par Amissan dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 17/11/2006, 16h27

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