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

Langage Java Discussion :

probleme de comprehension de "this"


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 77
    Par défaut probleme de comprehension de "this"
    bonjour,

    je me permet de vous demander si un personne généreuse et simpatique puisse m'expliquer l'utilisation de "this" dans la programmation.Même avec les expliquations sur le net.je n'arrive pas du tout à comprendre comment ca marche exactement.

    par exemple je ne voie pas à quoi correspond les this dans cette partie de fonction :

    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
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.Applet;
    public class Morpion extends Applet implements
    ActionListener {
    Button cases[];
    Button boutonNouvellePartie;
    Label score;
    int casesLibresRestantes = 9;
    /**
    * La méthode init est comme un constructeur pour l'applet
    */
    public void init() {
    // Affecte le gestionnaire de disposition et la couleur
    // de l'applet
    this.setLayout(new BorderLayout());
    this.setBackground(Color.CYAN);
    // Passe la police de l'applet en style gras et taille 20
    Font policeApplet = new Font("Monospaced", Font.BOLD, 20);
    this.setFont(policeApplet);
    // Crée le bouton Nouvelle partie et enregistre
    // le récepteur d'actions auprès de lui
    boutonNouvellePartie = new Button("Nouvelle partie");
    boutonNouvellePartie.addActionListener(this);
    // Crée deux panneaux et un label et les agence en
    // utilisant le border layout
    Panel panneauSupérieur = new Panel();
    panneauSupérieur.add(boutonNouvellePartie);
    Programmation Java pour les enfants, les parents et les grands-parents 119
    Classe Morpion (partie 2 de 8)
    this.add(panneauSupérieur, "North");
    Panel panneauCentral = new Panel();
    panneauCentral.setLayout(new GridLayout(3, 3));
    this.add(panneauCentral, "Center");
    score = new Label("A vous de jouer !");
    this.add(score, "South");
    // Crée un tableau pour stocker les références des
    // 9 boutons
    cases = new Button[9];
    // Instancie les boutons, stocke leurs références dans le
    // tableau, enregistre le récepteur auprès d'eux, peint
    // les boutons en orange et les ajoute au panneau central
    for(int i = 0; i < 9; i++) {
    cases[i]= new Button();
    cases[i].addActionListener(this);
    cases[i].setBackground(Color.ORANGE);
    panneauCentral.add(cases[i]);
    }
    }
    Merci

  2. #2
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 321
    Par défaut
    this indique que l'on souhaite faire un appel à une methode de la classe courante pour faire simple (pour etre exact, cela appelle la methode ayant la signature definie par les attributs et appartenant au plus proche parent dans la hierarchie d'heritage). this.add(...) indique qu'on souhaite invoquer la methode add de la classe courante
    ici ta classe herite de applet : la classe herite donc de toutes les methodes definies dans la classe applet. add, setlayout ... sont des methodes definies dans la classe applet.
    Je t'invite a consulter quelques tutos de java, apres quoi tu devrais bien integrer cette notion, fondamentale en objet

  3. #3
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Justement, je pense que ton incompréhension est liée à une incompréhension de l'objet.
    Il n'y a pas de fonction ici, mais une classe Morpion avec une méthode init.

    A un moment donné, la méthode init va être appelée sur une instance de Morpion. Quand on programme la méthode init, "this" signifie moi même, c'est à dire l'objet sur lequel la méthode init a été appelée.

    C'est plus clair ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 77
    Par défaut
    merci de vos expliquation

    par contre j'ai une question dans :
    cases[i].addActionListener(this);
    this represente quoi?

  5. #5
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 321
    Par défaut
    La classe implemente l'interface ActionListener : elle peut donc etre typée en ActionListener. addActionListener est une methode qui prend en parametre un objet de type ActionListener donc this est adapté. Son but est de proposer un gestionnaire d'evenement (pour les composants style JButton par exemple) pour un composant. Lorsque l'evenement clic sur le bouton va intervenir par exemple, la methode actionPerformed que s'est engagé à définir la classe (une interface permet de typer de différentes façon les instances d'une classe mais une interface represente egalement un contrat : la classe s'engage a definir toutes les methodes déclarées dans l'interface) est appelée et le developpeur peut alors réagir au clic sur le composant

  6. #6
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Citation Envoyé par PHPkoala
    merci de vos expliquation

    par contre j'ai une question dans :
    cases[i].addActionListener(this);
    this represente quoi?
    Merci de consulter la FAQ Java avant de poser vos questions.
    La Q/R traitant de this dans la FAQ.

    Cordialement.

  7. #7
    Membre chevronné Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par défaut
    Bon, moi je vais faire simple : this représente tout simplement l'instance de l'objet qui appelle this, donc l'objet lui-même.

    Lorsque tu appelles this.add(..), c'st équivalent à add(..).

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

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