télécharger en pdf

Transcription

télécharger en pdf
ESIREM - Infotronique 4eme Année
ITR4 - TD JML
Février 2010
Exercice 1 : La classe Processus
La classe Processus représente un processus possédant une priorité entière comprise entre 0 exclus
et PRIO_MAX inclus. Un processus est créé avec une priorité fixée qui ne changera plus au cours
de sa vie.
Il est possible de comparer la priorité de deux processus. Un processus possède un identifiant String
(4 chiffres) qui l’identifie de manière unique.
Pour la classe Processus, ajoutez les spécifications JML de sorte à garantir l’intégrité des différents
attributs et méthodes.
public class Processus {
/** la priorite max d’un processus. */
public static int PRIO_MAX = 25;
/** la taille d’un identifiant. */
public static int TAILLE_IDENT = 4;
/** la priorite de ce processus. */
private final int saPriorite;
/** l’identifiant de ce processus. */
private final String sonIdent;
public Processus(int prio, String id) { ... }
public boolean estPlusPrioritaire(Processus p) { ... }
public
int getPriorite() { ... }
public
String getIdent() { ... }
public boolean equals(Object o) { ... }
public String toString() { ... }
}
Exercice 2 : Pile d’entiers
Développez une classe Java qui contient une pile d’entiers d’au plus 10 éléments. Cette classe doit
implémenter deux méthodes :
1. push(Integer), pour ajouter un élément sur la pile
2. pop () : Integer pour retirer un élément de la pile.
1
L’implémentation doit assurer qu’aucun élément ne sera retiré si la pile est vide et qu’aucun objet
ne sera ajouté si la pile est pleine.
Exercice 3 : Convertisseur de température
Développez une classe contenant deux méthodes de conversion de température, de Fahrenheit
à Celsius et vice- versa. Ces méthodes n’acceptent pas des valeurs nulles ni des températures
inférieures à −273, 15 degrès C ou −459.67 degrés F . Les formules de conversion sont : [F ] =
[C] ∗ 9/5 + 32 et [C] = ([F ] − 32) ∗ 5/9.
Exercice 4 : La carte Crous
On s’intéresse à une version très simplifiée de l’application qui permet de payer un repas dans les
poiints de restauration CROUS, avec une carte CROUS. Le système contient une représentation
de l’interface et du capteur à carte de cette machine.
L’interface utilisateur (classe InterfUtilCrous) permet de poser une carte sur le capteur et de la
retirer, de payer un repas, et de payer un repas gratuit. L’état de la carte s’affiche a chaque opération
et un message s’affiche si l’opération est impossible.
La machine (classe MachineCreous) est ou n’est pas associée à une carte. Elle permet de payer
un repas et de payer un repas gratuit. Il est impossible de payer un repas gratuit si le nombre de
points sur la carte est insuffisants. Il est impossible de payer un repas si le montant sur la carte est
insuddisant. La saturation du nombre de points de fidélité sur la carte n’empêche pas le paiement
, mais les points ne sont crédités qu’à concurrence du nombre de points maximum.
La carte (classe CarteCrous) possède un nombre de points de fidélité (borné) et un montant (borné),
ainsi que la catégorie du possesseur de carte (étudiant, personnel, passager, etc) et un identifiant
String de 6 caractères.
La classe DonnéesCrous contient les informations concernant le prix d’un repas pour une catégorie
donnée de personnel, le nombre de points de fidélité gagnés lors du paiement d’un repas, le cout
en points de fidélité d’un repas gratuit, les bornes max pour les points et le montant d’une carte.
Le schémas UML correspondant à ce projet est donné en figure 1
Figure 1 –
Pour chacune de ces classes, écrivez l’interface correspondante (et non l’implémentation) et ajoutez
y les différences spécificités JML.
2