Академический Документы
Профессиональный Документы
Культура Документы
Objectifs :
Comprendre les Exceptions Les Interfaces principalement Comparable et Comparator Encore la classe Vector La modlisation UML ( rendre avec le CR)
1 sur 5
mthode afficher qui appellera toString 2 constructeurs : lun sans paramtre met le temps 0 et le second prend pour paramtre les valeurs initiales des nombres dheures, mn et sec. Mthode equals & hashcode (remettre leurs utilits dans le Compte Rendu) Cette classe implmentera donc linterface java.lang.Comparable (consulter le javadoc et les annexes de la mthode compareTo) pour indiquer si le temps pass en paramtre est suprieur gal ou infrieur au temps courant (Remettre l'utilit dans le CR) Question 2 : Soit la classe de TestTemps suivante, sur quel mcanisme ou interface se base la mthode sort (statique) de la classe Collections ? Si on met l'instruction sort en commentaire que produit l'affichage, le vector est-il toujour tri ? Si la classe temps n'implemente pas Comparator le mcanisme fonctionne t-il ? selon qu'elle bases ?
class TestTemps { public static void main(String args[]) { Temps t1=new Temps(10, 10, 10); Temps t2=new Temps(1,1,1); Vector v = new Vector(); v.add(t1); v.add(t2); Collections.sort(v); System.out.println(v); }}
Question 3 : Modifier le constructeur de la classe Temps de manire a ce quil lance ou jette une exception de type TempsException (quil ne traitera pas) si les heures, les minutes et les secondes ne correspondent pas a un temps valide. Crer bien entendu la classe TempsException (simplement comme suit) . Corriger le main prcdent pour traiter l'exception et afficher un message d'erreur en cas d'exceptions. class TempsException extends Exception {} Question 4 : Dessiner le diagramme de classe UML de Temps
2 sur 5
La classe Rsultat doit implmenter Comparable et Comparator. Deux rsultats sont identiques si tous les paramtres sont identiques. Crer les mthodes equals, hashcode Crer les interfaces TempsComparator, PointVertComparator, PointMontagneComparator Resultat +Resultat(t:Temps, pointsVert :int, pointsMontagne :int) +Resultat() +ajouter(r:Resultat):void + toString():String +
Q 1. Donnez le code JAVA dune classe Resultat respectant ces contraintes. Q2. Crer un main et tester le fonctionnement de cette classe : ajouter deux rsultats ou n resultats quelconques un Vector, trier des resultats selon le temps, les points verts, les points montagnes(utiliser l'annexe pour vous aider) Question 3 : Dessiner le digarmme de classe UML de Rsultat (ventuellement tester le Revers Engeneering qui consiste a retrouver le diagramme UML partir du code avec des plugins NetBeans ou Eclipse ou RationalRose
3 sur 5
ListeCoureurs
listeCoureur: Vector +ListeCoureurs() +ajouter(c:Coureur):void +recuperer(int indiceCoureur):Coureur +abandon(int indiceCoureur):void +listeAbandon():Vector +affiche():void +taille():int Q 1 (2 pts). Donnez le code JAVA de la classe ListeCoureurs.
4 sur 5
// Simule le droulement dune tape en attribuant un rsultat alatoire a chaque Coureurs pour cette tape. Cette mthode appelle la mthode abandon qui limine de manire alatoire un Coureur un debut de letape. abandon(lc); int h,m,s,pv,pm=0; for (int i=0;i<lc.taille();i++) { //debut for try{ Coureur c = lc.recuperer(i); h=(int)(Math.random()*5); m=(int)(Math.random()*60); s=(int)(Math.random()*60); Temps t = new Temps(h,m,s); pv=(int)(Math.random()*100);pm=(int)(Math.random()*100); c.setResultat( ?, new Resultat(pm,pv,t));} catch(AbandonException e){// le joueur a bandonn il ne dispute pas la course, on passe au joueur suivant.} }//fin for}//fin methode public void abandon(ListeCoureur lc) {//choix alatoire dun Coureur qui va abandonner la course durant une tape - Le cas ou le tirage alatoire dsigne un Coureur dj //limin nest pas pris en Compte. int numAleatoire=(int)(Math.random()*lc.taille()); lc.abandon(numAleatoire);}}
5 sur 5