• Aucun résultat trouvé

3 Distributeur de boissons

N/A
N/A
Protected

Academic year: 2022

Partager "3 Distributeur de boissons"

Copied!
2
0
0

Texte intégral

(1)

Institut Galil´ee Java Distribu´e

M1 Informatique 2013 – 2014

Rattrapage JD dur´ ee 3h

Seuls documents autoris´es : – Documentation java :

– Le chemin pour java SE 7 est : /usr/java/DOCS EXAMEN/docs/api – Le chemin pour openjdk-6-doc est : /usr/share/doc/openjdk-6-doc/api – S’il y a un bugue `a partir du navigateur utiliser /usr/bin/firefox – le cours et les TP et corrig´es de TP

1 Questions de cours

R´epondre en deux lignes maximum.

1. Que signifie ”this” en Java ? De quel type est-il ?

2. Quelles sont les diff´erences entre une interface et une classe en Java ? 3. Quelle particularit´e ont les membres d´eclar´es static ?

4. Que signifient les mots cl´es ”final”, ”protected” et ”transient” ?

5. Quelle est la diff´erence entre ”red´efinir” et ”surcharger” une m´ethode d’une classe ?

2 Thread et synchronisaiton

Ecrire une classe Matricepermettant de repr´esenter une matrice `a valeurs enti`eres ayantllignes et ccolonnes.

On se propose d’´ecrire une m´ethodepublic Matrice prodMat(Matrice B) throws Exception`a la classeMatrice qui effectue le produite entre deux matrices de mani`ere parall`elle. Pour se faire, apr`es v´erification des dimensions des op´erandes du produit (et lancement d’une exception en cas d’erreur), on cr´eem (m < l) threads. Chaque thread se charge de calculer quelques lignes de la matrice r´esultatP :

Pour j = 0 a l-1 P[i,j] = P

k=0 ... c-1 A[i,k]*B[k,j];

Ecrire la m´ethodeprodMat()en synchronisant lesmthreads et en garantissant qu’un thread ne calcule une ligne que si celle-ci n’est pas d´ej`a entam´ee par un autre thread.

3 Distributeur de boissons

L’objectif de cet exercice est de cr´eer une application java qui simule un distributeur de boissons.

1. Cr´eer deux classes principalesClienLocaletDistribLocalqui vont agir respectivement comme client et comme serveur (en local, donc ”communication” par appel direct de m´ethodes).

2. Cr´eer une classeBoisson, repr´esentant une boisson, munie des trois champsString name, le nom de la boisson, int prix, le prix de la boisson etint nbStock, le nombre d’unit´es restantes en stock.

3. Le stock du distributeur est repr´esent´e par un tableau contenant la liste des boissons `a vendre par le distributeur.

En plus de ce tableau, nomm´eBoissons, la classeDistribLocal a quatre autres champs : (a) int solde, repr´esentant le montant r´esultant des ventes depuis le dernier chargement.

(b) int montant, repr´esentant le montant courant introduit par le client.

(c) String clef, repr´esentant un mot de passe introduit par un employ´e afin de vider la caisse du distributeur et remplir ses compartiments.

(d) occupe, indiquant si une boissons est en cours de pr´eparation ou non.

4. Cr´eer une sous-classeDistExceptionqui h´erite de la classeExceptionet qui ne d´efinit qu’un seul constructeur (et aucune autre m´ethode)DistException(String)qui appelle le constructeur de la classe m`ere. Cette exception servira pour des cas tels que ”Boisson non disponible” ou ”Montant introduit insuffisant”.

5. Pr´evoir les op´erations suivantes comme m´ethodes de DistribLocal: 1

(2)

– public static int DeposerPiece(int somme) throws DistException.

L’unique argument de cette m´ethode repr´esente la valeur de la pi`ece introduite par le client. La m´ethode teste si une vente est en cours ou que le mentant cumul´e d´epasse un seuil pr´ed´efini, auquels cas elle l`eve une exception de type DistException et retourne la somme introduite. Dans le cas contraire, la fonction incr´emente le montant introduit pour l’achat en cours.

– public int select(String name) throws DistException.

Si le produit de nom name n’est pas disponible (en le cherchant dans Boissons et en testant le nombre d’unit´es restantes) ou si le montant introduit est inf´erreur `a son prix, la m´ethode g´en`ere une exception de type DistException. Sinon, elle pr´epare la boisson demand´ee (simulation avec un ´ecoulement de temps), met `a jour les informations concernant la quantit´e en stock et le solde du distributeur et renvoie la monnaie restante (s’il y en a).

– public int annuler(String name).

Elle annule l’achat en cours, s’il y en a, et retourne la monnaie introduite par le client.

– public int charger(String clef, int qte) throws DistException.

Permet `a un employ´e de r´ecup´erer le solde du distributeur et de charger tous ses compartiments. Dans le cas o`u l’argument donn´e ne correspond pas `a la clef du distributeur, la m´ethode l`eve une exception de type DistException. Nous supposons que le nombre maximum d’unit´es est le mˆeme pour tous les types de boissons du distributeur et vautqte.

– La m´ethodemain(...)se trouvera dansClientLocal et proposera `a l’utilisateur un menu textuel afin qu’il puisse acheter une boisson. Les entr´ees seront effectu´ees avec des appels `areadLine()sur une r´ef´erence cr´e´ee comme suit :

BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));

Les sorties seront effectu´ees avec desSystem.out.println(...).

2

Références

Documents relatifs

b) Dans une seconde évaluation, l'autoconsommation est évaluée aux prix à la production, les autres boissons consommées à domicile (ventes à emporter), aux prix de détail, et

Si certaines études ont observé une relation entre la consommation de boissons riches en hydrates de carbone – notamment les boissons sportives - avec la présence de caries [12, 32],

Le but de 1' étude est de sonder les propriétaires-dirigeants des petites entreprises qui transforment artisanalement des produits agricoles en boissons alcooliques. Le

L’objectif principal de ce mémoire est de déterminer la sensibilité des consommateurs de boissons sucrées, soit celles classées dans la catégorie « à limiter » qui inclut

Le jour anniversaire de la création du compte, le montant des interêts est calculé sur le montant disponible sur le compte et est déposé dessus.. En supposant quʼil nʼeffectue pas

3 Écrire une fonction qui prend en entrée le prix d'une boisson et qui demande à l'utilisateur de saisir une ou plusieurs pièces de monnaies (5, 10, 20 ou 50) tant que la somme

2 Écrire une fonction qui prend en entrée le choix de l'utilisateur (sous forme d'entier) et ache la boisson sélectionnée puis ache et renvoie le prix à payer (1 pts).. Par

Si la puissance disponible est proposée via le dispositif NEBEF, la puissance disponible résiduelle est calculée comme la différence entre la puissance disponible