TP de révision

Page Home (contact) Retour TPs

Support de cours Support de cours


Collections et itérateurs, interfaces, tris

Voici une classe Employe.

  1. Écrivez une classe Entreprise qui contient une liste d'employés ; la classe contient une seule propriété nom. Écrivez une méthode add pour ajouter un employé à une entreprise. Rendez la classe Entreprise Iterable pour parcourir tous ses employés. Écrivez une classe TestEntreprise dont la méthode main crée une entreprise, ajoute 3 employés et affiche les noms de ces 3 employés avec une boucle "for-each" sur la classe Entreprise : "for (Employe employe : entreprise) ...".
  2. Toujours dans la méthode main, faites afficher les noms des employés de l'entreprises, par ordre alphabétique de leur nom. Pour cela, vous modifierez la classe Employe pour qu'elle implémente l'interface Comparable. Vous donnerez l'ordre alphabétique de leur nom comme ordre "naturel" des employés. Dans la méthode main vous copierez tous les employés (pas les noms des employés) dans une liste que vous trierez (vous utiliserez la classe Collections).
  3. Faites afficher les noms et salaires des employés de l'entreprise, classés par salaire décroissant, puis par salaire croissant. Pour cela,
    1. créez une classe qui implémente l'interface Comparator pour comparer les employés par leur salaire,
    2. dans la méthode main, ajoutez tous les employés dans une liste des employés de l'entreprise et triez la liste avec ce comparateur.

Correction :

Question 1
Question 2
Question 3


Page Web et expressions régulières

Le but de cet exercice est de faire afficher tous les titres d'une page Web (les contenus des balises <h1>, <h2>,...).

Pour cela vous allez utiliser les expressions régulières.

  1. Écrivez une classe PageWeb qui représente une page HTML identifiée par un URL. Cette classe contiendra
  2. Ajoutez à la classe PageWeb une méthode List<String> titres() qui renvoie une liste de tous les titres de la page (contenus des balises <h1>, <h2>,...). Pour tester, écrivez une classe TestPageWeb dont la méthode main affiche ces titres dans une boucle for-each. L'expression régulière devra permettre de repérer les balises qui contiennent des espaces non significatifs telles que <h1 > ou les balises en majuscules telles que <H2>.
    Pour la page HTML locale (et pour la page Web distante donnée ci-dessus) il devra s'afficher
    Titre 1.1
    Titre 1.2
    Titre 2.1
    Titre 2.2
    Titre 2.3

Correction :

PageWeb.java
TestPageWeb.java


Sérialisation

Sérialisez sur le disque une table de hachage qui contient des objets. Avec une autre classe relisez la table de hachage. Remarquez que les objets de la table de hachage sont créés automatiquement en mémoire avec la table de hachage (évidemment la classe des objets doit être dans le classpath de cette dernière classe).

Correction :

Classes


Pour ceux qui ont déjà fini :

Allez étudier la sérialisation dans le support de cours indiqué en haut de cette page, dans le tutoriel d'Oracle ou sur un des nombreux sites qui la décrive (par exemple http://www.jmdoudoux.fr/java/dej/chap020.htm). La sérialisation permet de sauvegarder un objet entier très simplement pour pouvoir le récupérer ensuite. Elle est très utile et elle est utilisée en particulier par Java pour les appels de méthode à distance (vers un objet qui se trouve sur un autre ordinateur) pour passer les valeurs des paramètres et la valeur de retour des méthodes.


Retour TPs