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 :

Visibilité objet classe package


Sujet :

avec Java

  1. #1
    Membre confirmé
    Avatar de deletme
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 257
    Points : 519
    Points
    519
    Par défaut Visibilité objet classe package
    Bonjour,

    Après plusieurs lectures sur la toile, je n'arrive toujours pas à accéder à partir d'une classe A à un objet d'une classe B contenue dans le même package :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    package test
    public class A{
    int monint
    }
    Dans un autre .class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    package test
    public class B{
    comment accéder à monint ?
    }
    Merci de votre aide

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 565
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 565
    Points : 21 630
    Points
    21 630
    Par défaut
    En résumé, quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package test
     
    public class B {
     
      public void faireUnTruc(A toto) {
        int machin = toto.monint;
      }
     
    }
    Ton problème, c'est que tu n'avais pas de "toto" avec lequel faire "toto.monint". Autrement dit, tu n'avais pas d'objet de classe A pour lequel accéder à sa propriété "monint".
    => Il suffit de faire en sorte d'en avoir un. Je t'ai donné un exemple de comment avoir ça.

  3. #3
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    802
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 802
    Points : 1 698
    Points
    1 698
    Par défaut
    Ton code est un peu léger.

    Pour répondre à ta question, il te faut créer une instance de A.
    et ensuite y accéder avec
    Pour que ton code soit plus objet, car j'ai l'impression que tu en a jamais fait, il faudrait que ta classe soit codé comme cela :
    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
     
    package test;   // ton package
    public class A{
     
      /**
       * caché la visibilité de ton attribut qui est sensé appartenir qu'à ton objet
       */
      private int monint;  
     
      /**
       * Constructeur  
       * initialisation de monint dans ce cas A a =new A(27)
       * ça évite de faire A a = new A();
       *  a.monint = 27;
       */
      public A(int value){  
         monint = value;  
      }
     
      /**
       * méthode public visible de B qui retourne la valeur de monint
       * par exemple int b = a.getMonint() * 2;
       */ 
      public getMonint(){  
         return monint;
      }
    }

    En outre oublie pas les ";" sinon tu risques d'avoir des erreurs de compilation.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Je te conseille aussi de lire ce paragraphe.

    A+.

  5. #5
    Membre confirmé
    Avatar de deletme
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 257
    Points : 519
    Points
    519
    Par défaut
    En effet merci, c'est mieux en procédant ainsi ...

    Est ce que le code qui suit est une bonne pratique pour accéder aux objets des autres classes du même package ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    package test
     
    public class B {
    A objetTypeA; 
     
      public void faireUnTruc(A toto) {
        objetTypeA = toto;
        int machin = objetTypeA.monint;
      }
    }
    En faisant ainsi, je peux accéder à mes objets de la classe A dans toutes mes méthodes de la classe B si je ne me trompe pas.

  6. #6
    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 deletme Voir le message
    En faisant ainsi, je peux accéder à mes objets de la classe A dans toutes mes méthodes de la classe B si je ne me trompe pas.
    Non, tu peux accéder à un objet de la classe A depuis ton instance de la classe B. Il faudrait bien sur voir quelles est la logique recherchée derrière mais il est effectivement courant de stocker dans instances dans une autre instance afin d'obtenir un graphe d'objets.

    Par contre, en général on passe l'instance en question dans le constructeur si elle ne doit être définie qu'une seule fois:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class B {
      private A a; 
     
      public void B(A a) {
        this.a = a;
      }
      // .....
    }
    ou on passe par un setter si on peux la redéfinir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class B {
      private A a; 
     
      public void setA(A a) {
        this.a = a;
      }
     
      public A getA() {
        return a;
      }
      // .....
    }

  7. #7
    Membre confirmé
    Avatar de deletme
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 257
    Points : 519
    Points
    519
    Par défaut
    Ok merci à tous pour vos réponses. Je vois que j'ai encore du travail pour atteindre un niveau correct dans ce langage ...

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

Discussions similaires

  1. visibilité de classes de package à package
    Par Melchisedec dans le forum Langage
    Réponses: 1
    Dernier message: 31/08/2007, 10h37
  2. question concernant la visibilité de classes
    Par thebloodyman dans le forum Langage
    Réponses: 5
    Dernier message: 11/09/2006, 09h21
  3. [POO] Objet classe PHP5
    Par theskel dans le forum Langage
    Réponses: 1
    Dernier message: 08/08/2006, 10h49
  4. Objets/Classes avec un SGBD
    Par tiboleo dans le forum Décisions SGBD
    Réponses: 13
    Dernier message: 09/11/2003, 16h04

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