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 :

Connaitre l'instance de l'objet appelant


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Points : 451
    Points
    451
    Par défaut Connaitre l'instance de l'objet appelant
    Bonjour,

    ma question est toute simple : est-il possible dans une méthode, de connaitre l'objet qui a appelé cette méthode ?

    Un exemple :

    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
     
    public class Main{
      public static void main(String[] args) {
        A a = new A();
        a.methodeA();
      }
    }
     
    public class A {
      private B b;
      public void methodeA() {
        b.methodeB();
      }
    }
     
    public class B {
      public void methodeB() {
        // 
      }
    }
    et dans methodeB, on veut pouvoir récupérer l'instance A. Existe-t-il un moyen un peu plus joli que de donner l'instance a en paramètre de methodeB, sachant que A "contient" B (en tant qu'attribut) ?

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par dancingmad Voir le message
    Existe-t-il un moyen un peu plus joli que de donner l'instance a en paramètre de methodeB
    Non ce n'est pas possible...


    Que veux-tu faire avec cela ?

    a++

  3. #3
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Hello,

    y'a pas une bidouille (horrible) à base de Stacktrace & compagnie?

    la même api que celle qui sert à afficher la pile dans Throwable#printStackTrace()?

    bien sûr, très mauvaise niveau perfs

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Pill_S Voir le message
    y'a pas une bidouille (horrible) à base de Stacktrace & compagnie?
    Non : cela permet de récupérer le type mais pas l'instance

    a++

  5. #5
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2006
    Messages : 503
    Points : 1 332
    Points
    1 332
    Par défaut
    Expliques peut-être ce que tu veux faire ... par un exemple concret!
    Merci

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Points : 451
    Points
    451
    Par défaut
    En fait je suis en train de faire un jeu d'échec (sans IA pour le moment), donc j'ai créé une classe Echiquier, qui contient la grille de jeu, puis une classe abstraite Piece qui modélise le comportement des pièces du jeu.

    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
     
    public class Echiquier {
      private Case[][] grille;
    }
     
    abstract public class Piece {
      abstract public Set<Position> deplacement() {
      }
    }
     
    public class Pion extends Piece {
      public Set<position> deplacement() {
        // on calcule les cases accessibles
      }
    }
    Dans la méthode deplacement, on doit renvoyer l'ensemble des cases accessibles depuis la position actuelle ; on a donc besoin de l'attribut grille, pour connaitre si telle case est occupé par une pièce adverse, etc.

    C'est pourquoi j'ai besoin de connaitre l'instance d'Echiquier.

    J'ai eu l'idée de faire hériter Piece de Echiquier et de passer grille en variable statique pour éviter d'utiliser trop de ressource, mais dans ce cas, je vais avoir des problèmes pour écrire l'IA, car elle se base sur le calcul des coups possibles, et donc a besoin de créer des instance Echiquier avec des grilles différentes...

    des idées ?

  7. #7
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2006
    Messages : 503
    Points : 1 332
    Points
    1 332
    Par défaut
    D'accord ... mais je n'ai pas trop le courage de discuter un design de jeu d'échec un dimanche matin!

    Si on revient à la question de base:

    Est-il possible dans une méthode, de connaitre l'objet qui a appelé cette méthode ?
    ... oui, en lui passant son objet!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objet.method(this, ...)

  8. #8
    Membre actif

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Points : 209
    Points
    209
    Par défaut
    Tu peux faire ça avec de l'AOP...

    Mais faut voir si c'est très adapté à ton cas...

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par dancingmad Voir le message
    C'est pourquoi j'ai besoin de connaitre l'instance d'Echiquier.
    des idées ?
    Peut etre en passant l'échiquier au constructeur de Piece, après tout, une pièce appartiens à une échiquier!

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Points : 451
    Points
    451
    Par défaut
    Merci !

    finalement, j'ai donné l'objet appelant en paramètre de la méthode, c'est ce qui me semble le +simple...

    Sinon ta méthode tchize_, m'a l'air pas mal, je la retiens.

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

Discussions similaires

  1. connaitre l'instance d'un objet
    Par dv-2008 dans le forum VB.NET
    Réponses: 1
    Dernier message: 18/12/2008, 02h00
  2. Appel a Create sans créer l'instance de l'objet
    Par helmis dans le forum Débuter
    Réponses: 7
    Dernier message: 24/06/2008, 12h20
  3. Connaitre l'objet appelant
    Par aurelien94 dans le forum Langage
    Réponses: 5
    Dernier message: 19/10/2006, 11h51
  4. Sauver l'instance d'un objet dans un TMemoryStream
    Par Rodrigue dans le forum C++Builder
    Réponses: 6
    Dernier message: 11/09/2005, 09h23
  5. base de données objet appelée ozone
    Par enti dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 01/03/2004, 08h28

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