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 :
  1. propre et plein
  2. pris par un client
  3. rendu par un client1 , sale et (plus ou moins) vide
Deux catégories d'individus manipule 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.