pb avec prg ploymophisme

pb avec prg ploymophisme - Java - Programmation

Marsh Posté le 01-02-2010 à 20:17:40    

bonjour  
j'ai un pb avec mon prg quelqu'un peut m'aider s'il vous plaît,en compilant mon prg
j'ai erreur suivant;veuillez m'aidez s'il vous plaît
 
Exception in thread "main" java.lang.Error: Unresolved compilation problem:  
 The constructor Capitale(String, int, String, String) is undefined
 
 at Mypackage1.Sdz1.main(Sdz1.java:24)
 
ligne 24 est:
Capitale C=new Capitale(tab[i],tab2[i],"france","Sarko" );

Code :
  1. package Mypackage1;
  2. public class Capitale extends Ville
  3. {
  4. private String president;
  5. //constructeur par defaut
  6. public Capitale()
  7. {
  8.  //ce mot clé appelle le constructeur de la classe mère
  9.  super();
  10.  this.categorie=categorie;
  11.  president="aucun";
  12. }
  13. //Description d'une capitale
  14. public String decrisToi()
  15. {
  16.  String str=super.decrisToi()+"\n \t==>>"+this.president+"est son president";
  17.  return str;
  18. }
  19. //return le nom du president
  20. public String getPresident()
  21. {
  22.  return president;
  23. }
  24. //definit le nom du president
  25. public void setPresident(String President()
  26. {
  27.  this.president=president;
  28. }
  29. }


 

Code :
  1. package Mypackage1;
  2. public class Ville
  3. {
  4.   /*variable publiques qui comptent les instance*/
  5.   public static int nbreInstance=0;
  6.   /*variable privée qui comptera aussi les instances*/
  7.   protected static int nbreInstanceBis=0;
  8.   /*Stocke le nom de notre ville*/
  9.   protected String nomVille;
  10.   /*Stocke le nom du pays de notre ville*/
  11.   protected String nomPays;
  12.   /*Stocke le nombre d'habitants de notre ville*/
  13.   protected int nbreHabitant;
  14.   //Stocke le type de notre ville
  15.   protected char categorie;
  16.   //Constructeur par défaut*/
  17.   public Ville()
  18.   {
  19.          //on incremente nos variables à chaque appel aux constructeurs
  20.    nbreInstance++;
  21.    nbreInstanceBis++;
  22.   
  23.           nomVille = "Inconnu";
  24.           nomPays = "Inconnu";
  25.           nbreHabitant=0;
  26.          
  27.       }
  28.   //constructeur d'initialisation
  29.      public Ville(String pNom,String pPays,int pNbre)
  30.      {
  31.      //on incremente nos variables à chaque appel aux constructeurs
  32.       nbreInstance++;
  33.       nbreInstanceBis++;
  34.    
  35.       nomVille=pNom;
  36.       nomPays=pPays;
  37.       nbreHabitant=pNbre;
  38.       categorie=this.categorie;
  39.      }
  40.      //****************************************************************************************
  41.      //                                ACCESSEURS
  42.      //***************************************************************************************
  43.      public static int getNombreInstanceBis()
  44.      {
  45.       return nbreInstanceBis;
  46.      }
  47.      //Retourne le nom de la ville
  48.      public String getNom()
  49.      {
  50.       return nomVille;
  51.      }
  52.      
  53.    //Retourne le nom du pays
  54.      public String getNomPays()
  55.      {
  56.       return nomPays;
  57.      }
  58.      
  59.    //Retourne le nombre d'habitants
  60.      public int getNombreHabitant()
  61.      {
  62.       return nbreHabitant;
  63.      }
  64.      
  65.      //Retourne la categorie de la ville
  66.      public char getCategorie()
  67.      {
  68.       return categorie;
  69.      }
  70.      //***************************************************************************************
  71.      //                                MUTATEURS
  72.      //***************************************************************************************
  73.      //Definit le nom de la ville
  74.      public void setNom(String pNom)
  75.      {
  76.       nomVille=pNom;
  77.      }
  78.      
  79.      //Definit le nom du pays
  80.      public void setNomPays(String pPays)
  81.      {
  82.       nomPays=pPays;
  83.      }
  84.      
  85.      //Definit le nombre d'habitants
  86.      public void setNombreHabitant(int nbre)
  87.      {
  88.       nbreHabitant=nbre;
  89.       this.setCategorie();
  90.      }
  91.      
  92.      //********************************************************************
  93.      //                   METHODES DE CLASSE
  94.      //********************************************************************
  95.      //Definit la categorie de la ville
  96.      protected void setCategorie()
  97.      {
  98.       int bornesSuperieurs[]={0,1000,10000,100000,500000,1000000,5000000,10000000};
  99.       char categories[]={'?','A','B','C','D','E','F','G','H'};
  100.       int i=0;
  101.       while(i<bornesSuperieurs.length && this.nbreHabitant>=bornesSuperieurs[i])
  102.        i++;
  103.       this.categorie=categories[i];
  104.      }
  105.      
  106.      
  107.      
  108. //Retourne la description de la ville
  109.      public String decrisToi()
  110.      {
  111.       return "\t"+this.nomVille+" est une ville de "+this.nomPays+",elle comporte:"+this.nbreHabitant+this.categorie+"=>elle est donc de categorie:"+this.categorie;  
  112.      }
  113.      
  114.      //Retourne une chaîne de caracteres selon le resultat de la comparaison
  115.      public String comparer (Ville v1)
  116.      {
  117.       String str=new String();
  118.       if (v1.getNombreHabitant()>this.nbreHabitant)
  119.        str=v1.getNom()+"est une ville plus peuplée que"+this.nomVille;
  120.       else
  121.        str=this.nomVille+" est une ville plus peuplée que "+v1.getNom();
  122.       return str;
  123.      }
  124.        
  125.      }
  126. [cpp]
  127. package Mypackage1;
  128. public class Sdz1  
  129. {  
  130.     public static void main(String[] args)
  131.     {
  132.      // def d'un tableau de ville null
  133.      Ville[]tableau=new Ville[6];
  134.      
  135.      //definition d'un tableau de noms de villes et d'un tableau de nombres d'habitants
  136.      String[] tab={"Marseille","Lille","Caen","Lyon","Paris","Nantes"};
  137.      int[] tab2={123456,78456,654987,75832165,1594,213};
  138.      
  139.      //les 3 premiers éléments du tableau seront des Villes,et le reste,des Capitales
  140.      for(int i=0;i<6;i++)
  141.      {
  142.       if(i<3)
  143.       {
  144.        Ville V=new Ville(tab[i],"france",tab2[i]);
  145.        tableau[i]=V;
  146.       }
  147.       else
  148.       {
  149.        Capitale C=new Capitale(tab[i],tab2[i],"france","Sarko" );
  150.        tableau[i]=C;
  151.       }
  152.      }
  153.      //il ne nous reste plus qu'a décrire tout notre tableau
  154.      for(Ville v:tableau)
  155.      {
  156.       System.out.println(v.decrisToi()+"\n" );
  157.      }
  158.      
  159.     }
  160. }


[/cpp]

Reply

Marsh Posté le 01-02-2010 à 20:17:40   

Reply

Marsh Posté le 01-02-2010 à 20:53:30    

L'erreur du compilateur est pourtant très claire : tu n'as aucun constructeur prenant 4 arguments dans ta classe "Capitale".

Reply

Marsh Posté le 02-02-2010 à 11:53:17    

Elmoricq a écrit :

L'erreur du compilateur est pourtant très claire : tu n'as aucun constructeur prenant 4 arguments dans ta classe "Capitale".


 
j'ai ajouté constructeur initialisation dans la class capitale, pb reste toujours aide moi s'il te plaît

Code :
  1. package Mypackage1;
  2. public class Capitale extends Ville
  3. {
  4. //constructeur par defaut
  5. public Capitale()
  6. {
  7.  //ce mot clé appelle le constructeur de la classe mère
  8.  super();
  9.  this.categorie=categorie;
  10.  president="aucun";
  11. }
  12.  //constructeur d'initialisation
  13. public void Ville(String pNom,int pNbre,String pPays)
  14.     {
  15. nomVille=pNom;
  16.  nomPays=pPays;
  17.  nbreHabitant=pNbre;
  18.  categorie=this.categorie;
  19.     }
  20. //Description d'une capitale
  21. public String decrisToi()
  22. {
  23.  String str=super.decrisToi()+"\n \t==>>"+this.president+"est son president";
  24.  return str;
  25. }
  26. //return le nom du president
  27. public String getPresident()
  28. {
  29.  return president;
  30. }
  31. //definit le nom du president
  32. public void setPresident(String President()
  33. {
  34.  this.president=president;
  35. }
  36. }


Reply

Marsh Posté le 02-02-2010 à 19:47:26    

tu n'as toujours pas de constructeur Capitale(arg1, arg2 arg3, arg4)  
qui corresponde a #        Capitale C=new Capitale(tab[i],tab2[i],"france","Sarko" );

Message cité 1 fois
Message édité par breizhbugs le 02-02-2010 à 19:49:06
Reply

Marsh Posté le 03-02-2010 à 17:43:23    

breizhbugs a écrit :

tu n'as toujours pas de constructeur Capitale(arg1, arg2 arg3, arg4)  
qui corresponde a #        Capitale C=new Capitale(tab[i],tab2[i],"france","Sarko" );


 
c'est à dire il faut que j'écris les codes suivant dans la class capitale n'est ce pas?

Code :
  1. //constructeur par defaut
  2. public Capitale()
  3. {
  4.  //ce mot clé appelle le constructeur de la classe mère
  5.  super();
  6.   nomVille = "Inconnu";
  7.          nomPays = "Inconnu";
  8.          nbreHabitant=0;
  9.   this.categorie=categorie;
  10.   president="aucun";
  11. }
  12.  //constructeur d'initialisation
  13. public void Ville(String pNom,int pNbre,String pPays)
  14.     {
  15. nomVille=pNom;
  16.  nomPays=pPays;
  17.  nbreHabitant=pNbre;
  18.  categorie=this.categorie;
  19.     }


Reply

Marsh Posté le 04-02-2010 à 12:01:37    

Il te faut donc un consctructeur spécialisé :
 
public Capitale( type de tab, type de tab2, String, String )

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed