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

Java Discussion :

Acceder à un objet le passer en argument


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 257
    Points : 106
    Points
    106
    Par défaut Acceder à un objet le passer en argument
    Bonjour!

    Dans ma classeA, j'instancie un objet issu d'une classeB :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ClasseB classeB1 = new ClasseB();
    L'objet instancié, je peux acceder aux propriétés et méthodes.

    Si je veux utiliser cette objet dans une classeC, il faut que je le passe en argument lors de l'instanciation de la classeC :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ClasseC classeC1 = new ClasseC(classeB1 );
    Ceci fonctionne et j'accède donc à mon objet classeB1 depuis classeC.

    Mais cela m'oblige a passer cet objet en argument à chaque classe qui va l'utilisé...

    N'y a t'il pas un moyen plus simple d'acceder à l'objet classeB1 dans différentes classe?

    Merci par avance!

  2. #2
    Membre émérite
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Points : 2 793
    Points
    2 793
    Par défaut
    Tu peux créer une classe avec pour membre statique un membre ClasseB
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ClasseContainer.maClasseB = new ClasseB();
    et dans ta classe C tu y accèdes comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ClasseContainer.maClasseB.doOperation();
    Toute question technique envoyée en MP ira directement à la poubelle

    Un code ne marchera jamais, il n'a jamais reçu la capacité de se déplacer.
    Inutile donc de dire "ça marche pas", donnez plutôt des informations précises afin de mieux pouvoir vous aider.


    Grand gourou de la -attitude

  3. #3
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 257
    Points : 106
    Points
    106
    Par défaut
    Merci pour ta réponse!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ClasseContainer.maClasseB = new ClasseB();
    Ici, tu mets la ClasseB dans une classeContainer. Mais avant ça tu as du instancier un objet de ClasseContainer.

    Donc le probleme est le meme non?

    Dans ma classeC, je dois pouvoir accéder à l'objet ClasseContainer et donc passer ClasseContainer en argument à classeC non?

  4. #4
    Membre émérite
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Points : 2 793
    Points
    2 793
    Par défaut
    nan si maClasseB est statique...

    ClasseContainer est le nom de ta classe... pas de l'objet
    Tu fais comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class ClassContainer
    {
         public static ClasseB maClasseB;
    }
    Toute question technique envoyée en MP ira directement à la poubelle

    Un code ne marchera jamais, il n'a jamais reçu la capacité de se déplacer.
    Inutile donc de dire "ça marche pas", donnez plutôt des informations précises afin de mieux pouvoir vous aider.


    Grand gourou de la -attitude

  5. #5
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 257
    Points : 106
    Points
    106
    Par défaut
    Parfait! C'est exactement ce qu'il me fallait!

    Pour illuster voici le code des classes :

    MainClass :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class MainClass {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		ClassContainer.maClasseB = new ClassB();
    		ClassC classC1 = new ClassC();
     
    	}
     
    }
    ClassContainer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class ClassContainer
    {
         public static ClassB maClasseB;
    }
    ClassB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class ClassB {
    	public ClassB(){
    		System.out.println("instanceB");
    	}
    	public void testingB(){
    		System.out.println("testMethode");	
    	}
     
    }
    ClassC :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class ClassC {
    	public ClassC(){
    		System.out.println("instanceC");
    		ClassContainer.maClasseB.testingB();
    	}
     
    }
    Encore merci pour ton aide

    Au fait, c'est une bonne pratique de faire ça? Je pense que c'est plus propre et plus maintenable que de passer l'objet en argument a chaque fois non?

    Et si on se place dans un contexte MVC, la classe ClassContainer est une classe Modele ou Controleur? J'aurai dis controleur car il va faire le lien entre mes vues (fenetre) et les methodes de classeB (modele).

Discussions similaires

  1. passer un objet en tant qu'argument dans la ligne de commande
    Par skoobi dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/11/2014, 22h42
  2. Réponses: 4
    Dernier message: 04/01/2008, 21h19
  3. Comment passer les arguments à un script perl
    Par belgampaul dans le forum Langage
    Réponses: 4
    Dernier message: 06/08/2005, 12h52
  4. Réponses: 8
    Dernier message: 30/05/2005, 13h55
  5. [Struts] Passer un argument dans un property
    Par Malaussene dans le forum Struts 1
    Réponses: 4
    Dernier message: 07/09/2004, 10h11

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