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