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

Langage Java Discussion :

Accessibilité Aux Attributs d'une Super Classe


Sujet :

Langage Java

  1. #1
    Membre actif Avatar de Goupo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 505
    Points : 229
    Points
    229
    Par défaut Accessibilité Aux Attributs d'une Super Classe
    Salut,
    Le problème vient, je pense, que je ne peux pas voir certains attributs et notamment ceux de type String. Que ce soit pour les CD, Vidéo ou Jeux, c'est pareil.

    On voit ci-dessous que certains attributs sont null... (Commentaire est volontairement vide) et on remarque que les attributs de type int sont affichés contrairement à ceux de type String.

    Quel est le problème et comment le résoudre?

    Voilà mon code, par soucis de concision, je n'ai mis que le code pour les CD.

    Merci d'avance pour vos idées, remarques, ...

    Citation Envoyé par Console
    =============================================================
    CD
    =============================================================
    California (44:13 mn)
    |----+Groupe : null
    |----+Nombre de Pistes : 10
    |----+Genre : null
    |----+Note : 17
    |----+Commentaire :
    |----+Disponnible

    Aenima (68:35 mn)
    |----+Groupe : null
    |----+Nombre de Pistes : 9
    |----+Genre : null
    |----+Note : 18
    |----+Commentaire :
    |----+Disponnible
    Classe Médiathèque (classe éxécutive)
    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
    public class Mediatheque {
    	public static void main(String[] args) 
    	{
    		//Création d'un échantillon de Médias
    		CD CD1 = new CD("California", "Mr Bungle", "John Zorn", "Ambiance Psychédélique Trash", "44:13", 10, 17);
    		CD CD2 = new CD("Aenima", "Tool", "X", "Rock Progressif", "68:35", 9, 18);
    		Video Vid1 = new Video("Tueurs Nés", "Oliver Stone", "Warner Bros.","Action Policier", "1:58", 20);
    		Video Vid2 = new Video("Brazil", "Terry Guilliam", "Fox-Hachette", "Comédie dramatique, Science Fiction", "2:25", 19);
    		Jeu Jeu1 = new Jeu ("Gran Theft Auto San Andreas", "RockStar Games", "Take 2 Interactive", "Action", "PC", 16);
    		Jeu Jeu2 = new Jeu ("Final Fantasy 6", "SquareSoft", "SquareSoft", "RPG", "SuperNintendo", 20);
     
    		//Création de la BDD
    		Database BDD = new Database();
     
    		BDD.ajouteCD(CD1);
    		BDD.ajouteCD(CD2);
    		BDD.ajouteVideo(Vid1);
    		BDD.ajouteVideo(Vid2);
    		BDD.ajouteJeu(Jeu1);
    		BDD.ajouteJeu(Jeu2);
     
    		System.out.println("##################################################################################");
    		System.out.println("                                   Médiathèque");
    		System.out.println("##################################################################################");
    		System.out.println();
    		BDD.list();
    	}
    }
    Classe Database
    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
    public class Database
    {
        private ArrayList lesCD;
        private ArrayList lesVideos;
        private ArrayList lesJeux;
     
        /**
         * Construit une base de données vide.
         */
        public Database()
        {
            this.lesCD = new ArrayList();
            this.lesVideos = new ArrayList();
            this.lesJeux = new ArrayList();
        }
     
        /**
         * Ajoute un CD dans la BDD
         * @param leCD
         */
        public void ajouteCD(CD leCD)
        {
            this.lesCD.add(leCD);
        }
     
    ...
     
        /**
         * Affiche une liste de tous les CD, Vidéos et Jeux dans la console.
         */
        public void list()
        {
            // affiche la liste de CD
        	System.out.println("=============================================================");
        	System.out.println("                            CD");
        	System.out.println("=============================================================");
     
        	if (this.lesCD.size() != 0)
        		{
        		for(Iterator iter = this.lesCD.iterator(); iter.hasNext(); ) {
        			CD unCD = (CD)iter.next();
        			unCD.print();
        			System.out.println();   // ligne vide entre des éléments
        			}
        		}
        		else
        		{
        			System.out.println("Il n'y a pas de CD dans la BDD.");
        		}
        ...
        }
    }
    Classe Media
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class Media {
    	protected String nom;
    	protected String auteur;
    	protected String producteur;
    	protected String commentaire;
    	protected boolean emprunté;
    	protected int note;
    	protected String genre;
    ...
    }
    Classe CD
    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
    public class CD extends Media
    {
        private int nbDePistes;
        private String durée;
     
        /**
         * Initialise le CD.
         */
        public CD(String leTitre, String leGroupe, String producteur, String genre, String laDurée, int nbPistes, int note)
        {
        	super.nom = leTitre;
        	super.commentaire = "";
        	super.note = note;
        	super.emprunté = false;
        	super.producteur = producteur;
            this.nbDePistes = nbPistes;
            this.durée = laDurée;
        }
     
        /**
         * Affiche les détails concernant ce CD dans la console.
         */
        public void print()
        {
            System.out.print(super.nom + " (" + this.durée + " mn)");
            System.out.println("\n|----+Groupe : " + super.auteur);
            System.out.println("|----+Nombre de Pistes : " + this.nbDePistes);
            System.out.println("|----+Genre : " + super.genre);
            System.out.println("|----+Note : " + super.note);
            System.out.println("|----+Commentaire : " + super.commentaire);
            if (super.emprunté)
            {
            	System.out.println("|----+Emprunté");
            }
            else
            {
            	System.out.println("|----+Disponnible");
            }
        }
    }

  2. #2
    Membre à l'essai Avatar de mathieumadrid
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 39
    Points : 23
    Points
    23
    Par défaut
    Essaye de faire ceci dans ta classe Cd :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public CD(String leTitre, String leGroupe, String producteur, String genre, String laDurée, int nbPistes, int note)
    {
        super(leTitre,"",producteur,"",false,note,genre);
        nbDePistes = nbPistes;
        durée = laDurée;
    }
    Et puis quand tu crées un CD, c'est mieux de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Media CD1 = new CD("California", "Mr Bungle", "John Zorn", "Ambiance Psychédélique Trash", "44:13", 10, 17);
    C'est ce que l'on appelle le polymorphisme. Grâce à ce système, tu pourra ajouter un Media (au lieu d'un CD) dans ta classe DataBase.

  3. #3
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    Plusieurs choses :

    - d'une part, évite de mettre des caractères accentués dans ton code. Cela peut compiler mais également produire des erreurs.
    - d'autre part, lorsque tu effectue des appels à des propriétés de ta classe, mets plutôt this au lieu de super, même si ces attributs sont hérités d'une super-classe.

    En espérant que ça t'aide.

  4. #4
    Membre actif Avatar de Goupo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 505
    Points : 229
    Points
    229
    Par défaut
    Merci.

    J'ai tous les accents par de simples 'e' et tous les super par des this. Apparemment le problème ne vient pas de ça puisque j'ai toujours les null. Enfin, mon code est plus 'correct'.

    Mathieu Madrid, le code que tu me propose implique-t-il que j'aie un constructeur dans la classe Média?

    Edit: Faut croire que oui...

  5. #5
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    423
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 423
    Points : 303
    Points
    303
    Par défaut
    salut,
    ton vient problème vient que tu veut afficher des attributs que tu n'a pas affectés de valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    System.out.print(super.nom + " (" + this.durée + " mn)");
            System.out.println("\n|----+Groupe : " + super.auteur);
            System.out.println("|----+Nombre de Pistes : " + this.nbDePistes);
            System.out.println("|----+Genre : " + super.genre);
            System.out.println("|----+Note : " + super.note);
            System.out.println("|----+Commentaire : " + super.commentaire);
    dans la classe CD tu n'as pas affectés de valeurs à : auteur, genre...
    regarde bien la classe et tu remarquera ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    super.nom = leTitre;
        	super.commentaire = "";
        	super.note = note;
        	super.emprunté = false;
        	super.producteur = producteur;
            this.nbDePistes = nbPistes;
            this.durée = laDurée;
    dans le constructeur de CD tu n'affecte de valeurs qu'à durée et nbDePistes.

  6. #6
    Membre à l'essai Avatar de mathieumadrid
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 39
    Points : 23
    Points
    23
    Par défaut
    Oui, ceci implique qu'il te faut un constructeur dans ta classe Media (je pensais qu'il y en avait un). Sinon, c'est vrai que ton groupe et genre sont toujours des chaînes vides.

  7. #7
    Membre actif Avatar de Goupo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 505
    Points : 229
    Points
    229
    Par défaut
    Merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Accès aux attributs d'une autre classe
    Par alexmam15 dans le forum Débuter
    Réponses: 5
    Dernier message: 25/02/2011, 10h26
  2. [PHP 5.3] Empêcher l'accés aux attributs d'une classe ?
    Par tintin72 dans le forum Langage
    Réponses: 1
    Dernier message: 20/08/2010, 15h58
  3. Réponses: 2
    Dernier message: 26/11/2009, 15h00
  4. Lier des composants graphique aux attributs d'une classe
    Par galeo27 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 17/11/2009, 18h52
  5. Accès aux attributs propres à une classe fille
    Par jamilya dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 24/12/2008, 16h06

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