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

Collection et Stream Java Discussion :

Déclarer un attribut de type tableau dans une classe


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    INGÉNIEUR TELECOM
    Inscrit en
    Avril 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : INGÉNIEUR TELECOM
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2016
    Messages : 5
    Par défaut Déclarer un attribut de type tableau dans une classe
    Bonjour,

    Je débute en Java et suis confronté à problématique, pour laquelle je n´ai pas encore trouvé de réponse precise.

    Admettons que l´on souhaite une classe Elève dont les attributs sont: nom, âge. Jusque là pas de problème, cela donne le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class Personne {
    	public String nom;
    	public int âge;
    	}
    Maintenant, si l´on souhaite avoir un attribut qui puisse contenant de plusieurs valeurs et dont la taille n´est pas fixe. Dans notre exemple, prenons une lsite de notes.
    Chaue objet de la classe Elève pouvant avoir plusieurs notes.
    Exemple:
    élève1 a les notes suivantes: {10, 15, 11}
    élève2 a les notes suivantes: {8, 13}

    Question: comment déclarer le tableau notes qui est un attrribut de la classe Elève?.

    Merci pour votre aide.

    Bahrony

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    avoir un attribut qui puisse contenant de plusieurs valeurs et dont la taille n´est pas fixe
    Au vu de tes contraintes, je pense que tu as davantage besoin d'une liste que d'un tableau. Tu dis que sa taille n'est pas fixe mais connais-tu cette taille avant d'instancier ton élève ? Ou est-ce que même après instanciation, ce nombre va évoluer ?

    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Membre du Club
    Homme Profil pro
    INGÉNIEUR TELECOM
    Inscrit en
    Avril 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : INGÉNIEUR TELECOM
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2016
    Messages : 5
    Par défaut
    Merci pour ta réponse.
    Après l'instanciation de chaque objet élève, on peut considérer dans mon cas que la taille de la liste n'évoluera pas. Cela dit, chaque objet élève a son propre nombre de notes.
    J'ai lu la documentation java sur les tableaux et les listes, mais je ne trouve aucun exemple où un attribut est de type liste.
    Admettons donc que l'on fasse appel à la classe arraylist, comment déclarer l'attribut notes dans mon cas et comment affecter la liste de notes pour chaque objet?

    Merci encore.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Par défaut
    Citation Envoyé par Bahrony Voir le message
    chaque objet élève a son propre nombre de notes.
    Donc ça veut dire que le premier élève peut avoir 100 notes et le dernier 15 par exemple du coup je déduis que la taille augmente en fonction du nombre des notes de l'élève courant.

    Citation Envoyé par Bahrony Voir le message
    comment déclarer l'attribut notes dans mon cas et comment affecter la liste de notes pour chaque objet?
    Tu fais comme les attributs "nom et âge". Exemple : "public ArrayList<Eleve> notes; "
    Mais je pense que ce n'est pas nécessaire d'avoir un attribut de type List.L'idéal serait de créer un bean qui définit les caractéristiques d'un élève et ajouter ce bean dans la liste au moment du traitement.

  5. #5
    Membre du Club
    Homme Profil pro
    INGÉNIEUR TELECOM
    Inscrit en
    Avril 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : INGÉNIEUR TELECOM
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2016
    Messages : 5
    Par défaut
    Merci pour vos explications.
    Après avoir étudié les différentes voies que vous m'avez suggérées, i apparaît que les tableaux sont le moyen le plus simple à mettre en oeuvre pour mon problème.
    Le sujet est donc clos et merci encore pour vos précieux conseils.
    Bahrony.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Kasko Voir le message
    Mais je pense que ce n'est pas nécessaire d'avoir un attribut de type List.L'idéal serait de créer un bean qui définit les caractéristiques d'un élève et ajouter ce bean dans la liste au moment du traitement.
    Qu'est ce que ça peut bien vouloir dire ? Qu'est-ce que cette histoire de bean vient faire la-dedans : en quoi un bean ajouté au moment du traitement (de quoi d'ailleurs ?) dans une liste (laquelle ?) permettra de modèliser un ensemble de notes d'un élève ?
    Le choix est clairement indiqué dans la réponse de Robin56 :
    1. le nombre de notes de varie pas pour un éléve (on a toutes les notes d'un éléve en même temps) : un tableau est suffisant
    2. le nombre de notes peut varier au cours de la vie d'une instance d'élève (on ajoute des notes, plus tard en ajoute de nouvelles, on en enlève éventuellement, etc) : liste
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Qu'est ce que ça peut bien vouloir dire ? Qu'est-ce que cette histoire de bean vient faire la-dedans : en quoi un bean ajouté au moment du traitement (de quoi d'ailleurs ?) dans une liste (laquelle ?) permettra de modèliser un ensemble de notes d'un élève ?[/LIST]
    Bonjour joel.drigo.
    Je n'ai pas dit qu'un tableau n'est pas suffisant mais j'ai essayé d'indiquer une autre manière de traiter le problème de Bahrony.
    En fait,pour répondre à tes questions,j'ai supposé que Bahrony interagit avec une base de données.
    Si tel est le cas,personnellement j'ai l'habitude de réussir en procédant ainsi.

    voici un code qui fonctionne très correctement chez moi.Vous remarquerez que j'ai commenté les parties qui répondent aux questions.
    Pour le bean :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    package LesObjets;
    public class Note {
       private Etudiant etudiant;
       private Matiere matiere;
       private Tabledate tableDate;
       private double Note;
       private Long valide;
     
    public Etudiant getEtudiant() {
    	return etudiant;
    }
     
    public void setEtudiant(Etudiant etudiant) {
    	this.etudiant = etudiant;
    }
     
     
    public Matiere getMatiere() {
    	return matiere;
    }
     
    public void setMatiere(Matiere matiere) {
    	this.matiere = matiere;
    }
     
    public Tabledate getTableDate() {
    	return tableDate;
    }
     
    public void setTableDate(Tabledate tableDate) {
    	this.tableDate = tableDate;
    }
     
    public double getNote() {
    	return Note;
    }
     
    public void setNote(double note) {
    	Note = note;
    }
     
    public Long getValide() {
    	return valide;
    }
     
    public void setValide(Long valide) {
    	this.valide = valide;
    }
     
    }
    Pour la partie traitement dont je parlais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    package DAO;
     
    import static DAO.DAOUtilitaire.fermeturesSilencieuses;
     
    import java.sql.Connection;
    import java.sql.Date;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
     
    import DAOException.DAOException;
    import LesObjets.Note;
     
    public class NoteDaoImpl implements NoteDao {
      	private static final String selectionNoteCons = "call SelectionNoteCoigger()";
     
    private  Note Stokage(ResultSet resultat) throws SQLException {
     
                   //Ici j'instancie mon bean note
                   Note note = new Note();
     
    		EtudiantDao etudiantDao = daoFactory.getEtudiantDao();
    		MatiereDao matiereDao = daoFactory.getMatiereDao();
    		dateDao DateDao = daoFactory.getDateDao();
     
           //Ici j'affecte des valeurs aux différents attributs de mon javabean note.
            note.setEtudiant(etudiantDao.EtudiantSelectionne(resultat.getString("NumEtudiant")));
            note.setMatiere(matiereDao.SelectionneMatiere(resultat.getLong("NumMatiere")));
            note.setTableDate(DateDao.SelectionneDate(resultat.getDate("Date")));
            note.setNote(resultat.getDouble("note"));
    	note.setValide(resultat.getLong("Valide"));
     
    		//Je retourne le bean note
    		return note;
    	}
    }
     
     
    @Override
    	public List<Note> ListeNote() throws DAOException {
            Connection connexion = null;
            PreparedStatement preparedStatement = null;
            ResultSet resultat = null;
     
           //Ici j'instancie un objet List de type note.
            List<Note> listeNotes = new ArrayList<Note>();
            try{
            	connexion = daoFactory.getConnection();
            	preparedStatement = connexion.prepareStatement(selectionNoteCons);
            	resultat = preparedStatement.executeQuery();
            	while(resultat.next()){
     
                            //Ici j'ajoute bien le bean note retourné par la méthode Stokage dans mon objet List.Ce qui m'a amené à dire  d'ajouter le bean dans la liste lors du traitement.
            		listeNotes.add(Stokage(resultat));
            	}
            }catch(SQLException s){
            	throw new DAOException("La sélection a échouée.");
            }finally{
            	fermeturesSilencieuses(resultat,preparedStatement,connexion);
            }
     
                    //et enfin,je retourne ma liste
    		return listeNotes;
    	}

Discussions similaires

  1. [Tableaux] Gestion tableau dans une classe
    Par lolodev dans le forum Langage
    Réponses: 5
    Dernier message: 06/08/2007, 13h19
  2. Type DWord dans une classe non managé
    Par julioMEL dans le forum C++/CLI
    Réponses: 1
    Dernier message: 26/04/2007, 20h08
  3. [Tableaux] Déclaration d'un tableau dans une classe
    Par rochenico dans le forum Langage
    Réponses: 4
    Dernier message: 22/12/2006, 11h29
  4. Comment définir un tableau dans une classe?
    Par Pragmateek dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 30/04/2006, 20h34
  5. tableau dans une classe
    Par blastmanu dans le forum C++
    Réponses: 6
    Dernier message: 18/04/2006, 14h18

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