Travaux Pratiques n°1
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.)
Lectures préalables :
Java_I
Tutorial
Getting Started
Object-Oriented Programming Concepts
Language Basics
Thèmes du TP :
mise en place d'un environnement
minimal pour démarrer sous Java
Java "sans objets" !
Exceptions
System.out.println
Applet et HTML
javadoc et les conseils
IMPORTANT !
1. La division entre 2 entiers est une division entière. Exemple 5/9 = 0
2. Dans les tableaux, l'attribut length contient le nombre d'éléments du tableau
(attention ! ce n'est pas une fonction, et le premier indice d'un tableau est 0).
3. Les arguments de la ligne de commande sont des chaînes, donc à convertir en entiers
(voir la fonction static int parseInt(String s) de la classe Integer)
4. Le nombre souhaité de chiffres après la virgule peut s'obtenir d'au moins 3 manières différentes :
dans un premier temps, utiliser simplement un calcul et une conversion en entier ; vous pouvez
préférer utiliser la fonction d'arrondi inférieur floor() de la classe Math. Enfin, vous pouvez
utiliser une classe de formatage qui arrondira au plus proche (voir partie optionnelle à la fin de
ce sujet).
5. DOS et Windows ne codent pas les caractères de la même manière. Le caractère ° que vous
tapez dans le bloc-notes sous Windows ne s'affiche donc pas correctement quand vous exécutez
le programme sous DOS.
Ce problème ne se posera pas pour les applettes qui s'exécutent sous Windows. En attendant, si
vous voulez un affichage correct sous DOS, il faut demander l'affichage du caractère de code
ascii F8 (la notation unicode est "\u00F8").
6. En cas de besoin, consultez la documentation Sun sur les packages, classes, et méthodes
Page
1
sur
5
ESIEE.BureauD.Java.TP1
03/09/2004
http://www.esiee.fr/~bureaud/fi/unites../in413/tp1/Tp1.html
(ii) La documentation générée par l’utilitaire ‘javadoc’ est demandée (voir la documentation Sun sur
cette commande).
(iii) Développez une nouvelle version de votre programme (Fahr2CelsExcept) en ajoutant la gestion
des exceptions susceptibles d'être levées :
NumberFormatException
doit être traitée car dépend de la saisie de l'utilisateur;
à traiter au plus près de l'instruction qui est susceptible de la déclencher.
ArrayIndexOutOfBoundsException
peut ne pas être traitée car dépend de la qualité du programmeur;
à traiter dans le programme principal; peut être déclenchée en faisant tourner la boucle une fois de plus que
nécessaire, par exemple.
(iv) N'oubliez pas de fournir la documentation javadoc
(générée par javadoc -d docFahr2CelsExcept -version -author -private Fahr2CelsExcept.java)
Question 2. (applette)
(i) Complétez le squelette d'"Applette" fourni en insérant votre fonction de conversion
proposés par Java.
Commandes DOS :
Attention ! Vous devez être sur le bon répertoire (ne pas spécifier de chemin d'accès avant le nom du
fichier java).
compilation : javac Fahr2Cels.java
execution :java Fahr2Cels 0 100 2000 54
conversion en
entier arrondi
inférieur arrondi (par
formatage)
0 °F -> -17.7 °C
100 °F -> 37.7 °C
2000 °F -> 1093.3 °C
54 °F -> 12.2 °C
-17.8
-17.8
37.8
IMPORTANT !
Commande DOS :
Le dossier docFahr2Cels de la commande javadoc ci-dessus est à créer avant de lancer la
commande, car il n'est pas créé automatiquement...
Un commentaire minimum de votre part est attendu pour au moins toutes les classes, toutes les
méthodes, tous les paramètres, et toutes les valeurs de retour.
documentation : javadoc -d docFahr2Cels -version -author -private Fahr2Cels.java
Page
2
sur
5
ESIEE.BureauD.Java.TP1
03/09/2004
http://www.esiee.fr/~bureaud/fi/unites../in413/tp1/Tp1.html
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
(générée par javadoc -d docAppletF2C -version -author -private AppletteFahrenheit.java)
(iii) Ajouter à cette Applette la prise en compte de l'exception NumberFormatException.
(iv) N'oubliez pas de fournir la documentation javadoc
(générée par javadoc -d docAppletF2CExcept -version -author -private AppletteFahrenheitExcept.java)
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;
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.
Page
3
sur
5
ESIEE.BureauD.Java.TP1
03/09/2004
http://www.esiee.fr/~bureaud/fi/unites../in413/tp1/Tp1.html
/**
* 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>
Page
4
sur
5
ESIEE.BureauD.Java.TP1
03/09/2004
http://www.esiee.fr/~bureaud/fi/unites../in413/tp1/Tp1.html
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !