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 :

Question sur l'utilisation du mot réservé static


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Question sur l'utilisation du mot réservé static
    Bonjour,

    Je développe en superwaba quatre classes, la classe principale : Principal, trois autres classes, deux qui héritent de Container : Configuration, Affichage + une autre classe Chronometre. A savoir que la classe Principal ne me sert qu'à instancier les trois classes précédentes au démarrage.

    Ces trois classes doivent communiquer entre elles lors de certain événement, par exemple quand je suis dans ma fenêtre de config et que je valide celle-ci, je déclenche un événement par le clique sur le bouton et la je dois appeler plusieurs méthodes des différentes classes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //Si l'événement est la validation du bouton BValider 
    if(e2.target==BValider){         Principal.chronometre.Initialisation_Cycles(EEdit.size()); 
    Principal.affichage.HPBar = new Hashtable(EEdit.size()); 
    Principal.chronometre.InitialiserTimer(2); 
     
    Principal.affichage.LTimer.setText("Cycle 1 :"); 
    Principal.MBMenu1.setEnabled(101,true);       
     
    Principal.getMainWindow().swap(Principal.affichage); 
    }
    Donc j'ai déclaré dans ma classe Principal les trois précédentes en static :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Principal extends MainWindow 
    { 
     
       static Configuration CCycle; 
       static Affichage affichage_chronometre; 
       static MenuBar MBMenu1 ; 
       static Chronometre chronometre;
    Cependant je ne sais pas si cette façon de faire, bien quelle marche, soit correcte du point de vu de l'optimisation du code ou du style, de plus si une variable static s'apparente à une variable global en c++ il me semble qu'il vaut mieux éviter de les utilisées, ou du moins les utilisées un minimum.

    Avez-vous une idée de la meilleurs façon pour traiter ce genre de cas ou cela vous semble t-il correcte ?

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Au lieu de passer par des variables static, fais de ta classe principale un controlleur permettant à tes trois autres classes de discuter les unes entre les autres (tu passe la référence de ton controlleur à ces classes à l'instanciation et définis des méthodes d'acces dans ton controlleur.

    De telle façon tes classes n'auront besoin de connaitre que ta classe principale et pas les autres

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse, je pense avoir compris l'idée mais je ne vois pas trop ce que tu veux dire par" passe la référence de ton controlleur à ces classes". Mais je vais essayé de faire les méthodes pour communiquer on verras déjà ce que ça donne.

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    quelquechose comme ceci (ça s'apparente au pattern mvc qui est tres présent en java)
    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
     
    public class ClassePrincipale {
     ClasseTernaire c1;
     ClasseSecondaire
    public ClassePrincipale() {
      c = new ClasseSecondaire( this );
      c1= new ClasseTernaire( this );
    }
     
    //les méthodes pour accéder aux informations des classes voulues
     
    ....
    }
     
    public class ClasseSecondaire {
    ClassePrincipale cp;
     
    public ClasseSecondaire(ClassePrincipale cp) {
    this.cp = cp;
    }
     
    //puis tu accède aux méthodes de ta classe principale
    }

    Eventuellement il pourrait être judicieux de faire de ta classe principale un singlemeton afin d'être sur qu'il n'y ait qu'un seule instance en cours (accessoirement ça t'éviterait de passer ta classe principale en paramètre du constructeur, si tu ne connais pas le pattern du singleton, va dans les cours java de developpez.com, tuy trouveras des informations surement mieux faites que celle que je pourrais te filer
    ++

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Ok j'ai compris ce que tu veux faire, c'était juste le fait de passer en paramètre la classe principale lors de l'instanciation des classes secondaires que je ne comprenais pas. Je vais regarder les cours de developpez.com pour le pattern et le singleton savoir à quoi ça correspond.
    Merçi.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/11/2010, 17h00
  2. Question sur l'utilisation de wget
    Par berry dans le forum Réseau
    Réponses: 7
    Dernier message: 24/05/2007, 22h46
  3. Question sur l'utilisation du popupMenu
    Par Jayceblaster dans le forum Delphi
    Réponses: 2
    Dernier message: 25/07/2006, 10h59
  4. question sur l'utilisation d'une listBox
    Par Mickey.jet dans le forum Delphi
    Réponses: 3
    Dernier message: 02/06/2006, 17h57
  5. [Framework] Questions sur l'utilisation de spring
    Par mlequim dans le forum Spring
    Réponses: 10
    Dernier message: 01/02/2006, 15h27

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