Exercice Gestion Bibliothéque en Java

Exercice : Gestion d’une bibliothèque JAVA


  Pour la gestion d’une bibliothèque on nous demande d’écrire une application traitant des documents de nature diverse : des livres, qui peuvent être des romans ou des manuels, des revues, des dictionnaires, etc. Tous les documents ont un numéro d’enregistrement (un entier) et un titre (une chaîne de caractères). Les livres ont, en plus, un auteur (une chaîne) et un nombre de pages (un entier). Les romans ont éventuellement un prix littéraire (un entier conventionnel, parmi : GONCOURT, MEDICIS, INTERALLIE, etc.), tandis que les manuels ont un niveau scolaire (un entier). Les revues ont un mois et une année (des entiers) et les dictionnaires ont une langue (une chaîne de caractères appartenant à un ensemble prédéfini, comme "anglais", "allemand", "espagnol", etc.). Tous les divers objets en question ici (livres, revues, dictionnaires, romans, etc.) doivent pouvoir être manipulées en tant que documents. Voici le diagramme de classes :
    







A)  Définissez les classes Document, Livre, Roman, Manuel, Revue et Dictionnaire, entre lesquelles existeront les liens d’héritage que la description précédente suggère. Dans chacune de ces classes définissez 


  •  le constructeur qui prend autant arguments qu’il y a de variables d’instance et qui se limite à initialiser ces dernières avec les valeurs des arguments, 
  •  une méthode public String toString() produisant une description sous forme de chaîne de caractères des objets, 


  •  si vous avez déclaré private les variables d’instance (c’est conseillé, sauf indication contraire ) définissez également des « accesseurs » publics get... permettant de consulter les valeurs de ces variables. Écrivez une classe exécutable TestDocuments qui crée et affiche plusieurs documents de types différents.



 B)  Une bibliothèque sera représentée par un tableau de.  Définissez une classe Bibliotheque, avec un tel tableau pour variable d’instance et les méthodes : 


  •  Bibliotheque(int capacité) - constructeur qui crée une bibliothèque ayant la capacité (nombre maximum de documents) indiquée, 



  •  void afficherDocuments() - affiche tous les ouvrages de la bibliothèque, 



  •  Document document(int i) - renvoie le ième document, 



  •  boolean ajouter(Document doc) - ajoute le document indiqué et renvoie true (false en cas d’échec), 



  •  boolean supprimer(Document doc) - supprime le document indiqué et renvoie true (false en cas d’échec) 




  •  void afficherAuteurs() - affiche la liste des auteurs de tous les ouvrages qui ont un auteur (au besoin, utilisez l’opérateur instanceof).


 C)  Définissez, avec un effort minimal, une classe Livrotheque dont les instances ont les mêmes   fonctionnalités que les Bibliotheques mais sont entièrement constituées de livres.           Comment optimiser dans la classe Livrotheque la méthode afficherAuteurs ?  



Correction :

ð     Classe Bibliotheque.java :
package document;
public class Bibliotheque {
    public int Capacité;
    public static int Nb=0;
    public Document[] doc;
    public Bibliotheque(int Capacité) {
        this.Capacité = Capacité;
        doc=new Document[5];
        Nb=0;
    }
    public void afficherDoc(){
        for(Document D:doc)                                                    
            System.out.println(D);
    }
    public Document document(int i){
        return (doc[i]) ;
    }

    public boolean ajouter(Document Doc){
        if(Nb<doc.length)
           this.doc[Nb++]=Doc;
        return true;
    }
    public boolean supprimer(Document Doc){
        for(int i=0;i<doc.length;i++){
            if(doc[i].NumEnreg==(Doc.NumEnreg))
              
                    doc[i]=doc[i+1];
        }
        Nb--;
            return true;     }
    public void afficherAuteur(){
        for(int i=0;i<doc.length;i++){
            if(doc[i] instanceof Livre)
                System.out.println((Livre) doc[i]) ;
    }
    }
}


