Variable commune a toute les class [Résolu]

Messages postés
34
Date d'inscription
samedi 16 avril 2005
Dernière intervention
5 février 2010
- - Dernière réponse : chocobarbe
Messages postés
34
Date d'inscription
samedi 16 avril 2005
Dernière intervention
5 février 2010
- 11 sept. 2007 à 09:09
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??
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
0
Merci
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
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
21
Date d'inscription
mardi 14 août 2007
Dernière intervention
23 septembre 2008
0
Merci
salut,
la solution consiste a utiliser une variable static pour quelle soit commune a toutes les classes
A+
Commenter la réponse de devwithjava
Messages postés
34
Date d'inscription
samedi 16 avril 2005
Dernière intervention
5 février 2010
0
Merci
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 !)
Commenter la réponse de chocobarbe
Messages postés
34
Date d'inscription
samedi 16 avril 2005
Dernière intervention
5 février 2010
0
Merci
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)
Commenter la réponse de chocobarbe
Messages postés
34
Date d'inscription
samedi 16 avril 2005
Dernière intervention
5 février 2010
0
Merci
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 !
Commenter la réponse de chocobarbe
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
0
Merci
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
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
34
Date d'inscription
samedi 16 avril 2005
Dernière intervention
5 février 2010
0
Merci
bon ba ca marche, merci pout tout et surtout pour la réactivité de ce forum !
Commenter la réponse de chocobarbe

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.