Alors si tu veux être conforme à un modèle objet, la responsabilité de savoir si un étudiant appartient à un groupe est propre au groupe !
Parce que sinon, ça veut dire qu'un étudiant ne peut appartenir qu'à un seul groupe...
Donc globalement, il faut que dans Groupe, tu aies une méthode qui permette de dire "est-ce que cet étudiant appartient au groupe?"
Comment Groupe stocke ses étudiants en interne, c'est la problématique de la classe Groupe, c'est son rôle, sa responsabilité, ça peut changer, donc il ne faut pas que les autres y accèdent.
Donc, crées une méthode dans groupe
public boolean estDansLeGroupe(Etudiant etudiant)
la méthode renvoie vrai si l'étudiant passé en paramètre est dans le groupe
Ensuite, comment faire pour comparer identifier de manière unique un étudiant?
Ben là, c'est la responsabilité de la classe Etudiant !
Fais en sorte d'étendre les méthodes equals(Object obj) et hashCode() dans Etudiant.
equals(Object obj) permet de comparer deux objets entre eux pour savoir s'ils sont égaux. Deux objets égaux ont forcement le même hashcode
hashCode() permet de donner un "code" ou une valeur numérique qui permet de classer l'instance de ton objet à un indice donné. Deux objet ayant le même hashcode ne sont pas forcément égaux.
Chaque classe ayant sa responsabilité, le code pour savoir si un étudiant est dans le groupe devient trivial
1 2 3
| public boolean estDansLeGroupe(Etudiant etudiant){
return listEtudiants.contains(etudiant);
} |
Si un étudiant doit OBLIGATOIREMENT être dans un groupe, tu peux aussi lui rajouter un paramètre dans le constructeur qui l'affectera automatiquement au groupe en question (quitte à l'ajouter dans d'autres groupes ensuite)
1 2 3
| public Etudiant(Groupe groupe){
groupe.ajouteEtudiant(this);
} |
Partager