TP noté Approche Objet

Remarques préliminaires :

  1. 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.
  2. Récupérer les fichiers des classes AfficherListenerRepartitionFrame et Main. Mettre dans un package partie1 les classes AfficherListener et RepartitionFrame et dans le package par defaut la classe Main.
  3. Modifier AfficherListener pour que lorsque l'on clique sur le bouton Ok, le texte saisi dans RepartitionFrame soit affiché sur la sortie standard.
  4. Récupérer les fichiers des classes Repartition, Matiere, Enseignant et EnseignantImpl et les mettre dans un package partie2.
  5. Modifier EnseignantImpl pour que lorsqu'on exécute l'instruction :
    System.out.println(e);
    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

  6. 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 :
    1. 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.
    2. public int hashCode() pour qu'elle retourne la valeur nom.hashCode(), pour que deux matières égales aient les mêmes valeurs de hashCode.
  7. 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" ...).
  8. 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".
  9. 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.
  10. 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).
  11. 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.