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 :

classe et méthode


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut classe et méthode
    Bonjour,

    voilà, j'ai un très long programme et un petit problème

    J'ai une classe abstraite Animal et 2 animaux dérivant de Animal, disons Chat et Girafe. J'ai aussi créé une interface AnimauxDeCompagnie qui contient une méthode jouer(). Chat implémente AnimauxDeCompagnie mais pas Girafe.
    Mon problème est que j'ai une nouvelle classe Zoo qui utilise un tableau private, nommons le TableauAnimal contenant des éléments Animal. Lorsqu'un Animal est aussi AnimauxDeCompagnie, je veux pouvoir faire tableauAnimal[i].jouer() mais à la compilation, j'ai une erreur car Animal ne contient pas la méthode jouer(). Une idée ?

    Voici une idée du programme : Dans mon exemple, j'utilise aussi une méthode estUnAnimalDeCompagnie() dans un if() ; je pense que ça serait mieux si je pouvais m'en passer.

    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
     
    public abstract class Animal{
    public boolean estUnAnimalDeCompagnie(){
    return true;
    }
    ...}
     
    public interface AnimauxDeCompagnie{
    public void jouer();
    public boolean estUnAnimalDeCompagnie()
    ...
    }
     
    public class Chat extends Animal implements AnimauxDeCompagnie{
    public void jouer(){
    System.out.println("Le chat joue");
    }
     
    public class Girafe extends Animal{
    ...
    }
     
    public class Zoo{
    private Animal [] tableauAnimal = new tableauAnimal[10];
    //on remplit le tableau de girafes et de chats
    for(int i=0;i<10;i++){
    if(tableauAnimal[i].estUnAnimalDeCompagnie())
    {tableauAnimal[i].jouer()}
    }
    }
    Merci !

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Citation Envoyé par HighSchool2005
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(int i=0;i<10;i++){
    if(tableauAnimal[i].estUnAnimalDeCompagnie())
    {tableauAnimal[i].jouer()}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(int i=0;i<tableauAnimal.length;i++){
      if(tableauAnimal[i] instanceof AnimalDeCompagnie) {
        ((AnimalDeCompagnie) tableauAnimal[i]).jouer()
      }
    }

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    tu dois caster explicitement ton Animal en AnimauxDeCompagnie et appeler dessus la méthode "jouer".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(int i=0;i<10;i++){
       if(tableauAnimal[i].estUnAnimalDeCompagnie()) {
           ((AnimauxDeCompagnie)tableauAnimal[i]).jouer();
       }
    }
    Tu peux utiliser instanceof pour tester le type de l'animal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       if (tableauAnimal[i] instanceof AnimauxDeCompagnie) {
           ((AnimauxDeCompagnie)tableauAnimal[i]).jouer();
       }
    ainsi tu peux enlever la méthode estUnAnimalDeCompagnie()!

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut
    Merci beaucoup !

Discussions similaires

  1. Documentation des classes et méthodes
    Par nicocolt dans le forum Langage
    Réponses: 2
    Dernier message: 02/02/2007, 17h14
  2. Pattern singleton ou Classe avec méthodes statiques ?
    Par Claythest dans le forum Langage
    Réponses: 3
    Dernier message: 11/12/2006, 11h28
  3. Classe et méthode Javascript
    Par Gunn_ dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/07/2006, 13h10
  4. Pointeurs de classes et méthodes
    Par insomniak dans le forum C++
    Réponses: 9
    Dernier message: 10/05/2006, 15h18
  5. Déclaration de classes et méthodes externes
    Par rulianf dans le forum C++
    Réponses: 6
    Dernier message: 15/09/2005, 15h26

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