Appel d'attribut statique d'un objet contenu dans un tableau
cs_Mymy1984
Messages postés11Date d'inscriptionmercredi 23 avril 2008StatutMembreDernière intervention14 mars 2009
-
28 nov. 2008 à 19:49
cs_Mymy1984
Messages postés11Date d'inscriptionmercredi 23 avril 2008StatutMembreDernière intervention14 mars 2009
-
30 nov. 2008 à 01:03
Salut tout le monde,
Je dispose d'une classe Compte, qui possède des attributs statiques (numero, nom, solde). Dans une autre classe dans le meme projet, j'ai crée
des instances de la classe Compte et je les ai mis dans un tableau.
Maintenant, je veux parcourir mon tableau pour faire un test sur l'attribut numero (s'il existe un objet de type Compte dans le tableau ayant un numero = 1 par exemple). Comment je dois faire ce test?
ce code ne marche pas:
for (i=0;i<10;i++)
{
if (tab[i].numero==num){
......}
}
merci de m'aider. j'espere etre bien claire.
cs_Chatbour
Messages postés764Date d'inscriptionjeudi 27 juillet 2006StatutMembreDernière intervention 6 septembre 201019 28 nov. 2008 à 21:53
Salut et bienvenue parmi nous
ici, ça n'a aucun sens de déclarer tes données (numero, nom, solde) comme étant static car "tu veux" que chaque objet Compte ait ses propres données (numero, nom, solde).. n'est-ce pas ?
cs_Mymy1984
Messages postés11Date d'inscriptionmercredi 23 avril 2008StatutMembreDernière intervention14 mars 2009 29 nov. 2008 à 20:27
Merci pour ta reponse de toute façon j'essayerai de me documenter plus car je confond toujours. De plus, le compilateur m'indique une erreur en déclarant mes variables 'non static' et c'est ce que je comprends pas.
merci encor une fois jessayrai de trouver une solution pour ca.
cs_Mymy1984
Messages postés11Date d'inscriptionmercredi 23 avril 2008StatutMembreDernière intervention14 mars 2009 29 nov. 2008 à 23:37
en faite je les appèle déjà comme t'as di,précédé du nom de leur classe mais l'erreur persiste.
"cannot make a static reference to the non-static field Compte.numero"
J'ai cette erreur partout où j'appèle un attribut de la classe Compte. Dans le main et hors du main.
cs_Chatbour
Messages postés764Date d'inscriptionjeudi 27 juillet 2006StatutMembreDernière intervention 6 septembre 201019 29 nov. 2008 à 23:57
C'est ce que je dis..
un attribut static c'est un attribut de classe.
un attribut d'instance c'est un attribut propre à chaque objet de la classe.
Exemple :
class Compte {
/* Attributs privés d'instance */
private String numero;
private String nom;
private int solde;
/* Attributs publiques de classe */
public static final int solde_minimum = 100;
private static int nb_comptes = 0;
public Compte (String numero, String nom, int solde) {
this.numero = numero;
this.nom = nom;
this.solde = solde;
// La création d'un nouveau objet Compte incrémente le nombre total de comptes (nb_comptes)
nb_comptes++;
}
/* Méthodes getter */
public String getNumero() {
return numero;
}
public String getNom() {
return nom;
}
public int getSolde() {
return solde;
}
/* Méthodes setter */
public void setNumero(String numero) {
this.numero = numero;
}
public void setNom(String nom) {
this.nom = nom;
}
public void setSolde(int solde) {
if (solde >= solde_minimum) {
this.solde = solde;
}
else {
System.out.println("solde inférieur au solde minimum.");
}
}
/* Récupérer le nombre total de comptes */
public static int getCompteCount() {
return nb_comptes;
}
}
Maintenant, voici un exemple d'exécution :
public class Test {
public static void main(String[] args) {
Compte c1 = new Compte("012", "Ali", 1500);
Compte c2 = new Compte("065", "Baba", 2550);
// afficher le nombre courant de comptes : 2
System.out.println("nombre courant de comptes : " + Compte.getCompteCount());
cs_Mymy1984
Messages postés11Date d'inscriptionmercredi 23 avril 2008StatutMembreDernière intervention14 mars 2009 30 nov. 2008 à 01:03
Je te remercie vraiment pour ton aide.
En fait tout mon code était correcte et fait sur de bonnes bases mais je l'ai changé et cela m'a perturbé. Maintenant et grâce à toi je suis revenue dans une situation cohérente.
J'ai encore un autre problème dans mon code mais cette fois je dois bien réfléchir avant de demander de votre aide.