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 :

La portée des objets


Sujet :

avec Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut La portée des objets
    Bonjour, je suis entrain d'apprendre le Java. Venant du javascript, une chose qui n'est pour moi pas claire est la création et l'utilité des objets, je m'explique:

    J'ai trois classes: ma classe main, ma classe Ville et ma classe Trois. Si je crée un objet ville1(qui est une instance de la classe Ville) dans ma classe main, l'existence de cet objet ville1 se confinera-t-il à la classe main ou existe-t-il une manière de récupérer des données de ville1 à partir de la classe Trois?

    Si non, cela il y a-t-il un but de créer une classe Ville si la seule classe qui (dans mon programme) va créer des objets ville de manière utile est main? Ne pourrais-je pas tout simplement créer une méthode dans main?

    Autre question:
    Lorsque je tente d’exécuter une méthode dans une autre classe, Eclipse requiert que cette méthode soit de type static ce qui entraine de complications du point de vue des variables que la méthode en question va pouvoir utiliser. Pourquoi est-ce ainsi et que puis-je faire en termes de solution.

    merci d'avance de votre temps investi pour me répondre

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 191
    Points
    191
    Par défaut
    Citation Envoyé par bibim Voir le message
    Bonjour, je suis entrain d'apprendre le Java. Venant du javascript, une chose qui n'est pour moi pas claire est la création et l'utilité des objets, je m'explique:

    J'ai trois classes: ma classe main, ma classe Ville et ma classe Trois. Si je crée un objet ville1(qui est une instance de la classe Ville) dans ma classe main, l'existence de cet objet ville1 se confinera-t-il à la classe main ou existe-t-il une manière de récupérer des données de ville1 à partir de la classe Trois?
    Oui, tu peux récupérer une référence vers ton objet ville1 à partir de la classe, par exemple en créant une methode dans main (genre getVille1() qui retourne ville1) puis en l’appelant depuis une instance de Trois.
    Citation Envoyé par bibim Voir le message
    Si non, cela il y a-t-il un but de créer une classe Ville si la seule classe qui (dans mon programme) va créer des objets ville de manière utile est main? Ne pourrais-je pas tout simplement créer une méthode dans main?
    Selon moi c'est le principe de la POO. D'une manière générale tu peux toujours "tout simplement" créer tes méthodes dans main, mais si ton Objet a lieu d'exister c'est sans doute bien mieux de le créer.
    Citation Envoyé par bibim Voir le message
    Autre question:
    Lorsque je tente d’exécuter une méthode dans une autre classe, Eclipse requiert que cette méthode soit de type static ce qui entraine de complications du point de vue des variables que la méthode en question va pouvoir utiliser. Pourquoi est-ce ainsi et que puis-je faire en termes de solution.
    C'est parce que tu tentes d'y accéder sans créer d'instance (Classe.methode()). Pour accéder aux méthodes publiques il faut créer une instance (instance = new Classe()) puis appeler les méthodes avec cette instance (instance.methode()).
    On apprend plus en répondant aux questions qu'en les posant.

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par Mopmop Voir le message
    Oui, tu peux récupérer une référence vers ton objet ville1 à partir de la classe, par exemple en créant une methode dans main (genre getVille1() qui retourne ville1) puis en l’appelant depuis une instance de Trois.
    En général en Java, la manière de voir c'est : pas de variable globale.
    À la place le raisonnement c'est : la classe Trois a besoin de la donnée ville1 ? Eh bien on lui donne la donnée ville1, et après on s'en sert.

    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
    21
    22
    23
    24
    25
    26
    public class Main {
     
      public static void main(String[] args) {
        Ville ville1 = new Ville("JolieVille");
        Trois trois = new Trois(ville1);
        trois.faireDesTrucs();
      }
     
    }
     
    class Ville {
      String nom;
      Ville(String nom) {
        this.nom = nom;
      }
    }
     
    class Trois {
      Ville ville;
      Trois(Ville ville) {
        this.ville = ville;
      }
      void faireDesTrucs() {
        System.out.println("J'ai une ville qui s'appelle " + ville.nom);
      }
    }
    Ici le constructeur de la classe Trois exige une Ville, et donc aucun objet de cette classe ne peut exister sans qu'on lui ait donné une Ville. Ils ont donc la donnée dont ils ont besoin.

    Ça c'est le cas simple, bien sûr.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 191
    Points
    191
    Par défaut
    Citation Envoyé par thelvin Voir le message
    En général en Java, la manière de voir c'est : pas de variable globale.
    En effet, mon "par exemple" n'étais pas approprié ici... Mes excuses
    On apprend plus en répondant aux questions qu'en les posant.

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par Mopmop Voir le message
    En effet, mon "par exemple" n'étais pas approprié ici... Mes excuses
    Pas de quoi s'excuser, ça marche et c'est plus facile à comprendre.
    Mais quand on fait tout comme ça on est pas près de saisir ce que c'est, ces histoires de programmation objet.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Tout d'abord merci pour vos réponses rapides et pertinentes, l'exemple m'a bien aidé. Il me reste néanmoins un petit point flou concernant le fameux "static":
    Lorsqu'il est question de créer une instance de la classe Trois, cette instance peut-elle être crée dans n'importe quel classe ou forcément dans la classe main?

    N.B.
    Derrière cette question générale se trouve le cas particulier d'un ActionListner: Il faudrait donc que le ActionListner initialise une instance.

    Merci d'avance

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 191
    Points
    191
    Par défaut
    Citation Envoyé par bibim Voir le message
    Tout d'abord merci pour vos réponses rapides et pertinentes, l'exemple m'a bien aidé. Il me reste néanmoins un petit point flou concernant le fameux "static":
    Lorsqu'il est question de créer une instance de la classe Trois, cette instance peut-elle être crée dans n'importe quel classe ou forcément dans la classe main?
    Tu peux créer cette instance ou tu veux, moyennant éventuellement un import du bon package.
    Citation Envoyé par bibim Voir le message
    N.B.
    Derrière cette question générale se trouve le cas particulier d'un ActionListner: Il faudrait donc que le ActionListner initialise une instance.
    Techniquement tu peux l'instancier dans ton ActionListener, il n'y a rien qui t'en empêche, mais ça m'étonne. Je ne vois pas d'exemple pour lequel il est judicieux de faire comme ça, il vaut mieux l'instancier à l'extérieur de ton ActionListener et y accéder depuis l'intérieur de cet ActionListener.
    On apprend plus en répondant aux questions qu'en les posant.

Discussions similaires

  1. Portée des objets
    Par kaul128 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 10/12/2014, 22h26
  2. Portée des objets
    Par electrovolt dans le forum Langage
    Réponses: 7
    Dernier message: 02/10/2012, 18h53
  3. Élargir la portée des objets en VBA
    Par Vincent3004 dans le forum Général VBA
    Réponses: 3
    Dernier message: 26/12/2010, 16h56
  4. Portées des propriétés-Relations entre objets
    Par Marmounet dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 25/09/2008, 10h40
  5. [FLASH 8] Question sur la portée des objets.
    Par i_shinji dans le forum Flash
    Réponses: 1
    Dernier message: 02/11/2005, 17h18

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