|
|
Pour ce premier TP, il est demandé d'utiliser directement le
JDK sous DOS (une petite étape de
configuration peut être nécessaire).
Il est également souhaitable de créer sur U:
un répertoire IN413 dans lequel vous pourrez
créer les répertoires TP1, TP2, ...
Question 1. (application)
(i)
Développez une application Java
(Fahr2Cels
)
dont le programme principal appelle
une fonction de conversion en degrés Celsius
d'une valeur exprimée en degrés Fahrenheit.
Remarques :
La formule de conversion est : °C = 5/9 * (°F -32) (voir 1.)
Les valeurs en degrés Fahrenheit à convertir sont données sur la ligne de commande. (voir 2.)
Ce sont des valeurs entières uniquement. (voir 3.)
Le résultat est attendu avec un seul chiffre derrière la virgule. (voir 4.)
IMPORTANT !
Commandes DOS :
|
(ii) La documentation générée par lutilitaire javadoc est demandée (voir la documentation Sun sur cette commande).
IMPORTANT !
Commande DOS :
|
(iii)
Développez une nouvelle version de votre programme
(Fahr2CelsExcept
) en ajoutant la gestion des
exceptions susceptibles d'être levées :
NumberFormatException
ArrayIndexOutOfBoundsException
(iv) N'oubliez pas de fournir la documentation javadoc
(i) Complétez le squelette d'"Applette" fourni en insérant votre fonction de conversion
L'applette en version complète, essayez
!
Exécution depuis la fenêtre d'invite de commande : DOS> appletviewer AppletteFahrenheit.html ou ouvrir ce fichier depuis un navigateur.
Voir le source à compléter de
l'applette (par exemple,
AppletteFahrenheit.java
).
Voir le source de la page HTML (par exemple,
AppletteFahrenheit.html
).
ATTENTION : les fichiers AppletteFahrenheit.html et AppletteFahrenheit.class doivent être dans le même répertoire
(ii) N'oubliez pas de fournir la documentation javadoc
(iii) Ajouter à cette Applette la prise
en compte de l'exception NumberFormatException
.
(iv) N'oubliez pas de fournir la documentation javadoc
Optionnel* :(v) Ajouter à cette Applette la lecture de paramètres comme la couleur du fond. Ces paramètres sont transmis depuis la page HTML (voir le tutorial) comme dans l'exemple suivant :<APPLET CODE="AppletteFahrenheit.class" HEIGHT=66 WIDTH=400> <PARAM NAME=backgroundcolor VALUE="#FF00FF"> </APPLET>C'est la méthode de classe : static Color decode(String nm);
de la classe
java.awt.Color
qui doit être exécutée;
si une erreur se produit, c'est la couleur rose
(Color.pink ) qui est conservée.
Vous pouvez aussi chercher un moyen de pouvoir spécifier dans le fichier html la couleur "en clair", c'est-à-dire en mettant "blue" ou "yellow" à la place de "#FF00FF", mais c'est nettement plus difficile. 1. (i) -suite- Utiliser la classe NumberFormat pour formater correctement le nombre "à l'américaine", mais avec un seul chiffre après la virgule. * Optionnel signifie qu'il n'est pas obligatoire de "rendre" ces questions sur la page web dont vous avez enregistré l'URL, mais vous devez essayer de traiter toutes ces questions pendant le TP. |
Annexe 1. (le source à compléter de l'applette)
import java.awt.Button; import java.awt.Color; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.applet.Applet; /** * une IHM minimale de test de la classe Fahrenheit. * * @author <A HREF="mailto:douin_at_cnam.fr">jm Douin</A> * @version 1.0 * @since jdk 1.1.x or higher */ public class AppletteFahrenheit extends Applet implements ActionListener{ /** L'entrée de la valeur en degré Fahrenheit. */ private TextField entree = new TextField( 6 ); /** Le bouton de conversion. */ private Button boutonDeConversion = new Button( "convertir" ); /** La sortie en degré Celsius. */ private TextField sortie = new TextField( 6 ); /** * Initialise l'applette. * cette méthode est appelée automatiquement par le navigateur. */ public void init() { add( entree ); add( boutonDeConversion ); add( sortie ); sortie.setEditable( false ); setBackground( Color.pink ); boutonDeConversion.addActionListener( this ); } /** * méthode déclenchée lorsque le bouton de conversion est appuyé. * remarquer que le champs de droite (les degrés Celsius) n'est pas éditable. * */ public void actionPerformed( ActionEvent ae ){ float c = fahrenheitEnCelsius( Integer.parseInt( entree.getText() ) ); sortie.setText( Float.toString( c ) ); } /** * la méthode à compléter. * @param f la valeur en degré Fahrenheit * @return la conversion en degré Celsius */ private static float fahrenheitEnCelsius( int f){ // ... return 0.F; // à compléter en remplaçant ce return "bidon" par la fonction de conversion // ... } }
Annexe 2. (le source de la page HTML)
<HTML>
<HEAD>
</HEAD>
<BODY BGCOLOR="#ffff80">
<P>
<APPLET CODE = "AppletteFahrenheit.class" HEIGHT=66 WIDTH=400></APPLET>
<P>
<P>
<HR>
<P>
<P>
</BODY></HTML>