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.