POD 98-99 -- TP2
Au R(e)MI's bar
RMI, graphisme, interaction
---°---
Introduction
Au R(e)MI's bar on trouve plusieurs boissons. Pour chacune d'elle un
stock de verres est défini. Chaque verre possède trois états :
- propre et plein
- pris par un client
- rendu par un client1
, sale et (plus
ou moins) vide
Deux catégories d'individus manipule les verres
- un barman qui récupère, lave et remplit les verres rendus
- des clients qui prennent, boivent et rendent les verres
Les différents stocks de verres seront des objets distants (RMI)
partagés par le barman et les clients.
1 Le stock
Le stock de verres des différentes boissons est accessible via un
serveur RMI. Pour chaque catégorie de boisson, nous proposons
l'interface suivante (fichier :
GlassRMI.java
) :
import java.rmi.*;
public interface GlassRMI extends Remote
{
boolean isAvailable() throws RemoteException;
void order() throws RemoteException;
void back() throws RemoteException;
void refill() throws RemoteException;
}
La sémantique attendue des méthodes est la suivante :
- isAvailable
- retourne true s'il existe un verre propre
et plein
- order
- diminue de 1 le nombre de verres propres et pleins ;
- back
- augmente de 1 le nombre de verres sale et vides ;
- refill
- diminue de 1 le nombre de verres sale et vides et
augmente de 1 le nombre de verres propres et pleins.
1.1 Question
Donnez l'implantation de la classe
public class Glasses
extends UnicastRemoteObject // Objets distants
implements GlassRMI // implantant des methodes specifiques
A chaque opération sur les verres, un état du stock devra être
donné.
2 Le barman
Le barman est en charge de constituer un stock initial puis de passer
son temps àrécupérer, laver et remplir les verres rendus.
2.1 Question
Donnez l'implantation de la classe Barman. Les opérations du barman prennent un certain temps :
prévoir des temporisations.
3 Un client simple
Nous vous proposons de réaliser un premier client graphique et
interactif se présentant sous la forme suivante :
La zone horizontale supérieure est réservée àl'affichage de
messages.
La zone centrale est destinée àl'affichage d'une image
reflétant l'état du client : attente d'un verre, obtention d'un
verre, consommation d'un verre. Nous vous fournissons cinq fichiers au
format GIF :
client0.gif,
client1.gif,
client11.gif,
client2.gif et
client21.gif.
Nous vous fournissons également le fichier
ClientImage.java
qui contient la définition d'une classe permettant de constituer et
afficher une table d'images.
La zone horizontale inférieure contient trois boutons permettant de
réaliser les actions correspondantes du client : commander, boire,
rendre un verre.
3.1 Question
Donnez l'implantation de la classe Client.
- 1
- plus ou moins plein
This document was translated from LATEX by HEVEA.