Utiliser une variable d'une classe dans une autre classe en java

cs_Manyanya Messages postés 51 Date d'inscription mercredi 23 décembre 2009 Statut Membre Dernière intervention 9 mai 2012 - 30 juil. 2010 à 10:59
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 30 juil. 2010 à 15:39
Salut,

J'ai une difficulté ! J'ai construit une classe en java où une lecture dans une base des données doit être réalisée. Mais tout au long de mon application, cette fois dans une autre classe, je voudrais utiliser le contenu de ce tableau.

Comment puis-je résoudre ce problème ?

En fait, au début de mon application il faut un username et un mot de passe(c'est la classe d'authentification). Le niveau d'accès est défini. Au cours de l'utilisation, je voudrais utiliser le niveau d'accès pour activer ou désactiver l'action sur un bouton ou un checkbox se trouvant dans une autre classe. Comment y arriver ?

Votre aide me réjouira !

D'avance merci !

7 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
30 juil. 2010 à 12:05
Salut,

Et bien il s'agit d'une fonction public qui expose la valeur de ta variable :

public String getValeur() {
return taVariableString;
}

Bien sûr à toi d'adapter selon le type de ta variable : ici il s'agit d'une chaîne de caractère, mais il peut s'agit de n'importe quoi.

Et ensuite, dans la classe qui doit utiliser cette variable, il te suffit de lui passer une instance de ta classe, et d'appeler le getter pour récupérer la valeur.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
8
cs_Manyanya Messages postés 51 Date d'inscription mercredi 23 décembre 2009 Statut Membre Dernière intervention 9 mai 2012 11
30 juil. 2010 à 15:04
Salut,

Merci pour ton aide.

Mon application commence par une classe Ouvrir.java où il y a le main :
...........
public static void main(String[] args) {
Presenter present=new Presenter();present.setVisible(true);
}
............
La classe Presenter.java est une classe qui présente un menu. C'est ici avant son affichage on lit le username et le password pour lire son niveau d'accès correspondant. La valeur entière lue est convertie en binaire qui constitue un tableau (n,p) où n est le nombre des menu et p le nombre d'items dans un menu. Si la valeur est 1 on a accès à cet item du menu sinon l'accès est refusé.
Dans un item, on doit vérifier le niveau d'accès d'un autre item pour l'utilisateur courant afin de désactiver ou d'activer un bouton selon le cas. Voilà mon problème.

J'ai respecté la nomenclature.
J'ai défini mon tableau dans Presenter.java comme ceci pour que Finance.java le récupère:
......
public int[][] getTableau()
{
return tableau;
}
.....

Dans Finance.java, je voudrais récuper le tableau. Je fais:
..............
int [][] tableau= present.getTableau();
...............

Je n'ai pas la réponse. Car il me faut la valeur tableau[i][j].

Mais si je fais dans Finance.java:
..............
Presenter present = new Presenter();
int [][] tableau= present.getTableau();
...............

J'ai Presenter.java qui se relance et moi ce n'est pas ce que je voudrais.

Je ne vois pas le "péché" qui me fait afficher l'erreur selon laquelle "present" est une varible non trouvée dans Finance.java. Je sais je l'avais défini dans Ouvrir.java

Merci pour votre aide !
3
cs_Manyanya Messages postés 51 Date d'inscription mercredi 23 décembre 2009 Statut Membre Dernière intervention 9 mai 2012 11
30 juil. 2010 à 14:06
Salut,

Dans la classe qui expose (presenter.java), j'ai défini ce qui suit:

public int[][] GetTableau()
{
return this.TAcces;
}

où TAcces est un tableau des entiers de dimensions(n,p)

Dans la classe qui a besoin des ces valeurs, j'essaie d'appeler le tableau par : Tableau=presenter.GetTableau();
où Tableau a été initialisé int [][] Tableau= new int [n][p];

J'ai toujours des erreurs (on souligne en rouge).

Je ne sais pas où j'ai commis la faute.

Une aide m'est d'une grande utilité !

D'avance merci !
1
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
30 juil. 2010 à 14:21
Salut,

Attention à ta nomenclature : une majuscule pour le nom d'une classe, pas de majuscule pour le nom des fonctions et pour le nom des variables, respecter la nomenclature permet d'avoir un code uniforme et il sera bien plus facile à relire par ceux qui t'aideront.

Sinon, il faut que tu travaille avec l'instance de ta classe, et non avec ta classe elle-même : presenter.GetTableau() ne représente rien, il faut travailler avec l'instance de presenter qui fait les calculs :

Voici ce que ca donne (en respectant la nomenclature java) :
Presenter presenter = new Presenter();
int [][] tableau= presenter.getTableau();

Bien sûr, il ne faut pas faire ce que je fais là : il faut travailler avec l'instance de Presenter qui charge tes données à partir de ta base, sinon tu va avoir un tableau vide !
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
1

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

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
30 juil. 2010 à 15:39
Salut,

Bien sûr, il ne faut pas faire ce que je fais là


Forcément, si tu refais exactement ce que je t'ai dit, tout en te disant qu'il ne fallait pas faire comme cà...

Il faut tu travaille sur ton instance de Presenter que tu as crée dans ton main sinon forcément, tu n'arriveras jamais à récupérer les données que tu as chargée.

Il faut donc que tu passe l'instance de ton Presenter à ta classe Finance pour pouvoir l'utiliser, par exemple :
public static void main(String[] args) {
Presenter present=new Presenter();present.setVisible(true); // ok, tu crée ton instance
}


Dans ton constructeur de Presenter (par exemple) :
public Presenter() {
Finance finance = new Finance(this);
}

Et dans ta classe Finance :

protected Presenter presenter;
public Finance(Presenter presenter) {
this.presenter = presenter;
}
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
1
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
30 juil. 2010 à 11:24
Salut,

Il te suffit de faire un getter pour pouvoir lire le contenu de ta variable.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cs_Manyanya Messages postés 51 Date d'inscription mercredi 23 décembre 2009 Statut Membre Dernière intervention 9 mai 2012 11
30 juil. 2010 à 11:50
Salut,

Content de te retrouver Darksidous !

Merci pour ta réponse mais je ne comprends pas ce que tu entends par un getter. Pourras-tu être un peu plus explicite ? Au mieux me donner un exemple par un morceau de codes.

Merci !
0
Rejoignez-nous