News Ticker

Menu

Exercice JAVA





On veut modéliser la gestion d'une bibliothèque : on définira un certain nombre de classes : MainOuvrageBiblioListBibliothequePeriodiqueCDLivre. Les livres auront comme propriétés : auteur, titre, éditeur ; les périodiques : nom, numéro, périodicité ; les CDs : titre, auteur. De plus tous les ouvrages auront une date d'emprunt (potentiellement nulle), une cote (le numéro par ordre de création). On implémentera également sur chaque objet une méthode toString() renvoyant toutes les informations sur l'ouvrage sous forme d'une chaîne de caractères.
La classe BiblioList permettra de stocker dans une structure les livres (ajout et suppression, la suppression prenant en argument la cote de l'ouvrage). Elle aura également une méthode toString() affichant le nombres d'ouvrages, puis chaque ouvrage successivement. La classe Bibliotheque sera simplement une version abstraite déclarant les mêmes méthodes que BiblioList mais sans les implémenter. BiblioList héritera de Bibliotheque.
La classe Main ne contiendra que la méthode main et testera la bibliothèque en y insérant et supprimant quelques ouvrages, puis en affichant le contenu de la bibliothèque.
  1. Représentez les différentes classes dans un graphe d'héritage. On mettra en évidence pour chaque classe les méthodes et les champs qu'elle définit, redéfinit ou hérite. On souhaite que tous les champs soient déclarés privés et que l'on puisse y accéder de l'extérieur que par des méthodes.
  2. Implémentez les classes ci-dessus. Pour la classe BiblioList on utilisera
Les méthodes boolean add(Object o) qui permet d'ajouter un objet dans la liste, boolean remove(Object o) Object get(int index) et int size(), implémentez la classe BiblioList.

Remarque :Vous devrez ajouter au début du fichier BiblioList.java la commande import java.util.* ;


Correction 




 
// Ouvrage.java
 
public abstract class Ouvrage {
    private static int nombre ;
    private int cote ;
    String dateEmprunt ;
 
    public int cote() {
  return cote ;
    }
    public String toString() {
  String res = "[" + cote + "] ";
  if(dateEmprunt != null)
      return res + "emprunte le " + dateEmprunt ;
  else
      return res + "disponible" ;
    }
    public String dateEmprunt() {
  return dateEmprunt ;
    }
    
    public void setDateEmprunt(String dateEmprunt) {
  this.dateEmprunt = dateEmprunt ;
    }
    
    public static int getNombre() {
  return nombre ;
    }
 
    public Ouvrage() {
  cote = nombre++ ;
    }
}
// Livre.java
 
public class Livre extends Ouvrage {
    private String titre ;
    private String auteur ;
    private String editeur ;
 
    public void setTitre(String titre) {
  this.titre = titre ;
    }
 
    public String titre() {
  return titre ;
    }
 
    public void setAuteur(String auteur) {
  this.auteur = auteur ;
    }
 
    public String auteur() {
  return auteur ;
    }
 
    public void setEditeur(String editeur) {
  this.editeur = editeur ;
    }
    public String editeur() {
  return editeur ;
    }
 
    public String toString() {
  return super.toString() + " " + titre + " " + auteur + " " + editeur ;
    }
 
    public Livre(String titre, String auteur, String editeur) {
  this.titre = titre ;
  this.auteur = auteur ;
  this.editeur = editeur ;
    }
}
 
// Biblio.java
public abstract class Biblio {
    public abstract void add(Ouvrage o) ;
    public abstract void remove(int cote) ;
    public abstract String toString() ;
    public abstract int number() ;
}
// BiblioList.java
import java.util.* ;
 
public class BiblioList extends Biblio {
    List l = new LinkedList() ;
    public void add(Ouvrage o) {
  l.add(o) ;
    }
 
    public void remove(int cote) {
  for(int i=0 ; i<l.size() ; i++) {
      Ouvrage o = (Ouvrage)l.get(i) ;
      if(o.cote() == cote)
    l.remove(o) ;
  }
    }
 
    public String toString() {
  String buf = "" ;
  for(int i=0 ; i<l.size() ; i++) {
      buf = buf + "\n" + l.get(i).toString() ;
  }
  return buf ;
    }
    
    public int number() {
  return l.size() ;
    }
}
// Main.java
 
public class Main {
    public static void main(String[] args) {
  Ouvrage o1, o2, o3, o4 ;
  o1 = new Livre("La petite fille au tambour", "John Le Carre", "Seuil") ;
  o2 = new Livre("Pour qui sonne le glas", "Ernest Hemingway", "J'ai Lu") ;
  o3 = new Livre("Guide du routard galactique", "Douglas Adams", "Denoel") ;
  o4 = new Livre("En attendant le vote des betes sauvages","Amadou Kourouma","Seuil") ;
  
  Biblio b = new BiblioList() ;
  b.add(o1) ;
  b.add(o2) ;
  b.add(o3) ;
  b.add(o4) ;
  
  System.out.println(b.toString()) ;
  o2.setDateEmprunt("31/10/2001") ;
  b.remove(o1.cote()) ; 
  b.remove(o3.cote()) ; 
  System.out.println(b.toString()) ;
    }
    
}

Share This:

  • To add an Emoticons Show Icons
  • To add code Use [pre]code here[/pre]
  • To add an Image Use [img]IMAGE-URL-HERE[/img]
  • To add Youtube video just paste a video link like http://www.youtube.com/watch?v=0x_gnfpL3RM