Calculette
    Il s'agit de réaliser une classe Calculette évaluant une
    expression numérique.
    On utilise des expressions préfixées pour faciliter
    l'analyse : 
    
      - pas de priorité
 
      - pas d'associativité
 
      - la pile nécessaire au calcul est celle des appels
        récursifs
 
    
    Par exemple, + / 4 2 1 dont le résultat est 3 (= 4/2 + 1)
    D'autre part, le caractère '-' étant utilisé comme
    signe par StreamTokenizer, l'opérateur binaire correspondant
    sera représenté par le mot "moins".
    Première version
    
    
      - L'interface Operateur décrit
        les
        opérations d'un opérateur : récupérer son
        symbole, son arité et évaluer une expression bien
        formée à partir de cet opérateur.
 
      - La classe Operateurs
        fournit sous la
        forme de constantes quelques opérateurs usuels.
 
      - La classe ErreurSyntaxiqueException
        représente les exceptions liés à une erreur de
        syntaxe dans une expression.
 
      - La classe Calculette permet
        l'evaluation d'expressions, soit à partir de l'entrée
        standard, soit à partir d'un fichier. Le résultat est
        donné soit sur la sortie standard, soit dans un fichier. Cette
        classe utilise en particulier un java.io.StreamTokenizer
        pour le découpage des expressions en lexèmes.
 
    
    Version avec chargement dynamique des opérateurs
    
      - Dans cette version, la classe Calculette a
        été "nettoyée" de façon à
        séparer les entrées/sorties et l'évaluation
        proprement dite.
 
      - La gestion des entrées/sorties a été
        transférée dans une classe Calculettes, qui
        fournit
        des méthodes de classe uniquement.
 
      - La classe Calculette est étendue en une classe CalculettePlugins
        qui au
        lieu de charger des opérateurs à partir d'un tableau va
        charger les opérateurs contenus dans un répertoire
        passé en paramètre. Cette classe utilise en particulier
        un java.lang.ClassLoader.
       
      - Les classes Operateur, Operateurs, ErreurSyntaxiqueException
        sont inchangées, à ceci près que toutes les
        classes ont été transférées dans un
        paquetage calculette.
 
      - Les classes d'opérateurs (fichiers .class) sont maintenant dans un
        répertoire "plugins". Ces fichiers sont obtenus à partir
        des fichiers sources contenus dans le répertoire "pluginsSrc".
 
      - Le main de cette version se trouve dans une classe hors du
        paquetage calculette
        CalculetteDynamique.
       
    
    Afin de pouvoir obtenir le résultat attendu, il est
    nécessaire avec Eclipse de :
    
      - demander à la création du projet des
        répertoires pour les fichiers sources et les fichiers binaires
        séparés :
        
          - dans le premier dialogue, cocher  create separate source and
              output
              folders,
 
          - choisir next
 
          - dans le
            second dialogue,
            cocher allow output
              folders for
              source folders.
 
        
       
      - créer un second répertoire source, par exemple pluginsSrc :
        
          - utiliser la commande New
            du menu File
            (barre de
            menu ou click droit), puis choisir Source Folder, le
            projet
            étant selectionné.
             
        
       
      - créer un répertoire de destination pour les sources
        du répertoire pluginsSrc
        :
        
          - clicker sur le répertoire pluginsSrc avec le click droit,
            et selectionner dans le menu Build
              Path l'item Configure
Output
              Folder ... choisir Specific
              output
              folder et entrer le nom désiré, par exemple plugins.
           
        
       
    
    Versions graphiques
    
      - Dans sa première version, la calculette graphique est
        composée d'une 
JFrame, contenant 
        
          - un 
JTextField,  
          - deux 
JPanel, 
           
          
            - le premier contenant des 
JButton pour les
              chiffres, le point et l'espace, 
             
            - le second des 
JButton pour les
              opérations, 
          
          - un 
JButton pour le "=" 
        
        Le code rajouté à la version précédente est
        contenu principalement dans la classe CalculetteFrame
        incluse dans le paquetage calculette. La classe
        contenant
        la méthode main a été
        modifiée et renommée en CalculetteGraphique.
        Le layout utilisé dans la JFrame est un BorderLayout.
        Ceux
        utilisés dans les deux JPanel regroupant les
        boutons sont des GridLayout. 
      - Seule la classe 
CalculetteFrame
        est modifiée dans la deuxième version. Les deux JPanel
        ont été supprimés et tous les composants de la JFrame
        sont gérés par un même layout de type GridBagLayout.