La reutilisation d'une variable PUBLIC

Signaler
Messages postés
134
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
31 mai 2010
-
Messages postés
134
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
31 mai 2010
-
Bonjour a tous


mon nouveau probléme apparait qu'il est s'imple mais jarrive pas a le resoudre,puisque je suis debtant en JAVA


c'est au niveau de la reutilisation d'une variable PUBLIC,
considirons les trois classe C1,C2,C3;
C1 contien une variable "PUBLIC boolean V1", et deux bouton B1, B2


quand on clicker sur B1, V1 recoit FALSE , et lance C2 (affiche l'autre fenetre )
quand on clicker sur B2, V1 recoit TRUE , et lance C2 (affiche l'autre fenetre )


C2 contien un bouton B qui permet de lancer C3 sous condition si V1 est TRUE, sinon il lance Rien


C3 contien un bouton BB qui permet de lancer C2 c'est a dire de retourner vers la page c2


(( je veux repeter cette action plusieur fosi sans que V1 se reinisialise )).




ajouter que j'ai esayé de tester on utilise dans C2 quand clicke sur B
 C1 c= new C1();
if(c.V1==true){
 C2 cc = new C2();
cc.show();  }


mais la variable V1 se reinisialise ( car j'ai fai new C1() )


mon probleme c'est que:  je veux appler cette variable et fair mon teste plusieur fois sont que
cette dernier se reinisialise.


et Merci beaucoup

5 réponses

Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

C'est problème de création des instances.

Parfois on doit suivre une startégie bien determinée pour la création des instances (l'opérateur new seul ne suffit pas).

Pour assurer l'unicité des instances provenant de la classe C1, tu peux implémenter le pattron Singleton:

public class C1 ... {
    private static C1 instance = null;

    public static C1 getUniqueInstance() {
       if (instance == null) {
          instance = new C1();
       }
       return instance;
    }

    private C1() {
       // Réduire la visibilité de tous les constructeurs pour rendre la classe C1
       // Non intantiable.
    }
}
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

Note:

Ne pas rendre les attributs de ta classe directement accessible.

Respectes le concept d'encapsulation.

Utilises des Accesseurs/Modificateurs (Getters/Setters) pour accèder aux attributs de ta classe.
Messages postés
134
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
31 mai 2010
4
Merci pour les reponse, mais je sais pas pk ca marche pas,j'ai pas bien comprie
(Getters/Setters)??
merci encore
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

Pour préserver la même instance de la classe C1, tu peux procéder ainsi en déclarant l'instance de C1 comme attribut de ta classe, ceci garantit le fait qu'on manipule le même objet:

public class Test {
    private C1 c1 = null;

    // Quelque part dans une méthode
    if (c1 == null) {
       c1 = new C1();
    }
    if (c1.V1 == true) {
       // Le reste du traitement.
    }
}
Messages postés
134
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
31 mai 2010
4
bon soir
merci jeune homme
le probléme c'est a ce niveau la "" c1 = new C1(); ""
et exactement ce "" new "" alors que tous les variable de c1 se reinisialise
je veux accéder a c1 sans reinistialiser tous c'est adire sans NEW
merci beaucoup
take care