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 :

variables et classes


Sujet :

Java

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 21
    Points : 15
    Points
    15
    Par défaut variables et classes
    Bonsoir le forum

    Je débute en Java et je fais face a un petit problème avec mes classes, je n'ai pas trouvé la solution sur internet.

    J'ai un programme avec 2 classes :
    Une Main qui appelle des méthodes d'autres classes
    Une Classe2 qui contient 2 méthodes:
    Methode1 est a exécuter une seule fois en début de prgm,
    Methode2 est appelée régulièrement.

    Ces 2 méthode sont appelées par Main.
    Le soucis est que pour fonctionner, Methode2 a besoin d'une liste de Int, générée par Methode1.

    Je ne sais pas comment la lui transmettre... pourtant ce pb doit être récurant pr les développeurs.

    Mon prgm marchait jusque là mais tout était en bordel dans une seule classe et j'ai voulu structurer un peu

    Vs avez une idée??

  2. #2
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Tu peux nous montrer à quoi ressemble ton code?
    Sinon, il y a bision de solution selon les cas :
    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
     
    class MyClass1
    {
      int[] myTab = null;
     public MyClass1()
     {}
     
     public void method1()
     {
     myTab = new int[10];
     //...
     }
     
    public void method2() throws Exception
    {
     if(myTab==null)
      throw new NullPointerException("variable non initialisée");
    }
     
    }
    ou

    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
     
    class MyClass2
    {
     public MyClass2()
     {}
     
     public int[] method1()
     {
       return new int[10];
     }
     
    public void method2(int[] myTab) throws Exception
    {
     if(myTab==null)
      throw new NullPointerException("variable non initialisée");
    }
     
    }
    Dans le main
    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
     
    MyClass1 c1 = new MyClass1();
    c1.method1();
    try
    {
     c1.method2();
    }
    catch(Exception e){}
     
    /**********************/
    MyClass1 c2 = new MyClass1();
    int[] myTab = c2.method1();
    try
    {
     c2.method2(myTab);
    }
    catch(Exception e){}

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    juste une petite remarque:

    a ne jamais faire

  4. #4
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Si ta méthode 1 n'est exécutée qu'une fois, j'en déduis que ta liste est commune à l'ensemble de ton programme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public Class1 {
    	public static final List<Integer> list;
     
    	static {
    		list = method1();
     
    	}
     
    	public static List<Integer> method1() {
    		return new ArrayList<Integer>();
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
         public void method2() {
            // acces par Class1.list
     
         }

    Sachant qu'il faudrait peut-être prévoir que la liste soit être immutable.

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    c'est un peu cochon là ce bloc static inutile

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public Class1 {
    	public static final List<Integer> list  = method1();
     
    	public static List<Integer> method1() {
    		return new ArrayList<Integer>();
    	}
    }

  6. #6
    Membre du Club Avatar de KnowPart
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2010
    Messages : 78
    Points : 68
    Points
    68
    Par défaut
    cela va permettre d'exécuter le code static au chargement et une seul fois

  7. #7
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Les 2 écritures sont équivalentes.

    Celle de Tchize est plus claire et compacte, personnellement après avoir bossé sur des situations complexes, j'ai pris l'habitude (mauvaise probablement) de mettre les initialisations statiques dans un unique bloc, même si c'est un bête appel à une méthode - je suis sûr de retrouver mes petits

  8. #8
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Citation Envoyé par KnowPart Voir le message
    cela va permettre d'exécuter le code static au chargement et une seul fois
    On ne sait si la méthode 1 aurait besion des paramètre d'initialisation.

  9. #9
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Merci pour vos réponses

    Étant donné que la taille de ma liste est connue, j'avais essayé plutôt comme ça, peut-être y a t'il des erreurs:

    D'abord le crée ma liste a l'extérieur des methodes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static int listeR[] = new int [Taille()];
    Taille() étant une méthode qui calcule la taille du tableau.

    Puis je remplis une a une les cases de la liste avec Methode1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(int i=0; i< Taille() ; i++)    maliste[i] = 123;
    C'est toujours mieux d'assigner la taille d'un tableau quand on la connait non?

    Sinon c'est quoi cette syntaxe: List<Integer> , c'est juste pr dire que c'est une liste composée d'entiers, c'est équivalent à Int Maliste[] ?
    Et pourquoi vous mettez "new" dans le return, la liste a bien été crée au début de la méthode non?

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    houla, il vous manque les base en java vous http://jmdoudoux.developpez.com/cour...xe.php#syntaxe http://jmdoudoux.developpez.com/cour...ap-poo.php#poo http://jmdoudoux.developpez.com/cour...ackages-base-5

    Voir aussi les cours et tutoriels de formation pour apprendre le langage de programmation Java : http://java.developpez.com/cours/

    il n'est pas mieux de mettre la taille du tableau, car en fait c'est obligatoire!
    new -> crée une instance (ici de ArrayList<Integer>)
    List<Integer> est une java.util.List typée avec Integer (voir les docs sur les generics en java)

  11. #11
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Merci pour tes liens tchize

    C'est vrai que j'ai un peu tendance a partir a tête baissée dans des petites réalisations en oubliant parfois les cours théoriques de base.

    Bon je vais me taper tout ça mnt ^^ On se revois dans 2 semaines xD

    Natha

Discussions similaires

  1. Accès a des variables de classes
    Par lalouve dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 11/05/2006, 16h48
  2. variable de classe en Python
    Par Thierry Chappuis dans le forum Général Python
    Réponses: 5
    Dernier message: 09/02/2006, 22h06
  3. Variable de classe JPanel
    Par Janitrix dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 11/12/2005, 17h50
  4. débutant:utilisation de variable entre classe
    Par troojan dans le forum MFC
    Réponses: 1
    Dernier message: 07/12/2005, 23h31
  5. Réponses: 6
    Dernier message: 23/09/2005, 12h54

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