[t]40ex
UniversitéPierre & Marie Curie
U.F.R d'infomatique
[t]45ex
Maîtrise -- 2000-01
Programmation Objet et Distribution



Tavaux dirigés n° 10




Exercice I Un serveur d'objets.

On veut réaliser un petit serveur de calcul pour des expressions arithmétiques : le client envoie au serveur une expression ; le serveur lui applique la méthode d'évaluation et renvoie le résultat. On utilisera la sérialisation pour transmettre les données.


Question (I.1) Définir une hierarchie de classe représentant les expressions arithmétiques. On demande que les expressions puissent être persistantes.


Question (I.2) Définir les classes ArithService et Arithd. Cette dernière utilise la classe Serveur de la feuille de TD précédente.


Question (I.3) Définir le client : classe Arithc. Pour simplifier, le client demandera l'évaluation d'une seule expression.




Exercice II Des listes d'association distantes (RMI).

Pour créer un objet dont les méthodes peuvent être invoquées àdistance, il faut :
  1. définir l'interface de l'objet comme extension de Remote ;
  2. définir l'implantation de cette interface comme extension de UnicastRemoteObject ;
  3. compiler pour obtenir les .class ;
  4. créer les *_Stub.class et *_Skel.class en utilisant la commande rmic *.
Pour le serveur, il faut :
  1. écrire l'application qui enregistre les objets (méthode bind ou rebind ;
  2. lancer le gestionnaire du répertoire d'objets avec la commande rmiregistry ;
  3. compiler puis lancer l'application.
Les classes définissant l'objet distant doivent être connues sur la machine oùtourne le serveur.

Pour le client, il faut :
  1. définir l'application qui accède aux objets par la méthode lookup ;
  2. la compiler puis la lancer.

Question (II.1) Écrire l'interface IRemoteAlist qui étend Remote et qui fournit trois méthodes pour les listes d'association : empty, add, et get.


Question (II.2) Définir la classe RemoteAlist, héritière de UnicastRemoteObject (objets distants) qui implante IRemoteAlist.

On utilisera la classe Hashtable et ses méthodes :
Question (II.3) Écrire une classe de test RAlistUser permettant la manipulation d'une liste d'association distante. Tous les arguments seront pris sur la ligne de commande.

Par exemple : java RAlistUser machine.distante nnnn add key value rajoute le couple (key,value) àla liste située sur la machine machine.distante via le port nnnn.


Question (II.4) Écrire la classe AlistRegister permettant d'enregistrer une liste d'association. La nom de la machine et le numéro de port sont lus sur la ligne de commande.




Exercice III Pour en faire plus.


Question (III.1) Définir une nouvelle classe Arith qui encapsule une liste d'association distante (REmoteAlist). Cette liste d'association servira d'environnememnt d'évaluation.


Question (III.2) Redéfinir une hierarchie de classes permettant la représentation d'expressions contenant des variables. La valeur d'une variable est celle donnée par la liste d'association.




This document was translated from LATEX by HEVEA.