Sie sind auf Seite 1von 6

public class Document {

protected int numero;


protected String titre;
public Document() {}
public Document(int numero, String titre) {
this.numero = numero;
this.titre = titre;
}
// Gettes & Setters pour chaque attribut
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("Numero d'enregistrement : ");
sb.append(numero);
sb.append(",");
sb.append("Titre : ");
sb.append(titre);
return sb.toString();
}
}
public class Livre extends Document {
protected String auteur;
protected int nbrePages;
public Livre() {
}
public Livre(int numero, String titre, String auteur, int nbrePages) {
super(numero, titre);
this.auteur = auteur;
this.nbrePages = nbrePages;
}
public Livre(String auteur, int nbrePages) {
this(0, null, auteur, nbrePages);
}
// Setters & Getters
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append(super.toString());
sb.append(",");
sb.append("Auteur : ");
sb.append(auteur);
sb.append(",");
sb.append("Nombre de pages: ");
sb.append(nbrePages);
return sb.toString();
}
}
public class Roman extends Livre {
public static final int PRIX_GONCOURT = 1000;
public static final int PRIX_MEDICIS
= 2000;
public static final int PRIX_INTERALLIE = 3000;

protected int prix;


public Roman() {
}
public Roman(int numero, String titre, String auteur, int nbrePages, int pri
x) {
super(numero, titre, auteur, nbrePages);
switch (prix) {
case PRIX_GONCOURT:
case PRIX_MEDICIS:
case PRIX_INTERALLIE:
this.prix = prix;
break;
default:
throw new IllegalArgumentException("Le prix est invalide
!!!");
}
}
// Setters & Getters
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append(super.toString());
sb.append(",");
sb.append("Prix : ");
sb.append(prix);
return sb.toString();
}
}
// Je te laisse terminer les reste.
A premier vue Revue er dictionnaires sont des sous-classes de Livre.
Pour le cas du prix des romans: pour s'assurer qu'on a fournit le bon prix:
1. Avec Java 1.5 ou plus, tu peux utiliser les numrations.
2. Dfinir les diffrents valeurs possibles en tantque constante (public static fina
l int PRIX_ = ...;)
Tester sur le prix, si ce n'est pas parmi les constantes cites alors il faut
dclencher une exception.
(Cette exception peut tre un IllegalArgumentException qui est une sous-classe de
RuntimeException ce qui signifie qu'il possible de ne pas la traiter avec un blo
c try/catch ce qui peu causer le crash du programme, ou bien
dfinir une exception personnalise (ce qui est encourag):
public class PrixInavalidException extends Exception {
public PrixInavalidException() {}
public PrixInavalidException(String message) {
super(message);
}
}
Mais dans ce cas tu dois traiter cette exception avec un bloc try/catch, par exe
mple:
try {
Roman roman = new Roman (...);

} catch (PrixInvalidException e) {
// ...
}

public class Bibliotheque {


private Vector documents = null;
private int capacite;
private int total = 0;
public Bibliotheques(int capacite) {
this.capacite = capacite;
documents = new Vector(capacite);
}
public afficherDocuments() {
if (documents.isEmpty()) {
System.out.println("La bibliotheque est vide.");
} else {
System.out.println("Les documents: ");
for (Enumeration e = documents.elements(); e.hasMoreElements();)
{
Document doc = (Document)e.nextElement();
// Vu qu'on a redfinit la mthode toString() on va obtenu
// L'affichage de tous les attributs
System.out.println(doc);
}
}

}
// Version 1
// Pour que cette mthode fournit les rsultats attendus
// Il faut redfinir la mthode equals() dans la classe Document.
// Ou bien il faut faire le test chaque fois, ce qui est un peu pnible.
public boolean ajouterDocument(Document doc) {
if (doc != null) {
if ((++total) > capacite) {
System.out.println("Capacite maximale [" + capacite + "] at
teinte ...");
return false;
}
if (!documents.contains(doc)) {
documents.addElement(doc);
return true;
}
return false;
}
return false;
}
// Version 2
// Pour que cette mthode fournit les rsultats attendus
// Il faut redfinir la mthode equals() dans la classe Document.
// Ou bien il faut faire le test chaque fois, ce qui est un peu pnible.
public boolean ajouterDocument(Document doc) {
if (doc != null) {
if ((++total) > capacite) {
System.out.println("Capacite maximale [" + capacite + "] at
teinte ...");
return false;
}
boolean existe;
for(Enumeration e = documents.elements(); e.hasMoreElements();) {
Document d = (Document)e.nextElement();
existe = (d.getTitre().equals(doc.getTitre()) &&
(d.getNumero() == doc.getNu
mero()));
if (existe) {
break;
}
}
if (!existe) {
documents.addElement(doc);
}
return !existe;
}

return false;
}
}

class Bibliotheque {
private Vector bib=null;
private int capacite;
private int nombre;
public Bibliotheque(int capacite){
bib=new Vector(capacite);
this.capacite=capacite;
this.nombre=0;}
public void vider(){
bib.clear();
}
public boolean ajouter(Document doc) {
if ( (nombre<capacite) || (doc!=null) || (!bib.contains(doc)) ) {
bib.addElement(doc);
nombre++;
return true;}
else return false;}
public boolean supprimer(Document doc){
if ((bib.contains(doc)) || (doc!=null)) {
bib.removeElement(doc);
nombre--;
return true;}
else return false;
}
public Document document(int i) {
Document dor;
dor=(Document)(bib.elementAt(i));
return dor;}
public void afficherAuteurs(){
for (int i=0; i<nombre; i++)

if ( bib.elementAt(i) instanceof Livre )


System.out.println (((Livre) bib.elementAt(i)).getAuteur());}
public void afficherDocuments(){
System.out.println ("\nVector :");
if(bib.isEmpty()) System.out.println ("c'est vide la");
else {
ListIterator b=bib.listIterator();
while(b.hasNext()) System.out.println (b.next());}
}}

Das könnte Ihnen auch gefallen