logo ESSI

TP : Héritage (POO) vs. JavaBeans (POC)

logo UNSA
 

Voici le but de la manoeuvre :

À la fin du TP, vous allez pouvoir...

Premier exercice

Il s'agit de tester une calculette simpliste en forme d'application.

Travail à effectuer :

  1. Téléchargez les classes (le fichier calculator.jar). Notez que toutes les classes de la calculette se trouvent dans ce fichier en format d'archive java.
  2. Allez voir
  3. Exécutez dans le répertoire où vous venez de déposer calculator.jar
  4. java -classpath .:calculator.jar:$JAVA_HOME/lib/classes.zip programming101.calculator.Test
    $JAVA_HOME indique où se trouve le répertoire top-level Java dans votre configuration (/usr/local/java/jdk, /opt/net/java/jdk, etc...).
C'est très bien, mais franchement, vous n'auriez pas comme une petite envie de faire de la multiplication aussi ? 

Deuxième exercice

Il s'agit d'ajouter la multiplication à la calculette par dérivation.

Travail à effectuer :

  1. Créez la nouvelle classe TimesButton qui s'occupera de la multiplication - vous modifierez la classe programming101.calculator.PlusButton déjà existante. Notez bien que les classes existantes appartiennent au package programming101.calculator, tandis que les classes que vous allez créer n'appartiennent à aucun package...
  2. Compilez-la :
  3. javac -classpath .:calculator.jar:$JAVA_HOME/lib/classes.zip TimesButton.java
  4. Dérivez programming101.calculator.Calculator pour créer la nouvelle classe qui incorporera la multiplication :
  5. public class CalculatorWithTimes extends programming101.calculator.Calculator {
            // les attributs visibles
            ...
            public CalculatorWithTimes() {
                    super();
                    // ajoutez le timesButton
                    ...
                    frame.setTitle("Calc with Times");
                    frame.pack();
            }
    }
    N'oubliez pas les commentaires !
  6. Compilez-la.
  7. Créez la nouvelle classe TestWithTimes pour tenir compte du nouveau bouton :
  8. public class TestWithTimes {
            ...
    }
  9. Compilez-la.
  10. Exécutez votre super calculette à fonctionnalité augmentée :
  11. java -classpath .:calculator.jar:$JAVA_HOME/lib/classes.zip TestWithTimes

Troisième exercice

Il s'agit de tester une calculette toujours aussi simpliste mais cette fois-ci en forme de JavaBeans.
Ceci ne marche pas correctement avec le java version "1.2beta2" ! Utilisez de préférence java version "1.1.5"

Travail à effectuer :

  1. Téléchargez les classes en fichier .jar
  2. Allez voir
  3. Ne vous laissez surtout pas impressioner par tout ce qui est dans le package FR.essi.sander.graphix.mvc. Cela sert comme support au design pattern MVC.
  4. Démarrez le BeanBox.
  5. Chargez le calculBeanz.jar que vous venez de récupérer.
  6. Cherchez les JavaBeans suivants dans le ToolBox et déposez-les dans le BeanBox : Calculator, DisplayField, ClearButton, EqButton, PlusButton
  7. Reliez l'événement control / update du ClearButton à la méthode update du Calculator. Ceci sert à avertir le Calculator que le ClearButton vient d'être solicité.
  8. Répétez pour les deux autres boutons.
  9. Reliez l'événement model / update du Calculator à la méthode update du DisplayField. Ceci avertit l'affichage qu'une nouvelle valeur vient d'être calculée par la calculette.
  10. Reliez l'événement control / update du DisplayField à la méthode update du Calculator. Ceci avertit la calculette qu'un nouvelle valeur vient d'être entrée par l'utilisteur pour être utilisée quand un bouton sera poussé.
  11. Faites de jolis calculs...Ah ? Y a que l'addition et ls soustraction ? Bon, nous allons réparer cela...

Quatrième exercice

Il s'agit d'ajouter la multiplication à la calculette par création et intégration d'un nouveau JavaBean.

Travail à effectuer :

  1. Créez la classe TimesButton qui s'occupera de la multiplication - vous modifierez la programming101.calculBeanz.PlusButton déjà existante. Compilez-la.
  2. Créez un nouveau fichier timesButton.jar contenant votre nouveau bouton :
  3. cat > timesButton.mf
    Name: TimesButton.class
    Java-Bean: True
    ^D
    
    jar cfm timesButton.jar timesButton.mf TimesButton.class
  4. Chargez ce fichier dans le BeanBox, ajoutez le bean, reliez-le au Calculator de la même façon que les autres, testez-le.
Notez bien la différence capitale, que pour ajouter la nouvelle fonctionnalité vous n'aviez aucunement touché aux beans qui existaient déjà. C'est à contraster avec la dérivation de CalculatorWithTimes à partir de Calculator

Le Code


...and for what it's worth: © 1994-9X Peter Sander, Michel Buffa (except stuff belonging to others of course)
sander@essi.fr
http://www.essi.fr/~sander
buffa@essi.fr
http://www.essi.fr/~buffa