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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    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
    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
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    - Martin Golding
    Traduction obligatoire : "Toujours écrire du code en gardant en tête que le mec qui en assurera la maintenance est un psychopathe violent qui connait votre adresse"

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    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.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    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
    Par défaut
    Bonjour,

    Je te conseille aussi de lire ce paragraphe.

    A+.

  4. #4
    Membre chevronné
    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
    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.
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    - Martin Golding
    Traduction obligatoire : "Toujours écrire du code en gardant en tête que le mec qui en assurera la maintenance est un psychopathe violent qui connait votre adresse"

  5. #5
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    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;
      }
      // .....
    }

  6. #6
    Membre chevronné
    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
    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 ...
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    - Martin Golding
    Traduction obligatoire : "Toujours écrire du code en gardant en tête que le mec qui en assurera la maintenance est un psychopathe violent qui connait votre adresse"

  7. #7
    Membre très actif 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 : 38
    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
    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.

+ 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