Partage
  • Partager sur Facebook
  • Partager sur Twitter

Appel d'une methode avec une classe

Sujet résolu
    22 décembre 2009 à 0:16:36

    Bonjour,
    Je suis en train d'apprendre le java et un exercice me pose problème :

    On nous demande de créer une classe Etudiant qui a comme attributs nom, prénom etc., un constructeur et une méthode affiche(). Jusque là, pas de problème!
    Après on nous demande de créer une méthode afficheTous() qui permet d'afficher tous les objets de la classe Etudiant créés.
    En Fait, dans l'exercice, on nous demande de tester :

    public static void main(String[] args) {
    Etudiant x=new Etudiant("Dupond","Jean","11 rue du bonheur", "0491222222", "Philosophie" ,123);
    Etudiant y=new Etudiant("Java","Jaime","13 Avenue de la programmation","11111111", "Information",8436);
    Etudiant.afficheTous();
    }

    C'est donc cette dernière instruction que je ne comprend pas. Quelqu'un peut-il m'aider?
    Merci d'avance!
    • Partager sur Facebook
    • Partager sur Twitter
      22 décembre 2009 à 9:37:42

      Ici c'est JavaScript, pas Java. Il vaudrait mieux que tu ailles voir par ici :
      http://www.siteduzero.com/forum-81-305-langage-java.html


      (Pour ton problème, je dirais qu'il va falloir que tu aies une propriété de la classe Etudiant, qui contienne la totalité des instances d'Etudiant. Ensuite la méthode de classe afficheTous() se contentera de parcourir ce "tableau" (ou autre structure de données) et d'appeler la méthode affiche() de chaque élément...)
      • Partager sur Facebook
      • Partager sur Twitter
        22 décembre 2009 à 9:58:21

        Comme structure de données je te conseil un tableau élastique. C'est un tableau qui n'a pas besoin d'être initialisé en taille et qui pourra comporter autant d'élément que tu le souhaites.
        Dans ce ce type de données, tu as plusieurs choix: ArrayList, Vector, Collection...

        Le soucis que je vois ici c'est que tu as plusieurs données par étudiant et il va te falloir stoker toutes ces données, ça va être lourd.
        Personnellement j'aurais créer un objet étudiant (le même que le tien sans la méthode afficher), ensuite j'aurais créé une autre classe GestionEtudiant qui pourrais créer les étudiants, les stoquer et les afficher grâce à la méthode afficher(). Ainsi on aurait un tableau élastique d'étudiant :p . Mais bon, c'est pas ton cas :) .

        Sinon tu as plusieurs solutions:
        - soit tu stoques toutes tes données dans le même tableau mais autre problème toutes tes données ne sont pas du même type (String, int..)
        - soit tu créé un tableau élastique pour chaque attribut de l'étudiant:
        exemple:
        class Etudiant{
        	//les attributs
        	private Vector<String> m_Nom =  new Vector<String>();
        	private Vector<String> m_Prenom =  new Vector<String>();
        	private Vector<Integer> m_Numero =  new Vector<Integer>();
        	....
        	
        	public Etudiant(String Nom, String Prenom, Int numero ...){
        		m_Nom.add(Nom);//ajoute le nom
        		m_Prenom.add(Prenom);
        		m_Numero.add(numero);
        		...
        	}
        	
        	public void afficher(){
        		for(int i=0; i<m_Nom.size(); i++){//parcour de tous les étudiants
        			System.out.prinltn(m_nom.elementAt(i) + " - " + m_Prenom.elementAt(i) + " - " + m_Numero.elemenAt(i);
        		}
        	}
        }
        

        Chaque étudiant est affecté a un id dans le tableau et pour un id identique tu accède dans les différents tableaux aux données de l'étudiant.

        J'espère que ça t'aidera.
        • Partager sur Facebook
        • Partager sur Twitter
          22 décembre 2009 à 10:35:56

          Euh... les Vector sont considérablement dépréciés tu sais...
          Mieux vaut une ArrayList.

          Mais je crois que tu te casses considérablement la tête herudo.

          Ce serait plus simple de faire un attribut et une méthode de classe.

          import java.util.ArrayList;
          
          public class Etudiant {
          
              private static ArrayList<Etudiant> liste = new ArrayList<Etudiant>();
          
              private String nom;
              private String prenom;
              private int age;
          
              public Etudiant(String n, String p, int a) {
                  nom=n;
                  prenom=p;
                  age=a;
                  liste.add(this);
              }
          
              public void afficher() {
                  System.out.println(nom+" "+prenom+" ("+age+")");
              }
          
              public static void afficheTous() {
                  for(Etudiant e : liste) {
                      e.afficher();
                  }
              }
          }
          
          • Partager sur Facebook
          • Partager sur Twitter
            22 décembre 2009 à 11:20:37

            Merci pour toutes vos réponses. Je pense que je vais m'en sortir maintenant!
            • Partager sur Facebook
            • Partager sur Twitter
              22 décembre 2009 à 11:53:57

              En effet je me suis cassé la tête :).
              • Partager sur Facebook
              • Partager sur Twitter

              Appel d'une methode avec une classe

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown