Devoir n°1 de i-Java: Listes | ||
Sujet du devoir
rendu par:
|
Devoir de mai ...
Devoir à rendre sous la même forme que cet énoncé :
c'est-à-dire une page html avec vos noms et prénoms,
les liens sur les sources demandés à chaque
question, avec les applettes en ligne, et le lien sur la documentation
générée par javadoc.
Pour toutes ces questions la documentation générée par
l'utilitaire javadoc peut être obtenue en utilisant cette commande :
1) Les classes de gestion d'une liste d'"Object" respectent cette interface : /** ...*/ public interface ListeSpec{ /** à documenter */ public void ajouterElement(Object o); public void retirerElement(Object o) throws ElementIntrouvableException; public boolean estVide(); public String toString(); } Avec la classe ElementIntrouvableException suivante : public class ElementIntrouvableException extends Exception{ private Object o; public ElementIntrouvableException(Object o){this.o=o;} public String toString(){ return o.toString();} } Proposer une première implémentation de cette interface en utilisant la classe java.util.Vector. Cette classe appelée "Liste" est composée d'une instance de la classe Vector soit l'extrait à compléter ci-dessous : public class Liste implements ListeSpec{ private java.util.Vector table = new java.util.Vector(); ... } 2) Proposer une deuxième implémentation en utilisant cette fois la classe java.util.Hashtable, soit l'extrait à compléter ci-dessous :
3) Compléter cette classe de test TestListe.java afin de "valider" vos deux implémentations d'une liste, vous pouvez ajouter à cette classe la méthode "main" et exécuter cette application ou bien créer une nouvelle classe en engendrant des instances de cette classe. public class TestListe{ private ListeSpec liste; public TestListe(ListeSpec liste){this.liste = liste;} public void executerUnTest(){ java.util.Random rand = new java.util.Random(); System.out.println(" test de " + liste.getClass()); for ( int i = 0; i< 10 ; i++){ liste.ajouterElement(new Integer(rand.nextInt() % 5)); } System.out.println("liste apres ajout : " + liste); for ( int i = 0; i< 10 ; i++){ try{ liste.retirerElement(new Integer(rand.nextInt() % 5)); }catch(ElementIntrouvableException e){ System.out.println("ElementIntrouvable : " + e); } } System.out.println("liste apres retrait : " + liste); } } 4) Compléter la classe IHMTPListe ci-dessous par la prise en compte de toutes les exceptions susceptibles d'être levées et proposer la classe AppletteTPListe qui utilise cette IHM (perfectible!). Votre classe doit tester les deux implémentations de l'interface ListeSpec (les classes Liste et ListeBis) comme le suggère cette Applette.
Une IHM de test des 2 listes import java.awt.Button; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.Label; import java.awt.Panel; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class IHMTPListe extends Panel implements ActionListener{ private Label afficheur = new Label(); private TextField saisie = new TextField(); private Panel panelBoutons = new Panel(); private Button boutonAjouter = new Button("ajouter"); private Button boutonRetirer = new Button("retirer"); private ListeSpec liste; private String nomDeLaClasse; public IHMTPListe(ListeSpec liste){ this.liste = liste; add(afficheur);add(saisie); panelBoutons.setLayout(new FlowLayout(FlowLayout.LEFT)); panelBoutons.add(boutonAjouter);panelBoutons.add(boutonRetirer); add(panelBoutons); boutonAjouter.addActionListener(this); boutonRetirer.addActionListener(this); saisie.addActionListener(this); nomDeLaClasse = liste.getClass().getName(); afficheur.setText(nomDeLaClasse); } public void actionPerformed(ActionEvent ae){ try{ if (ae.getSource() == boutonAjouter || ae.getSource() == saisie) liste.ajouterElement(new Integer(Integer.parseInt(saisie.getText()))); else if (ae.getSource() == boutonRetirer) liste.retirerElement(new Integer(Integer.parseInt(saisie.getText()))); afficheur.setText(nomDeLaClasse + ":" + liste.toString()); }catch(ElementIntrouvableException e){ afficheur.setText("ElementIntrouvable : " + e); } } } |