TP noté Approche Objet
    
    Remarques préliminaires : 
    
    
      - Lisez
          d'abord toutes les questions. Beaucoup sont indépendantes et
          peuvent donc être traitées dans l'ordre que vous souhaitez.
 
      - Envoyer
le
          résultat sous la forme d'un ou plusieurs projets Eclipse
          zipés, à votre nom, par mail à olivier.baudon@labri.fr
          ou marie-christine.counilh@labri.fr
         
    
    
      - Créer un projet Eclipse TP portant votre nom. Si vous le souhaitez,
        vous pouvez entre deux questions dupliquer ce projet en
        renommant la copie "votre nom" suivi du nouveau numéro de
        version.
       
      - Récupérer les fichiers des classes 
AfficherListener, RepartitionFrame
        et Main. Mettre dans
        un package partie1 les classes AfficherListener
            et RepartitionFrame et dans
        le package par defaut la classe Main. 
      - Modifier 
AfficherListener pour que lorsque
          l'on clique sur le bouton Ok, le texte saisi dans RepartitionFrame
          soit affiché sur la sortie standard. 
      - Récupérer les fichiers des classes 
Repartition, Matiere, Enseignant et EnseignantImpl
        et les mettre dans un package partie2. 
      - Modifier 
EnseignantImpl pour que lorsqu'on
          exécute l'instruction :
          System.out.println(e);
          où e est une instance de EnseignantImpl,
          cela affiche sur la sortie standard le prénom suivi du nom de
          l'enseignant, séparés par un espace.
          Par exemple, 
        Enseignant e = new EnseignantImpl("Einstein",
            "Albert");
            System.out.println(e);
          devra afficher :
            Albert Einstein 
         
      - Modifer 
Matiere pour que deux matières
        soient considérés comme "égales" si elles ont le même nom. Pour
        cela, vous devez redéfinir les méthodes héritées de la classe Object
        : 
      
        public boolean equals(Object o) de façon à
          retourner true si o est une
          instance de Matiere et que son nom
          est égal à celui de l'objet (instance de Matiere)
          courant. 
        public int hashCode() pour qu'elle retourne la
          valeur nom.hashCode(), pour que deux matières
          égales aient les mêmes valeurs de hashCode.
         
      
      - Ajouter dans 
partie2 une classe EnseignantAvecStatut
          qui hérite de EnseignantImpl en
          rajoutant à l'enseignant un statut (représenté par une String,
          par exemple "vacataire", "MCF", "doctorant" ...). 
         
      - Modifier les classes nécessaires pour que, lorsque l'on clique
        sur le bouton Ok de 
RepartitionFrame, si la
          répartition contient une matière de ce nom, l'enseignant
          affecté s'il existe soit affiché (prénom + nom
          ou prénom + nom + statut selon la classe) 
          sur la sortie standard. Sinon, on affichera "Matière non
          affectée".
         
      - Rajouter une classe d'exception 
MatiereInexistanteException
        qui sera levée par la méthode 
          affecterMatiere(Matiere m, Enseignant e) dans la classe Repartition
        si on essaie d'affecter un enseignant à une matière m
        qui n'a pas été insérée dans la table lors de la création de
        l'instance de Repartition. 
      - Modifier la classe Repartition pour qu'on puisse
          l'utiliser avec n'importe quelle type d' 
Enseignant,
          mais en pouvant garantir que toutes les instances de Enseignant
          présentes dans l'annuaire proviennent d'une même
          implémentation (par exemple : EnseignantImpl
          ou EnseignantAvecStatut). 
      - Modifier le code pour que quand on clique sur le bouton
          Ok, le texte associé à l'enseignant trouvé soit affiché dans
          une 
JTextArea. Si aucun enseignant n'est
          trouvé, la JTextArea devra
          afficher "Matière non affectée !". La JTextArea
          devra être située à droite des autres composants et lors d'un
          agrandissement de la fenêtre en largeur, elle seule devra
          s'agrandir horizontalement. Elle ne devra pas être éditable.