rosmord@amenemhat:~/public_html/Cours/TP/TPN04/src$ java FileFinder /home/rosmord/public_html index.html /home/rosmord/public_html/ESSAIS/HTML/index.html /home/rosmord/public_html/ESSAIS/index.html /home/rosmord/public_html/index.html /home/rosmord/public_html/sagakeeper/index.html /home/rosmord/public_html/sagakeeper/admin/index.html /home/rosmord/public_html/Cours/Projet/index.html /home/rosmord/public_html/Cours/TP/TPN01/index.html /home/rosmord/public_html/Cours/TP/TPN02/index.html /home/rosmord/public_html/Cours/TP/TPN03/index.html /home/rosmord/public_html/Cours/TP/TPN04/index.html /home/rosmord/public_html/Cours/Tomcat/index.html rosmord@amenemhat:~/public_html/Cours/TP/TPN04/src$
float nombreDEtapesEstimees= ....; int nombreEtapes= 0; while (! calculFini) { ... étape du calcul ... nombreEtapes++; System.out.println("complétion : " +nombreEtapes/ nombreDEtapesEstimees); }Le problème de ce type de code est qu'il mélange l'interface utilisateur (ici la manière dont on prévient l'utilisateur) et le calcul.
Pour résoudre cela, on passe par une interface (au sens java du terme).
Définissez une interface appelée CompletionListener
, et contenant la méthode :
// Appelé quand on est arrivé à l'étape stageNumber sur total. // Les nombre peuvent être approximatifs. void completionStage(int stageNumber, int total);
On ajoutera un champ completionListener à la classe
FileFinder. Pour calculer les diverses valeurs, on estimera le
nombre total d'étape comme étant le nombre total de fichiers à
examiner, et le numéro d'étape comme étant le nombre total de
fichiers vus. Comme au départ, on ne connaît pas le nombre total
de fichiers à examiner, on l'approximera par le nombre total de
fichiers qu'on sait devoir examiner (au départ : 1 ; ensuite,
quand on rentre dans un répertoire, on ajoute la taille du
répertoire). On appellera la méthode
completionStage()
au moment opportun.
Le programme devra tourner même si on ne fixe pas de CompletionListener.
Si vous avez le temps, après le tp, cherchez une meilleure approximation.
java FileFinder /home/rosmord/public_html index.html -larger 1000Affichera les fichiers dont la taille dépasse 1000 octets. Réfléchissez bien à la manière de passer l'option en question au chercheur de fichiers.
ArrayList l= new ArrayList(); l.add(new Etudiant("Ada", "Lovelace", "Info1A")); l.add(new Etudiant("Alan", "Turing", "Info1A")); l.remove(new Etudiant("Ada", "Lovelace", "Info1A")); // affichez le contenu de l. // rappel : taille de l = size(); ième élément : get(i)Qu'affiche-i-il ?