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 Repartition
Frame
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.