Prob en java

slt,
j ai 1 probleme avec les vecteurs en java
j ai fait un prog ou 2 classes heritent d 1 seule j ai fait les deux classes mais lorsque j veux qfficher le vecteur
la premiere s affiche et la deuxieme nin j sais pas koi faire
merci d avance
Configuration: Windows XP
Internet Explorer 6.0

14 réponses

  1. Modérateur
    Bonjour ..

    j'ai déjà ma réponse au niveau de la méthode Saisir, tu effectues bien un override au niveau des tes sous-classe.

    Maintenant, j'ai remarqué dans ta classe Main que tu passais par un objet o pour "caster" les objets venant du vecteur.
    ça peut poser des problèmes, en sachant qure tu n'es pas certain de ce que tu vas récuper. Je m'explique.
    Tu vas récupérer un objet de type Client, ça c'est certain. Par contre es-tu certain que tu récupère un personne morale ou physique ??

    Il existe une méthode de la classe Object qui te permet de tester si tu traites la bonne classe. C'est la méthode "equals"

    public boolean equals(Object obj)

    donc, je pense que dans ce bout de code

    case'3' : for ( Enumeration e=v.elements();e.hasMoreElements();)
    {
    o=e.nextElement();
    p=(PErsonne_physique)o;
    if(p.nomclasse.compareToIgnoreCase("personne physique")==0)
    { st=p.ToString();
    System.out.println(st);}
    else
    { m=(Personne_morale)o;
    st=m.ToString();
    System.out.println(st);}
    }
    break;

    default :System.out.println("Cas non traite");
    }

    tu devrait tester avant tout le type de classe qui ressort du vecteur avec la méthode equals.

    Autre chose, pour entrer un objet dans ton vecteur, utlise la méthode du vecteur "addElement" plutot que "add".

    http://java.sun.com/j2se/1.3/docs/api/java/util/Vector.html

    tiens moi au courant.

    1. slt
      merci pour ton interret
      j n sais pas ce que tu veux dire par si j ai chage quelque chose par rapport a la classe mere ni son rapport avec le vecteur
      entout cas voisi le cod de la classe mere et des 2 classes filles
      voici la classe mere

      import java.io.*;
      public class Client {
      /********************Declaration general************************/
      static BufferedReader buf= new BufferedReader(new InputStreamReader(System.in));
      protected String nom;
      protected String prenom;
      protected int code;

      /************************Constructeur********************************/
      public Client()
      {
      nom="espoire";
      prenom="espoire";
      code=0;
      }
      public void Saisir()
      {
      try {
      System.out.println("entrer le nom");
      nom=buf.readLine();
      System.out.println("entrer le prenom");
      prenom=buf.readLine();
      System.out.println("entrer le code");
      code=Integer.parseInt(buf.readLine());
      } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      }

      }
      /*****************************Afficher*************************/
      public String ToString()
      {
      return("\n le nom est :"+nom+"\n le penom est :"+prenom+"\n le code est :"+code+"\n\t-----------------------------");
      }
      }
      la 1 ere classe fille

      import java.io.BufferedReader;
      import java.io.IOException;
      import java.io.InputStreamReader;

      public class PErsonne_physique extends Client{

      /*************************Declaration globale*********************/
      static BufferedReader buf= new BufferedReader(new InputStreamReader(System.in));
      private String adresse;
      private String tel;
      public String nomclasse="Personne physique";
      /**************************Constructeur******************/
      public PErsonne_physique()
      { super();
      adresse="nul";
      tel="nul"; }
      /**************************Saisir***********************/
      public void Saisir()
      {
      super.Saisir();

      try {
      System.out.println("entrer l adresse ");
      adresse=buf.readLine();
      System.out.println("entrer le numero de telephone ");
      tel=buf.readLine();
      } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      }
      }
      /********************************Afficher***************************/
      public String ToString()
      {
      String st;
      st=super.ToString();
      return(st+"\nl adresse :"+adresse+"\n le numero de telephone est :"+tel+"\n\t...............");

      }
      }
      voici la 2eme classe fille qui cree le prob

      import java.io.BufferedReader;
      import java.io.IOException;
      import java.io.InputStreamReader;

      public class Personne_morale extends Client{
      /********Declaration Globale**************/
      static BufferedReader buf= new BufferedReader(new InputStreamReader(System.in));
      private String cin;
      private String raison;
      public String nomclasse="Personne morale";
      /********************Constructeur**********************/
      public Personne_morale()
      {
      super();
      cin="nul";
      raison="nul";
      }
      /*********************************Saisir************************/

      public void Saisir()
      {
      super.Saisir();

      try {
      System.out.println("entrer le CIN ");
      cin=buf.readLine();
      System.out.println("entrer la raison sociale");
      raison=buf.readLine();
      } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      }
      }
      /*****************************Afficher**************************/
      public String ToString()
      {
      String st;
      st=super.ToString();
      return(st+"\nle CIN :"+cin+"\n la raison sociale :"+raison+"\n\t°°°°°°°°°°°°°");
      }

      }

      merci une autre fois
      1. Modérateur
        si je permettre un avis ...

        le fait d'utiliser "do" en java n'est pas recommendé du tout
        1. Modérateur
          ok

          tes classes héritent d'une seule classe

          mais as-tu modifié quelque choses à ces classes par rapport à la classe mère ?
          1. slt
            je sais que mon probleme est trop banale mais
            j sais pas comment faire pour le resoudre et j ai jamais travaille avec la metode que tu m avais propose ce qui fait j n sais pas ce que j dois changer pour qu il marche
            j vais devenir dingue
            merci pour ton attention
            1. slt
              mon programme fait entrer des objets dans 1 vecteur et les lis
              autrement dis il fait entrer et sortir des objets d un vecteur
              sauf que les objets utilises sont ceux de 2 classes qui heritent d 1 seule
              le probleme c est que lorsque j execute le programme la premiere calsse s affiche alors que la 2 eme bloque le prog en affichant le nom de la 2 eme classe
              merci pour votre interret
              1. Modérateur
                ok ..

                peux tu m'expliquer brièvement ce que ton programme est sensé faire, svp ?
                1. slt
                  merci encore une fois
                  mais j ai instancie toute les classes
                  merci encore
                  1. Modérateur
                    salut

                    il est clair que si tu veux travailler comme celà, la structure du programme doit être revue

                    ce qui s'est passé, à mon avis, c'est q'une seule classe à été instanciée
                    1. slt
                      merci pour ta reponse mais lorsque j ai fait c que tu m as demande j n ai pu saisir qu une seul fois puis le programme s est bloque en affichant null
                      et encore merci
                      1. Modérateur
                        Salut

                        essaye de déclarer tes attributs comme attribut de classe

                        je veux dire les déclarer en dehors de ta méthode main.

                        ensuite, l'instanciation des ces objets attributs (dont fait partie le vector)peut être faite dans le constructeur de la classe;

                        ce n'est pas toujours très bon de tout faire dans la méthode main..

                        1. slt,
                          j ai 1 probleme avec les vecteurs en java
                          j ai fait un prog ou 2 classes heritent d 1 seule j ai entrer fait les deux classes mais lorsque j veux afficher le vecteur
                          la premiere s affiche et la deuxieme non j sais pas koi faire
                          merci d avance
                          pr plus d infos voici mon prog
                          import java.io.*;
                          import java.util.*;
                          public class Principal {
                          static BufferedReader buf= new BufferedReader(new InputStreamReader(System.in));
                          public static void main(String[] args) {
                          try
                          {
                          char reponse='n',choix='n';
                          PErsonne_physique p= new PErsonne_physique();
                          Personne_morale m=new Personne_morale();
                          Vector v= new Vector();
                          Client c= new Client();
                          Object o= new Object();
                          String st;

                          do
                          {
                          System.out.println("\t 1---> entrer un client physique ");
                          System.out.println("\t 2---> entrer un client morale ");
                          System.out.println("\t 3---> afficher les clients entres ");
                          choix=buf.readLine().charAt(0);
                          switch(choix)
                          {
                          case '1' : char repons= 'n';
                          do
                          {
                          p= new PErsonne_physique();
                          p.Saisir();
                          v.add(p);
                          System.out.println("voulez vous saisr un aitre client physique");
                          repons=buf.readLine().charAt(0);
                          }while(repons=='o'||repons=='O');
                          break;
                          case'2' : char repon= 'n';
                          do
                          {
                          m= new Personne_morale();
                          m.Saisir();
                          v.add(m);
                          System.out.println("voulez vous saisir un autre client morale?");
                          repon=buf.readLine().charAt(0);
                          }while(repon=='o'||repon=='O');
                          break;
                          case'3' : for ( Enumeration e=v.elements();e.hasMoreElements();)
                          {
                          o=e.nextElement();
                          p=(PErsonne_physique)o;
                          if(p.nomclasse.compareToIgnoreCase("personne physique")==0)
                          { st=p.ToString();
                          System.out.println(st);}
                          else
                          { m=(Personne_morale)o;
                          st=m.ToString();
                          System.out.println(st);}
                          }
                          break;

                          default :System.out.println("Cas non traite");
                          }

                          System.out.println("\tvoulez vous revoir le menu?");
                          reponse=buf.readLine().charAt(0);
                          }while(reponse=='o'||reponse=='O');

                          }catch(Exception e){System.out.println(e.getMessage());}

                          }

                          }
                          1. Modérateur
                            Salut

                            tes classes héritent ou sont des instanciations ?
                        2. Modérateur
                          Salut

                          ta question n'est pas très claire

                          tu peux développer ? quitte à mettre ton code

                          merci