ð     Classe Dictionnaire.java :
package document;
public class Dictionnaire extends Document{
    private String Langue;
    public Dictionnaire(String Langue, int NumEnreg, String titre) {
        super(NumEnreg, titre);
        this.Langue = Langue;
    }
   public String getLangue() {
        return Langue;
    }
    public void setLangue(String Langue) {
        this.Langue = Langue;
    }
    public String toString() {
        return super.toString()+"Dictionnaire{" + "Langue=" + Langue + '}';
    }   
}
ð     Classe Document.java :
package document;
public class Document {
     protected int NumEnreg;
     protected String titre;
    public Document(int NumEnreg, String titre) {
        this.NumEnreg = NumEnreg;
        this.titre = titre;
    }
    public String toString() {
        return "Document{" + "NumEnreg=" + NumEnreg + ", titre=" + titre + '}';
    }
}
ð     Classe Livre.java :
package document;
public class Livre extends Document {
    protected String Auteur;
   protected int NbrPages;
    public String getAuteur() {
        return Auteur;
    }
    public void setAuteur(String Auteur) {
        this.Auteur = Auteur;
    }
    public int getNbrPages() {
        return NbrPages;
    }
    public void setNbrPages(int NbrPages) {
        this.NbrPages = NbrPages;
    }

    public Livre(int Num,String T,String Auteur, int NbrPages) {
        super(Num,T);
        this.Auteur = Auteur;
        this.NbrPages = NbrPages;
    }
    public String toString() {
        return super.toString()+"Livre{" + "Auteur=" + Auteur + ", NbrPages=" + NbrPages + '}';
    }   

}


ð     Classe Manuel.java :
package document;
public class Manuel extends Livre{
    private String neveau;
 public String getNeveau() {
        return neveau;
    }
  public void setNeveau(String neveau) {
        this.neveau = neveau;
    }
  public String toString() {
        return super.toString()+"Manuel{" + "neveau=" + neveau + '}';
    }
    public Manuel(String neveau, int Num, String T, String Auteur, int NbrPages) {
        super(Num, T, Auteur, NbrPages);
        this.neveau = neveau;
    }
}





ð     Classe Revue.java :
package document;
public class Revue extends Document{
    private int mois;
    private int annee;
 public Revue(int mois, int annee, int NumEnreg, String titre) {
        super(NumEnreg, titre);
        this.mois = mois;
        this.annee = annee;
    }
   public String toString() {
        return super.toString()+"Revue{" + "mois=" + mois + ", annee=" + annee + '}';
   }   
}
ð     Classe Roman.java :
package document;
public class Roman extends Livre{
    private double prixLitt;
 public Roman(double prixLitt, int Num, String T, String Auteur, int NbrPages) {
        super(Num, T, Auteur, NbrPages);
        this.prixLitt = prixLitt;
    }
    public double getPrixLitt() {
        return prixLitt;
    }
    public void setPrixLitt(double prixLitt) {
        this.prixLitt = prixLitt;
    }
    public String toString() {
        return super.toString()+"Roman{" + "prixLitt=" + prixLitt + '}'; }

    }



ð     Classe TestBibliotheque.java :
package document;
public class TestBibliotheque {
  public static void main(String[] args){
     Bibliotheque bib=new Bibliotheque(10);
     Document d1=new Document(12,"Base_de_donnee");
     bib.ajouter(d1);
     Document d2=new Document(1,"JAVA");
     bib.ajouter(d2);
      bib.ajouter(new Document(1,"MATHS"));
      bib.ajouter(new Document(2,"FRANCAIS"));
      bib.ajouter(new Document(62,"ENGLISH"));
      bib.ajouter(new Document(22,"ARABE"));
      bib.afficherDoc();
      System.out.println();
      System.out.println(bib.document(2));
      System.out.println(bib.supprimer(d2));
      System.out.println();
      bib.afficherDoc();
  }  

}








































Commentaires

  1. vous n'avez pas respecter le concept souhaité de cet exercice , PrixLitt (il doit être un string comme Nobele ,GONCOURT, MEDICIS, INTERALLIE ce n'est pas un monnaie) , aussi PrixLitt et Langue ce sont des lists sous forma d'un enum ou dictionnaire déja prédéfini, autre chose j'ai pas trouvé la classe TestDocuments . bonne chance

    RépondreSupprimer

Enregistrer un commentaire