Lectures préalables :
- Java_I
- The Java™ Tutorials (Getting Started et Learning the Java Language)
Thèmes du TP :
- Utilisation de BlueJ
- Java impératif
- Exceptions
Ce TP est consacré à une application Java de conversion des degrés Fahrenheit (Angleterre) en degrés Celsius (reste de l’Europe!).
Ouvrir avec Bluej le projet “tp2”, descendre dans le paquetage “question1” où l’on découvre la classe “FahrenheitCelsius”.
C’est dans cette classe qu’est effectuée la conversion. Cette classe est une application car elle contient la méthode :
</code>
Compléter les 2 méthodes de cette classe
Contraintes :
- La formule de conversion : °C = 5/9 * (°F -32)
- Les valeurs en degrés Fahrenheit à convertir sont données sur la ligne de commande.
- Ce sont des valeurs entières.
- Le résultat est attendu avec un seul chiffre derrière la virgule, obtenu uniquement par le calcul. ( par exemple r = ((int)resultat*10)/10.0 )
Exécution sous Bluej :
“clic droit” sur le diagramme de la classe “FahrenheitCelsius” , choisir l’item “void main(String[] args)”, introduire des données comme ci dessous par exemple …
Le résultat dans la fenêtre Terminal
Technique Java :
- Les arguments de la ligne de commande sont des chaînes (String), donc pour effectuer la conversion il faut les convertir en entiers (cf. static int parseInt(String s) de la classe Integer du paquetage java.lang)
- Pour les tableaux, le champ length contient le nombre d'éléments du tableau (ATTENTION le premier indice d'un tableau est 0).
- Attention : la division entre 2 entiers est une division entière . Exemple 5/9 = 0 et 9/5 = 1
Enrichissez la classe de tests unitaires comparant des résultats calculés à des résultats attendus.
Lire le tutoriel “Unit Testing in BlueJ” sur les classes de tests sous Bluej et un exemple est donné dans le projet…
“runtime” Exceptions :
Descendre maintenant dans le paquetage “question2” où l’on découvre une autre version de la classe “FahrenheitClesius”.
Développez une nouvelle version de cette classe en reprenant la conversion de la question 1 et en ajoutant la gestion de l’exception “NumberFormatException”.
L’exception “NumberFormatException” est levée lors d’une mauvaise entrée sur la ligne de commande i.e. d’une entrée autre qu’une chaîne convertible en “int”
Exemple : {“10”,”ZZ”,”100”} engendre :
For input string: “ZZ” est généré par l’appel de e.getMessage() . e étant le nom de l’Exception soit System.out.println(“error : “ + e.getMessage());
Développez une classe de tests unitaires (cf. question1)
Descendre maintenant dans le paquetage “question2” et compléter l’“IHM Fahrenheit” fournie en utilisant la fonction de conversion de la question, cette IHM doit avoir un comportement analogue à cette interface. Celle-ci s’exécutera facilement dans votre environnement en déclenchant la méthode de classe main (clic droit, classe IHMFahrenheit)<p align="center"> </p>
Aide au comportement attendu :