Programmation Orientée Objet et Réseau en Java

TD 4


Ces exercices abordent les flots d'entrée/sortie en Java ainsi que le mécanisme de réflexion.


Exercice 1 - Écriture et lecture de textes "en clair" dans un fichier

  1. Écrire une méthode réalisant l'écriture d'un tableau de String dans un fichier texte (lisible et modifiable avec un éditeur de texte). Cette méthode accepte en argument un tableau de String et un objet de type java.io.File.
  2. Écrire une méthode permettant de récupérer dans un fichier les données enregistrées par la méthode précédente. Elle acceptera un File en argument et retournera un tableau de String.
  3. Tester ces deux fonctions avec un main qui sauvegarde dans un fichier, puis relit depuis ce fichier, les chaînes de caractères passées en argument sur la ligne de commande.

Exercice 2 - Sérialisation

Réaliser le même exercice en sauvegardant les données en binaire plutôt qu'en texte. Utiliser pour cela la sérialisation des objets offerte par java. Écrire deux méthodes (écriture et lecture) et un main de test.

Écrire dans le main de test le code permettant la sauvegarde en binaire d'une instance de la classe Point dans un fichier, puis sa relecture depuis ce fichier.


Exercice 3 - Cat

Écrire un programme dans une classe Cat ayant les mêmes effets que la commande cat sur les fichiers, c'est à dire afficher sur la sortie standard le contenu des fichiers passés en argument sur la ligne de commande, ou le contenu de l'entrée standard si aucun fichier n'est fourni en argument.


Exercice 4 - Réflexion

À partir du nom de la classe Date de l'API java.util (dont vous avez la documentation), écrire une classe avec un main de test réalisant les opérations suivantes:

  1. Récupérer un objet de la classe Class représentant la classe Date (sans clause import java.util.Date et sans utiliser explicitement la classe Date).
  2. À partir de cet objet classe, créer et afficher une nouvelle instance. Expliquer quels mécanismes permettent la création et l'affichage.
  3. Par réflexion, récupérer un objet constructeur de cette classe (java.lang.reflect.Constructor) acceptant un seul argument de type long. Utiliser ce constructeur pour créer une instance de classe Date avec la valeur 0 de type long. Faire afficher cette instance.
  4. Avec ce même constructeur, créer deux instances: d1 correspondant à la valeur 100000 et d2 à la valeur 100001. Pour tester si la date représentée par d1 est antérieure à celle de d2 dans ce format, récupérer par réflexion un objet méthode (java.lang.reflect.Method) correspondant à la méthode before() qui accepte un seul argument de type Date. Invoquer cette méthode avec d1 comme cible et d2 comme argument.


Exercice 5 - Classe Class

Il existe différentes façons d'obtenir une instance de la classe Class, en fonction de la chose dont on dispose et dont on veut connaître la classe. Écrire un programme qui affiche la représentation sous forme de String des objets de classe Class correspondant:


Nicolas.Bedon[at]univ-mlv.fr - Etienne.Duris[at]univ-mlv.fr - Rémi.Forax[at]univ-mlv.fr - © Université de Marne-La-Vallée - Octobre 2001