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

Java Discussion :

Méthodes de classe héritée


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut Méthodes de classe héritée
    Bonjour,

    voici mon problème :

    j'ai une classe MaterielSalle et une classe Salle qui hérite de MaterielSalle. Dans la classe MaterielSalle j'ai comme variable num (un int, le n° du materiel ou de la salle) et dans la classe Salle, nbplace (un int) et ordi (un boolean). Et enfin j'ai une classe LesMateriauxSalles qui une variable les_matsal (un TreeSet qui contient les éléments de MaterielSalle.
    Dans LesMateriauxSalles j'ai une méthode recherche_salle() les paramètres de la méthode sont des infos donner par l'utilisateur.

    voici mon code :
    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
     
    public void rechercher_salle (int nbplace, boolean ordi)
    {
          int nbp = nbplace;
          boolean o = ordi;
          boolean resa=false;    
     
          Iterator<MaterielSalle> it = les_matsal.iterator();
          while (it.hasNext() && (resa==false))
          {
    		MaterielSalle ms = it.next();
     
    		if ((nbp==ms.getNbplace()) && (o==ms.getOrdi()))
    		{						
    			JOptionPane.showMessageDialog(null,"Recherche realiser");
                     }
            }
    }
    Pourquoi getNbplace() et getOrdi() ne fonctionnent ? Ce n'est pas possible de les utiliser ? Et sinon comment faire pour récupérer ces informations ?

    Merci par avance...

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ces méthodes se trouvent dans "Salle" et pas "MaterielSalle", comme tu déclare ta variable comme MaterielSalle ms , le compilateur n'autorise que les méthode de MaterielSalle. Pour avoir accès aux autres méthodes, il faut typecaster:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Salle ms = (Salle)it.next();
     
    		if ((nbp==ms.getNbplace()) && (o==ms.getOrdi()))
    		{						
    			JOptionPane.showMessageDialog(null,"Recherche realiser");
                     }
    Ceci suppose bien entendu que tous ce qui est présent dans ton itérateur est bien des instance de Salle, sinon tu aura un ClassCastException à l'exécution.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut
    Dans mon itérateur j'ai une instance de MaterielSalle, comment faire alors?

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ben sur cette instance là, tu ne pourra jamais appeler ces méthodes puisqu'elles n'existent pas. Donc faire un test pour éliminer ceux là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    MaterielSalle ms = it.next();
        if (ms instanceof Salle){				
            Salle salle = (Salle)ms;
    		if ((nbp==salle.getNbplace()) && (o==salle.getOrdi()))
    		{						
    			JOptionPane.showMessageDialog(null,"Recherche realiser");
                     }
         }

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut
    En fait dans ma méthode je voudrais pouvoir récupérer le numéro de l'élément correspondant.
    Iterator<MaterielSalle> it = les_matsal.iterator();
    while (it.hasNext() && (resa==false))
    {
    Salle ms = (Salle)it.next();

    if ((nbp==ms.getNbplace()) && (o==ms.getOrdi()))
    {
    int rech_sa = ms.getNumsalle();

    JOptionPane.showMessageDialog(null,"Recherche realiser");
    }
    }

    Ce n'est donc pas possible?
    Ma class Salle ne doit pas hériter de MaterielSalle alors??

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/12/2010, 21h30
  2. Forme d'appel de méthode réservé méthodes de classe
    Par Chicobrasil dans le forum Langage
    Réponses: 16
    Dernier message: 03/01/2006, 17h43
  3. Réponses: 2
    Dernier message: 04/12/2005, 21h10
  4. [C#] Ajout d'une méthode à la classe DropDownList
    Par Scorff dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/08/2005, 14h23

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