Appel d'attribut statique d'un objet contenu dans un tableau

Signaler
Messages postés
11
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
14 mars 2009
-
Messages postés
11
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
14 mars 2009
-
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.

7 réponses

Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
18
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 ?

voici à quoi sert le modificateur d'accès static..

Bonne continuation !


_____________________

Vos avis et critiques sur le livre "Objets réactifs en java" de Frédéric Boussinot : contactez moi par MP..
Messages postés
11
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
14 mars 2009

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.
Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
18
de rien :)

"mon compilateur m'indique une erreur en déclarant mes variables 'non static'"..

tu dois certainement les appeler comme si ils étaient déclarées static, comme dans cet example..

class Compte {
  public String nom;
  ...
}

public class Test {
  public static void main(String[] args) {
    String nom = Compte.nom;
  }
}

j'espère que cela te donne une idée sur la cause d'erreur.. sinon montres-nous ton code..

Cordialement..


_____________________

Vos avis et critiques sur le livre "Objets réactifs en java" de Frédéric Boussinot : contactez moi par MP..
Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
18
j'ai oublié un mot qui pourrait changer tout le sens

"
tu dois certainement les avoir appelé comme si ils étaient déclarées static, comme dans cet example.."




l'exemple génère la même erreur..

_____________________

Vos avis et critiques sur le livre "Objets réactifs en java" de Frédéric Boussinot : contactez moi par MP..
Messages postés
11
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
14 mars 2009

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.
Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
18
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());
       
        // afficher les références de c1
        System.out.println("numéro : " + c1.getNumero() + "\nnom : " + c1.getNom() + "\nsolde : " + c1.getSolde());
    }
}









_____________________

Vos avis et critiques sur le livre "Objets réactifs en java" de Frédéric Boussinot : contactez moi par MP..
Messages postés
11
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
14 mars 2009

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.