Aide Tableau Java

Aide Tableau Java - Java - Programmation

Marsh Posté le 12-02-2010 à 05:01:17    

Bonjour,
Merci de me dire si ce code est correct ou pas.et comment l'optimiser.
 
Quelques détails sur le code :
 
-J'ai déjà créé les class suivantes ocuments,Livre,Manuels,Romans,Revues,Dictionnaire.(avec tout ce qu'il faut).
-je veux créer une class Biblio(qui gère un tableau de documents) avec les méthodes suivantes :
- Constructeur Tableau.
- Afficher les documents du tableau.
- Afficher les auteurs(sachant que Auteur est un attribut de la class livre).
- Ajout d'un document.
 -Permet de renvoyer le i eme document.
- Supprimer un document référencé par doc et renvoie true ,(false en cas d’échec).
 
 
Merci pour vos réponses.
 
CODE JAVA:
 

Code :
  1. import java.util.Scanner;
  2.  
  3.  
  4. public class Biblio {
  5.     
  6.     Documents tab[];
  7.     
  8.  
  9.     public Biblio(int capacite)
  10. {
  11.     tab = new Documents[capacite];
  12. }
  13.  
  14.  
  15.     
  16.     public void afficherDocument()
  17. {
  18.     
  19.     for (int i = 0; i< tab.length;i++)
  20.     {
  21.         System.out.println(tab[i]);
  22.     }
  23. }
  24.  
  25.  
  26. public void afficherAuteur()
  27. {
  28.     int capacite=tab.length;
  29.     tab =new Documents[capacite];
  30.     
  31.     for(int i =0 ; i< tab.length; i++)
  32.     {
  33.         System.out.println(tab[i].getNum_enregistrement());
  34.         if (tab[i] instanceof Livre)
  35.         
  36.         System.out.println(" "+((Livre)tab[i]).getAuteur());    
  37.         
  38.         else
  39.         
  40.         System.out.println(" " );    
  41.             
  42.     }
  43. }
  44.  
  45.  
  46. public boolean ajouter(Documents doc)
  47. {
  48. for(int i=0; i < tab.length;i++)
  49. {
  50.     if(tab[i].numEnregistrement==(doc.numEnregistrement))
  51.     
  52.         
  53.         return true;    
  54.     
  55.     else  tab[i]=doc;    
  56.            
  57. }
  58. return false;      
  59.     
  60. }
  61.  
  62.  
  63. public Documents document(int i)
  64. {
  65.     Scanner sc = new Scanner(System.in);
  66.     int var=sc.nextInt();
  67.     
  68.     for(int j=0; j < tab.length;j++)
  69.     {
  70.         if(tab[j].numEnregistrement==var)
  71.             return document(i);
  72.     }
  73.     return null;            
  74. }
  75.  
  76.  
  77. public boolean supprimer(Documents doc)
  78. {
  79.     for(int i=0; i < tab.length;i++)
  80.     {
  81.         if(tab[i].numEnregistrement==(doc.numEnregistrement))
  82.         
  83.             return true;    
  84.         
  85.         for(int j=i;j<tab.length;j++)
  86.             tab[j]=tab[j-1];
  87.                 
  88.     }
  89.            return false;          
  90.     
  91. }
  92.  
  93. }



Message édité par gilou le 12-02-2010 à 09:51:47
Reply

Marsh Posté le 12-02-2010 à 05:01:17   

Reply

Marsh Posté le 13-02-2010 à 02:34:21    

On n'a pas accès à la classe Document donc on ne sait pas ce qu'elle offre ni ce qu'est le champ numEnregistrement.
 
Hélas toutes les méthodes que je vois là sont fausses, il n'y a que le constructeur qui est correct et encore, il manque une initialisation: le nombre de documents actuellement insérés dans la bibliothèque doit être stocké dans la classe et initialisé à 0.
 
Pour supprimer un document passé en paramètre, il faut juste que tu parcoures le tableau de Document de 0 au nombre de documents actuellement insérés, en comparant à chaque fois le document en cours à celui passé en paramètre et en t'arrêtant dès que tu le trouves. Pour savoir comment comparer 2 objets Document, il faut connaître la définition de la classe Document. Si par exemple la méthode equals() est implémentée, il suffit de l'appeler. Sinon il faut comparer un champ faisant office de "clé primaire". Dans le cas particulier où un objet Document est toujours représenté par la même instance dans le système (plutôt rare), une simple comparaison d'instances (==) suffit.

Reply

Marsh Posté le 15-02-2010 à 14:49:47    

idées rapides apres lecture rapide :
 
public class Biblio extends ArrayList{
}
 
je te suggere de regarder ArrayList (http://java.sun.com/j2se/1.4.2/docs/api/java/util/ArrayList.html) pour comprendre pourquoi
 
Ensuite on connait pas ta classe Document, mais peut etre que  
 
interface Document{  
    public String getAuthor();    
}
 
et  
 
public class Livre implements Document{
    private String author;
    public String getAuthor(){
        return this.author;
    }
}
 
ca pourrait t'aider.
 
[edit]
attention ca marchera pas forcement de suite. mais le principe c'est qu'en java ca sert a rien de reinventer la roue, le mieux c'est toujours de lire la doc.
d'ailleurs l'idéal ca serait que tu regardes du coté des "generics" et Collection<> ou List<>
 
[/edit]


Message édité par pop-pan le 15-02-2010 à 14:56:45

---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
Reply

Sujets relatifs:

Leave a Replay

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