IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Classes en Java


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1
    Par défaut Classes en Java
    hey tout le monde ;
    je suis débutante avec java j'ai un petit soucis avec ;
    là je dois relier deux classe :
    une classe Etudiant : chaque etudiant doit etre affecté à un groupe

    une classe Groupe : le groupe contient des étudiants

    // j'ai pu faire ça avec une collection :

    public void Ajouteretudiant (Etudiant newetu ) {

    etudiants.add(newetu) ; }

    mais j'arrive pas à faire la première : comment peut-t-on dire si on ajoute un étudiant à l'arraylist on lui donne le libellé de ce groupe !
    Merci pour vos réponses

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Lorsque tu ajoutes un étudiant, tu l'ajoutes à ta liste et tu lui affectes le groupe en attribut.
    Donc en gros dans ta class Groupe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void ajouterEtudiant(Etudiant newEtu) {
     
    this.etudiants.add(newEtu);
    newEtu.setGroupe(this)
     
    }
    Penses a respecter les conventions de nommages

    EDIT : Si un étudiant possède obligatoirement un groupe, ça me semble plus logique de demander un Groupe dans le constructeur de Etudiant.
    Dans ce constructeur, tu appel groupe.addEtudiant(this) [-> qui se chargera d'ajouter l'étudiant a l'ArrayList] et this.groupe = groupe.

    EDIT2 : Une List c'est bien, un Set c'est peut-être mieux si un groupe ne peut pas avoir 2 ou + fois le même étudiant.
    Dernière modification par Invité ; 25/09/2015 à 14h40.

  3. #3
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Etudiant(Groupe groupe){
           groupe.ajouteEtudiant(this);
    }

  4. #4
    Membre émérite Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Etudiant(Groupe groupe){
     groupe.ajouteEtudiant(this);
    }
    Ça pique les yeux d'utiliser dans le constructeur de l'objet. C'est pas interdit, mais c'est une mauvaise habitude.

    Il vaut mieux utiliser une fonction assurant la cohérence des liaisons, genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Etudiant createEtudiantToGroupe(Groupe groupe){
     Etudiant et = new Etudiant();
     groupe.ajouteEtudiant(et);
     return et;
    }

Discussions similaires

  1. [Obfuscateur] Comment crypter mes .class en java
    Par ferma dans le forum EDI et Outils pour Java
    Réponses: 1
    Dernier message: 01/01/2006, 23h36
  2. [Reflection]parser une classe de java.
    Par burkan21 dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 02/12/2005, 21h05
  3. Réponses: 7
    Dernier message: 21/06/2005, 17h04
  4. Réponses: 5
    Dernier message: 15/02/2005, 10h32
  5. [PL/SQL]Appel d'une classe/méthode java
    Par marsup54 dans le forum SQL
    Réponses: 4
    Dernier message: 30/06/2004, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo