<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">package fr.unice.toto.bibliotheque;

public class Etagere {
  private Livre[] livres;
  private int nbLivres = 0; // nbre de livres qu'il y a dans l'étagère

  public Etagere(int nb) {
    livres = new Livre[nb];
  }

  public int getNbLivres() {
    return nbLivres;
  }

  public int getNbLivresMax() {
    return livres.length;
  }

  /**
   * Renvoie le livre placé sur l'étagère dans la position indiquée.
   * La position du 1er livre est 1 (pas 0).
   * Renvoie &lt;code&gt;null&lt;/code&gt; s'il n'y a pas de livre à cette position
   */
  public Livre getLivre(int position) {
    if (position &gt; 0 &amp;&amp; position &lt;= nbLivres) {
      return livres[position - 1];
    }
    else {
      return null;
    }
  }

  public void ajouter(Livre l) {
    if (nbLivres &lt; livres.length) {
      livres[nbLivres++] = l;
    }
    else {
      System.err.println("Etagere pleine");
    }
  }

  public Livre enlever(int position) {
    int indice = position - 1;
    if (indice &gt;= 0 &amp;&amp; indice &lt; nbLivres) {
      Livre livreEnleve = livres[indice];
      nbLivres--;
      // On tasse les livres
      for ( ; indice &lt; nbLivres; indice++) {
	livres[indice] = livres[indice + 1];
      }
      return livreEnleve;
    }
    else {
      return null;
    }
  }

  public Livre enlever(String titre, String auteur) {
    return enlever(cherche(titre, auteur));
  }

  /**
   * Renvoie la position du livre cherché sur l'étagère
   * ou 0 si le livre n'y est pas.
   * La position du 1er livre est 1 (pas 0)
   */
  public int cherche(String titre, String auteur) {
    int indice = 0;
    boolean trouve = false;
    while (! trouve &amp;&amp; indice &lt; nbLivres) {
      if (livres[indice].getTitre().equals(titre)
	  &amp;&amp; livres[indice].getAuteur().equals(auteur)) {
	return indice + 1;
      }
      else {
	indice++;
      }
    }
    return 0;
  }

  public String toString() {
    StringBuffer sb = new StringBuffer("Etagere [nbLivres=");
    sb.append(nbLivres).append(",livres=[");
    for (int i = 0; i &lt; livres.length; i++) {
      if (livres[i] != null) {
        sb.append(livres[i]);
      }
      else {
        sb.append("null");
      }
      if (i != livres.length - 1) {
        sb.append(", ");
      }
    }
    return sb.append("]]").toString();
  }

  // toString plus simple en utilisant Arrays.toString : 
//  public String toString() {
//    return "Etagere [nbLivres=" + nbLivres + ", livres=" + Arrays.toString(livres) + "]";
//  }

  public static void main(String[] args) {
    Livre l1 = new Livre("a1", "t1");
    l1.setNbPages(200);
    l1.setPrix(239.50);
    Livre l2 = new Livre("a2", "t2");
    l2.setNbPages(250);
    l2.setPrix(140);
    Livre l3 = new Livre("a3", "t3");    
    l1.setNbPages(300);
    l1.setPrix(159.50);
    Livre l4 = new Livre("a1", "t4");
    Livre l5 = new Livre("a1", "t1");
    Livre l6 = new Livre("a2", "t5");
    Etagere etagere1 = new Etagere(2);
    Etagere etagere2 = new Etagere(3);
    etagere1.ajouter(l1);
    etagere1.ajouter(l2);
    etagere1.ajouter(l3);
    etagere2.ajouter(l1);
    etagere2.ajouter(l4);
    etagere2.ajouter(l5);
    System.out.println(etagere1);
    System.out.println(etagere2);
    // Recherche et suppression
    String auteur, titre;
    if (args.length == 2) {
      auteur = args[0];
      titre = args[1];
    }
    else {
      auteur = "a1";
      titre = "t2";
    }
    int position = etagere1.cherche(titre, auteur);
    if (position != 0) {
      System.out.println("Livre d'auteur " + auteur 
			 + " et de titre " + titre + " trouvé"
			 + " en position " + position + " sur l'étagère");
      System.out.println("Vérification ; le livre est : " + "\n"
			 + etagere1.getLivre(position));
      System.out.println("L'étagère avant d'avoir enlevé ce livre : \n"
			 + etagere1);
      Livre livreEnleve = etagere1.enlever(titre, auteur);
      System.out.println("L'étagère après avoir enlevé ce livre : \n"
			 + etagere1);
      System.out.println("Pour vérification :\n"
			 + "Le livre enlevé est :\n"
			 + livreEnleve);
    }
    else {
      System.out.println("Livre d'auteur " + auteur
			 + " et de titre " + titre + " pas trouvé");
    }
  }
}
    

    
    
</pre></body></html>