Variable commune a toute les class

Résolu
chocobarbe Messages postés 32 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 5 février 2010 - 10 sept. 2007 à 10:34
 kenshiro - 26 mars 2019 à 12:31
Bonjour à tous!

Voici mon probleme :

Je fais de la programmation en java, du graphique surtout.

Ma fenetre principale est crée dans un fichier genre fenetre1.class, grace a elle, on peut acceder à une nouvelle fenetre qui est crée par un autre fichier( fenetre2.class)

Dans fenetre2.class on effectué des saisies de valeurs et des calculs. jai donc un variable resultat.

Il faut que dans ma fenetre1 j'affiche ce resultat ! Mais ou et comment déclarer cette variable !

En clair il me faut une variable globale à TOUTE les classes, et ca , j'ai beau chercher, j'ai pas trouvé ...

La seule solution qui me semblerait possible est de crée les 2 fenetres dans le meme fichier, mais ca rendrait le code lourd.

Des idées??
A voir également:

9 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
10 sept. 2007 à 11:36
Salut,

Ben tout dépend de la solution que tu retiens.

Dans ton cas, je pense que la seconde est la meilleure :

Dans ta classe contenant la variable :
private String TaVariable;

public void setTaVariable(String TaVariable) {
    this.taVariable = TaVariable;
}

public String getTaVariable() {
    return TaVariable;
}
______________________________________
DarK Sidious
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
10 sept. 2007 à 13:55
Salut,

Bien entendu le "TaVariable" doit être modifié par le nom de ta variable, et pour le "taVariable", y'a bien une faute de frappe, faut lire : "this.TaVariable"

Par contre, pour accèder à la variable en question à partir de ta fenêtre 1, il ne suffit pas de taper le nom de la variable (comme ca serait le cas pour une variable globale), il faut passer par une instance de ta 2ème classe :

ici en l'occurence, tu dois avoir une déclaration du type :
Fenetre2 fenetre = new Fenetre2();

Et bien il te faut utiliser l'objet fenetre pour accèder à ta variable :
fenetre.setTaVariable("toto");
System.out.println(fenetre.getTaVariable());
______________________________________
DarK Sidious
3
Salut,
Merci pour toutes tes réponses elles m'ont beaucoup aidé
Mais si le getter renvoie la variable vide (celle déclarée au début) comment faire pour récupérer la variable modifié dans le onCreate ?
0
chocobarbe Messages postés 32 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 5 février 2010 1
10 sept. 2007 à 13:01
Dit comme ca, ca parait assez simple.

Dit moi voir si je procede bien :

Dans ma fenetre2.class, j'ajoute ton code

public class fenetre2{
private String TaVariable;

Tavariable = truc + machin;

public void setTaVariable(String TaVariable) {
    this.taVariable = TaVariable; 
// ya pas une faute la ? taVariable=>TaVariable
}

public String getTaVariable() {
    return TaVariable;
}

}

Mais pour ma fenetre principale ( fenetre1.class ), lorsque je vais ecrire à un endroit "Tavariable", va t'elle la reconnaitre, faut il la déclarer? si oui comment car jai peur que chaque "Tavariable" ne devienne utilisable que dans sa class respectives.

(Oui je sais ya beaucoup de question  et je vous remercie de suivre l'affaire)
1
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
10 sept. 2007 à 10:40
Salut,

Cela n'est pas possible directement, et encore heureux : c'est l'une des causes des bugs les plus chiant à debugger !

bien que ce soit possible de rendre une variable public à tout le projet à partir d'un nom de classe, je te déconseille vivement cette approche, cela va à l'encontre du modèle objet !

La solution consiste à soit :
1/ Créer une constantes statiques dans une classe si la variable n'est pas modifiée
2/ Créer des accesseurs à ta variables dans la classes qui la stocke (si chaque instance de la classe doit contenir une  valeur différente).

3/ Créer une classe singleton avec ta variable et ses accesseurs (la solution la moins crade pour faire une variable globale à mon avis)
4/ Créer une variable static avec des accesseurs static dessus (simulation d'une variable globale, mais très crade !)
______________________________________
DarK Sidious
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
devwithjava Messages postés 21 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 23 septembre 2008
10 sept. 2007 à 10:53
salut,
la solution consiste a utiliser une variable static pour quelle soit commune a toutes les classes
A+
0
chocobarbe Messages postés 32 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 5 février 2010 1
10 sept. 2007 à 11:30
Et concretement j'ecris ca comment ?

Static float resultat ?? =>  je le place ou dans ma fenetre1.class et/ou  fenetre2.class ?

La solution consiste à soit :
1/ Créer une constantes statiques dans une classe si la variable n'est pas modifiée ==> ma variable va être modifié de temps en temps

2/ Créer des accesseurs à ta variables dans la classes qui la stocke (si chaque instance de la classe doit contenir une  valeur différente). ==>  niveau vocabulaire java je suis pas tres fort ( " instance" ), je ne comprend donc pas cette solution

3/ Créer une classe singleton avec ta variable et ses accesseurs (la solution la moins crade pour faire une variable globale à mon avis)
=> comment faire? ( selon toi c'est le plus simple )

4/ Créer une variable static avec des accesseurs static dessus (simulation d'une variable globale, mais très crade !)
0
chocobarbe Messages postés 32 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 5 février 2010 1
10 sept. 2007 à 14:34
Et bin vivement que j'rentre chez moi pour tester ca   NONDIDIOU !!!

et bien sur je te tiendrait au courant de la reussite ( ou non ) de cette procedure

Merci d'avance !
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
10 sept. 2007 à 15:26
Salut,

En tout cas, c'est l'approche classique : une variable privée dont on rend accessible à l'extérieur par des getters/setters, cela permet de plus facilement débugguer une application.
______________________________________
DarK Sidious
0
chocobarbe Messages postés 32 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 5 février 2010 1
11 sept. 2007 à 09:09
bon ba ca marche, merci pout tout et surtout pour la réactivité de ce forum !
0
Rejoignez-nous