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 :

[Debutant] Probleme d'acces a une variable


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 40
    Points : 19
    Points
    19
    Par défaut [Debutant] Probleme d'acces a une variable
    Hello, le probleme du matin !

    Soit une classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class CTest {
       public Ctest2 test2 = new Ctest2;
         pointX=5;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class CTest2 {
       public getPointx{...}
       public setPointx{...}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public class Cprobleme
     //je veux acceder a la valeur de pointX
    Comme vous l'aurez compris mon probleme est que je n'arrive pas acceder a la valeur de pointX a partir de ma classe CProbleme.
    Si je mets CTest2.getPoinx() j'ai le message :
    méthode getPointx non static ne peut être référencé depuis un contexte statique et si je fais un new je perds la valeur de pointX.

    J'y perds mon latin avec ces statics et les valeurs qui disparaissent. Comment puis je faire ?

  2. #2
    Expert éminent

    Avatar de christopheJ
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 600
    Points : 8 235
    Points
    8 235
    Par défaut
    Il y a plusieurs problèmes dans ton code, ce que tu donnes ne doit pas compiler....

    Pour CTest :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class CTest{
        public CTest2 test2;       //variable d'instance
        public CTest(){              //constructeur
            test2 = new CTest2();  //instancie CTest2
            test2.setPointx(5);        // fixe la variable pointx
    }
    L'appel au constructeur doit avoir les parenthèses.
    attention au majuscule dans les noms....
    utilise la méthode setPointx()
    pas de majuscule au variable (voir les conventions de nommage)

    Pour CTest2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class CTest2{
        private int pointx;
        public CTest2(){}      //constructeur par defaut
        public CTest2(int x){  //constructeur avec le parametre
           pointx=x;
         }
         public void setPointx(int x){
            pointx=x;
         }
         public int getPointx(){
             return (pointx);
         }
    }
    L'ajout du constructeur avec parametre peut permettre de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     test2 = new CTest2();  //instancie CTest2
     test2.setPointx(5);        // fixe la variable pointx
    dans CTest par
    Ensuite si dans Cprobleme, tu veux pointx, il te faut une réference à une instance de CTest. Si Cprobleme contient ta méthode main il faut construire une instance de CTest dedans.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CTest test=new CTest();
    int x=test.test2.getPointx();

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    Merci, j'ai vraiment du mal avec ces constructeurs & tutti quanti ! Je comprends pas trop a quoi il serve...

    Je vais bien etudier ce que tu m'as donné et je vais refaire mon code.

  4. #4
    Expert éminent

    Avatar de christopheJ
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 600
    Points : 8 235
    Points
    8 235
    Par défaut
    Si tu as du mal avec les constructeurs c'est que tu n'as pas compris les notions d'objets. Il doit y avoir quelques tutoriels sur la POO sur le site.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    Christophe je te remercie j'ai réussi à mettre ton code mais il me reste un problème :

    en fait j'ai plusieurs classes CProbleme : CProbleme1 , CProbleme2....

    et chacune d'elle fais un

    CTest test = new Ctest();

    ce qui fais (je pense que mon probleme vient de la !) que je perds la valeur a chaque fois de x, car le new doit effacer la valeur de x. Il me faudrait garder cette valeur de x de manière fixe sans la perdre a chaque appel de new.

  6. #6
    Expert éminent

    Avatar de christopheJ
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 600
    Points : 8 235
    Points
    8 235
    Par défaut
    Si je comprends, CProbleme n'est pas la classe avec la méthode main, puisque tu en as plusieurs.
    Normalement chaque CProblème instanciée a son propre CTest qui a son propre CTest2 qui a son propre pointx qui peut avoir une valeur différente des autres.
    Peux-tu mettre un peu de code pour nous aider à comprendre?
    Et eventuellement redefinir ton probleme... Tu veux que point x est la meme valeur partout ou pas?

  7. #7
    Membre éprouvé
    Avatar de c-top
    Profil pro
    Turu
    Inscrit en
    Septembre 2003
    Messages
    972
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Turu

    Informations forums :
    Inscription : Septembre 2003
    Messages : 972
    Points : 1 246
    Points
    1 246
    Par défaut
    Tu n'est peut-être pas obligé de réinstancier la classe CTest à chaque fois au moment de l'instanciation de CProbleme2 il suffit de passer en paramètre au constructeur l'instance de CTest
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class CProbleme{
     
      private CTest test;
      private CProbleme2 probleme2;
     
      public CProbleme(){
        test = new Ctest();
        probleme2 = new CProbleme2(test)
      }
    //etc...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class CProbleme2{
     
      private CTest test;
     
      public CProbleme2(CTest test){
        this.test = test;
      }
    //la suite
    }
    Tu pourras ainsi te servir dans probleme2 d'une instance de test

  8. #8
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Je suis désolé, pour tout ceux qui s'acharnent à essayer de lui expliquer comment créer une classe, alors qu'il me semble n'avoir aucune notion de programmation objet, c'est certes très gentil de votre part, mais à quoi bon...

    Un seul conseil PRIMORDIAL: essaie de comprendre dans un premier temps ce qu'est la programmation objet... Si tu n'as pas les bases c'est comme demander à un aveugle de lire un livre (pas en braille bien entendu)...

  9. #9
    Membre éprouvé
    Avatar de c-top
    Profil pro
    Turu
    Inscrit en
    Septembre 2003
    Messages
    972
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Turu

    Informations forums :
    Inscription : Septembre 2003
    Messages : 972
    Points : 1 246
    Points
    1 246
    Par défaut
    Au moins en lisant les réponses, il prendra peut-être conscience qu'il faut qu'il se plonge un peu plus longuement dans la littérature JAVA et que les premiers pas sont toujours un peu difficiles.

  10. #10
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    C'est pour vous que je dis ça, parceque vous lui machez le travail, c'est à lui de bosser, moi avec un mec comme ça je dis:

    "Comprends la programmation objet et après je t'aide, sinon démerde toi !!!"... il faut connaitre un minimum de langage avant de passer à l'application...

    Parcequ moi ça me viendrais pas à l'idée de programmer en Cobol sans lire un minimum de doc...

    Mais is vous avez du temps à revendre ok, no prob...


  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    Désolé thibaut j'ai pas la science infuse.

    La documentation j'en ai lu mais il y a un écart entre lire & programmer.

    Certaines choses semblent être comprises mais ce n'est qu'en programmant que l'on s'aperçoit que non et c'est la que l'aide de quelqu'un prend tous son intérêt.

    Maintenant si tu as tous compris tous de suite tant mieux pour toi, la pour mon problème j'ai beau fouiller dans mes bouquins et sur le net mais je ne comprends pas, donc je demande à quelqu'un de m'aider...

    maintenant si tu estimes que c'est une perte de temps... libre à toi

    ps: désolé les modérateurs , je suis hors sujet

  12. #12
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    C'est pas du tout ce que je veux dire...

    Certes tu as lu la doc sur java (puisque que tu connais comment on ecrit une classe, une méthode, les mots clés...) mais tu ne maîtrise pas les bases de la programmation objet...

    Et puis pour ta gouverne, je n'ai pas parlé de science infuse, j'ai jamais dit que les notions objet je les aies acquises comme ça en claquant des doigts (parceque moi aussi il m'a fallut du temps pour les comprendre et les maîtriser, sachant que je ne connaissais que les langages genre C, pascal...).

    Je veux juste te dire qu'il te manque les bases (mais peut-être en es-tu pas conscient ?) Parceque pour apprendre un langage, il ne faut pas seulement connaitre les mots clés de ce langage.

    Ca demande un gros travail personnel voilà tout... Mais tout le monde en est passé par là, et non personne n'acquiert ces techniques sans un gros travail...

    C'est comme par exemple: tu prends Patrick Rondat, un des meilleurs guitariste français (une technique de fou), mais comme tout le monde ce mec en à chié pour apprendre les bases, mais une fois que tu as les bases, tout deviens plus facile...

    C'est la morale de mon POST, moi je la trouve chouette, pas vous.. Ah, bon !

  13. #13
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    bonjour,

    Je crois que thibaut a raison.

    Ca ne sert à rien de vouloir apprendre que en programmant.

    La meilleur façon est d'avoir un bon bouquin avec des exemples que tu peux refaire toi même (et les comprendre bien évidemment).

    Si tu ne sais pas a quoi sert un constructeur, je te conseille vivement de l'apprendre par un bouquin ou trouver un tutoriel. Ils te l'apprendront bien mieux que nous qui ne sommes pas éducateurs. Nous sommes juste là pour aider en cas de problème ; cela sous entend que tu doit possèder les notions de base de Java (on apprend pas un langage sur un forum).

    bon courage.

  14. #14
    Expert éminent

    Avatar de christopheJ
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 600
    Points : 8 235
    Points
    8 235
    Par défaut
    C'est aussi ce que j'avais répondu avec mon deuxieme message.....
    Je peux te donner un lien vers le poly de mon prof de java qui m'a permis de découvrir l'objet :
    http://shiva.istia.univ-angers.fr/~tahe/

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    Merci pour le lien je vais pouvoir l'étudier.

    Je vais me replonger dans les docs mais sincèrement parfois même en lisant et en se documentant certains aspects de la poo paraissent toujours aussi floue.

    Comme je suis de nature à apprendre en faisant et non pas en lisant, c'est pour cela que je suis amené à poser ce genre de questions. (bien que je lise beaucoup de docs sur java)

    Pour en revenir à mon problème il est résolu, j'y suis arrivé en me basant sur le code de c-top.

    merci

  16. #16
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Par contre si tu as des problèmes de compréhension de poo, je veux bien répondre à tes questions... ou si tu veux des eclairsissements, no prob...


  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    Daccord merci à toi.

    ciao

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

Discussions similaires

  1. [AC-2002] Probleme avec l acces a une variable Long Integer
    Par sanaline dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/03/2013, 16h42
  2. Probleme d'acces a une variable public
    Par christophe D dans le forum ActionScript 1 & ActionScript 2
    Réponses: 10
    Dernier message: 18/06/2007, 23h36
  3. Probleme d'acces a une variable.
    Par starkson dans le forum Delphi
    Réponses: 1
    Dernier message: 29/06/2006, 18h00
  4. probleme d'acces a une machine sur un réseau
    Par zorian dans le forum Développement
    Réponses: 3
    Dernier message: 09/06/2004, 13h04
  5. Réponses: 13
    Dernier message: 14/06/2003, 22h15

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