td6 applette java: calculette complexe en mode graphique

Programmation Objet et langage Java 2013-2014 POO et Java
Daniel Tschirhart - TD6 POO et Java Calculette complexe en mode graphique 1/7
TD6 APPLETTE JAVA: CALCULETTE COMPLEXE EN MODE GRAPHIQUE
Buts poursuivis par ce TD
Mettre en œuvre l'api graphique AWT de Java à l'aide du plugin Window Buider d'eclipse
Mettre en œuvre les exceptions
Publier des applications Java sur le Web
Description du TP
La calculette précédente est réalisée sous forme graphique.
La zone de saisie et la pile opérationnelle contiennent uniquement des représentations textuelles de nombres
complexes.
Les nombres complexes sont saisis dans un champ de type TextField.
Opérateurs à implémenter
Les quatre opérateurs de base : +, -, *, /.
L’opérateur de conversion rectangulaire -> polaire : p.
Cette opération affiche le nombre situé au sommet de pile dans la zone de saisie dans le format
module[argument°].
Exemple pour le nombre (1 ; 1), la valeur affichée est 1,414[45°]
Les opérateurs de manipulation de la pile s et d
o s : permute le sommet de pile,
o d : duplique le sommet de pile.
La fin de la saisie est provoquée par :
Une parenthèse fermante ")" dans le cas la saisie d’un nombre complexe,
Un opérateur parmi les opérateurs "+, -, *, /, p, s, d" dans tous les autres cas.
On implémentera les opérateurs p, s , et d en tout dernier.
a. Lorsque la saisie est terminée par la frappe de ")", le nombre complexe est placé dans la boite à liste faisant
office de pile après avoir été au préalable formaté à l'aide de la méthode toString de la classe Complex.
Ce formatage permet de s'assurer que la pile ne contient que des représentations textuelles valides.
Nota : pour formater le nombre complexe on pourra instancier celui-ci à l'aide du constructeur
Complex(String) afin de s’assurer que le nombre complexe possède un format valide. puis on le mettra
de nouveau sous sa forme textuelle à l'aide de la méthode toString(). C’est ce nombre qui sera placé dans
la pile.
b. Lorsque la saisie comporte ne comporte pas un nombre complexe, l’algorithme de la calculette effectue
l'opération précisé par l’opérateur fourni dans la zone de saisie en utilisant les opérandes situés au sommet de
pile et au sommet de pile -1 (la pile est implémentée à l'aide de la boite à listes). Le résultat de cette opération
est placé sous forme textuelle au sommet de pile (position 0 de la boite à listes). Si le résultat du calcul n’est
pas un nombre complexe (cas de l'opérateur p), celui-ci est affiché dans la zone de saisie.
Pour assimiler le fonctionnement de la calculette, celle-ci est accessible sous la forme d'une applet Java sur le
site : http://daniel.tschirhart.free.fr/java/TP/calcgraph.htm
c. Toute erreur de saisie provoque une exception dans le constructeur Complex(String). Celui-ci esquive
l'exception et la fait remonter vers l'appelant. Ce dernier doit effacer la zone de saisie pour indiquer que la
saisie est invalide.
Sommet de Pile
Pile Opérationnelle : boite à listes de type List
Zone de saisie (TextField)
Programmation Objet et langage Java 2013-2014 POO et Java
Daniel Tschirhart - TD6 POO et Java Calculette complexe en mode graphique 2/7
Gestion des contrôles utilisés
1. Corps de la calculette : largeur 200 pixels (environ), hauteur 180 pixels (environ), couleur au choix.
2. Zone de saisie de type TextField : police non proportionnelle, corps GRAS de taille 110 x 20.
Nom de la zone regX.
3. Pile Opérationnelle : type List du package AWT. Même police que la zone de saisie.
Méthodes à utiliser : à choisir parmi les méthodes données en annexe.
Travail demandé
1. Créer un projet TD5. Récupérer la classe Complex en format source sur le site de cour ou sur le serveur de
l’école (répertoire RessourcesPourTp) et ajouter le à votre projet.
2. Ajouter une classe CalcComplex à l’aide de du menu Java /Window
Builder/Swing Designer/JApplet d’éclipse Ne pas générer de
fonction main (une applette n'a pas de fonction main, mais une fonction void
init() (non visible dans une applette).
3. Ouvrir l’onglet Design, définir la couleur de fond (gris) à l'aide de la fenêtre de
propriétés et définir la propriété Layout à Absolute Layout.
4. Sélectionner dans la palette un contrôle TextField, puis dessiner ce contrôle sur la fenêtre de l'applette
conformément à la description donnée page 1 (taille environ 110x20) et nommer le regX.
Définir la police grasse Tahoma de taille 16 à l'aide de la fenêtre de propriétés.
5. Pour mettre en place le gestionnaire d'événement pour la zone de saisie, sectionner cette dernière, clic droit
Event Handler. Choisir la source d’événement : utiliser comme source d’événement le clavier et comme
événement touche relâché) ou text (textValueChanged). Observer le code généré (onglet source).
6. Remarquer que la fenêtre de propriétés varie en fonction des composants sélectés :
Remarquer le bouton permettant de transformer la référence locale (regX) en attribut et réciproquement.
Programmation Objet et langage Java 2013-2014 POO et Java
Daniel Tschirhart - TD6 POO et Java Calculette complexe en mode graphique 3/7
7. Ajouter à la fenêtre un contrôle List et renommer le pileVisuelle. Dimensionner le conformément à la
description donnée page 1. A l'aide de la fenêtre de propriétés, définir une police identique au contrôle
précédent. Aligner et uniformiser la largeur des contrôles List et textField.
8. Tester votre IHM.
9. Mettre en place la logique de la calculette :
Algorithme du gestionnaire d'événements:
Intercepter les exceptions
Lire la zone de saisie
SI celle-ci contient ")" Alors
Instancier un nombre complexe à l'aide de constructeur Complex(String)
Ajouter la représentation textuelle de ce nombre complexe dans la liste en utilisant la méthode
toString de l'objet Complex (cette technique permet de normaliser le format de saisie)
Effacer la zone de saisie
SINON SI le premier caractère de la zone de saisie est égal à "+"
additionner (appeler la fonction privée add() )
SINON SI le premier caractère de la zone de saisie est égal à "-"
soustraire (appeler la fonction privée sub() )
Traiter les exceptions :
ComplexFormatErrorException => mettre la zone de saisie à ""
ExceptionComplexDivZero => mettre la zone de saisie à ""
Exception => sortir du programme
Saisie des nombres complexes.
Nota : la présence d'un caractère particulier peut être déterminée par les fonctions membre suivantes de la
classe String : indexOf, startsWith, contains (voir la documentation du JDK).
10.
11. Publication de la calculette sur le Web.
Créer le fichier html calc.html permettant de lancer l'applet depuis un navigateur (voir polycopié du
cours) dans le répertoire bin de votre projet et extraire les fichiers .class de l’archive Complex.jar dans le
même répertoire.
Améliorations :
1. La calculatrice utilise comme pile opérationnelle un objet List AWT. Cette liste contenant des
représentations textuelles arrondies de nombre complexes, il en résulte des approximations de calcul. Pour
éviter cet inconvénient, la pile AWT sera utilisée uniquement en tant qu’élément IHM et la pile opérationnelle
sera constituée d’une Stack<Complex>.
Modifier le programme précédent afin de tenir compte de cette nouvelle stratégie de calcul.
ANNEXE
java.awt
Class List
java.lang.Object
java.awt.Component
java.awt.List
All Implemented Interfaces:
ImageObserver, ItemSelectable, MenuContainer, Serializable, Accessible
public class List
extends Component
implements ItemSelectable, Accessible
The List component presents the user with a scrolling list of text items. The list can be set up so that the
user can choose either one item or multiple items.
For example, the code . . .
Programmation Objet et langage Java 2013-2014 POO et Java
Daniel Tschirhart - TD6 POO et Java Calculette complexe en mode graphique 4/7
List lst = new List(4);
lst.add("Mercury", 0); lst.add("Venus", 0);
=> ["Venus", "Mercury"]
lst.add("Mercury"); lst.add("Venus");
=> ["Mercury", "Venus"]
See Also:
ItemEvent, ItemListener, ActionEvent, ActionListener, Serialized Form
Nested Class Summary
List.AccessibleAWTList
This class implements accessibility support for the List class.
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BltBufferStrategy,
Component.FlipBufferStrategy
Field Summary
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
Constructor Summary
List()
Creates a new scrolling list.
List(int rows)
Creates a new scrolling list initialized with the specified number of visible lines.
List(int rows, boolean multipleMode)
Creates a new scrolling list initialized to display the specified number of rows.
Method Summary
void
add(String item)
Adds the specified item to the end of scrolling list.
void
add(String item, int index)
Adds the specified item to the the scrolling list at the position
indicated by the index.
String
getItem(int index)
Gets the item associated with the specified index.
int
getItemCount()
Gets the number of items in the list.
String[]
getItems()
Gets the items in the list.
void
remove(int position)
Removes the item at the specified position from this scrolling
list.
void
remove(String item)
Removes the first occurrence of an item from the list.
void
removeAll()
Removes all items from this list.
void
replaceItem(String newValue, int index)
Replaces the item at the specified index in the scrolling list with
the new string.
Programmation Objet et langage Java 2013-2014 POO et Java
Daniel Tschirhart - TD6 POO et Java Calculette complexe en mode graphique 5/7
public class CalcComplexApplet extends JApplet
{
/**
* Create the applet.
*/
public CalcComplexApplet()
{
getContentPane().setBackground(Color.GRAY);
getContentPane().setLayout(null);
regX = new TextField();
regX.setFont(new Font("Tahoma", Font.BOLD, 16));
regX.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
String sOprnd = regX.getText();
try
{
}
catch (ComplexFormatErrorException exp)
{
}
catch (NumberFormatException exp)
{
}
catch (Exception exp)
{
System.exit(0);
}
}
1 / 7 100%

td6 applette java: calculette complexe en mode graphique

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 !