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 :

tableau objet méthode


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Septembre 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2012
    Messages : 69
    Par défaut tableau objet méthode
    Bonjour,

    J'ai un petit problème qui me bloque au niveau d'un tableau d'objet.
    Imaginons :

    Classe Animal
    Classe Chien extends Animal
    Classe Chat extends Animal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Animal[] tableau  = new Animal[5];
    Animal[0] = new Chien();

    J'aimerai pouvoir appeler les méthodes présente dans la classe Chien mais je ne vois pas comment m'y prendre. Je déclare ma méthode dans la classe Animal puisqu'elle est présente dans Chien et Chat, mais ne prend pas les mêmes paramètres.

    Et c'est la que je bloque, je n'arrive pas à appeler ma méthode.


    En vous remerciant,
    Rémy.

  2. #2
    Membre Expert
    Avatar de olivier.pitton
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2012
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 355
    Par défaut
    Salut,

    Soit tu définis une méthode dans Animal que tu redéfinis dans les sous-classes (donc qui prennent les mêmes paramètres).

    Soit tu cast directement ton Animal dans la sous classe désirée.

    Une solution pour le cast serait de créer une méthode abstraite dans Animal du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    abstract public boolean isDog();
    Qui renverrait vrai pour le Chien et faux pour les autres. Si tu rajoutes d'autres animaux cette solution n'est pas terrible mais elle fonctionne.

    Le mieux serait que tu fasses une méthode générique redéfinie dans les sous-classes.

  3. #3
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Septembre 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2012
    Messages : 69
    Par défaut
    Merci de votre réponse rapide.

    Mon problème est de rester générique au maximum puisque le tableau est remplis par l'utilisateur et par différents types (8 types différents).

    J'aimerai pouvoir faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Animal[] tableau  = new Animal[5];
    Animal[0] = new Chien(); 
    Animal[1] = new Chat();
     
    Animal[0].maMethode(String str, boolean bool)
    Animal[1].maMethode(int a, int b)

    Concernant la méthode générique redéfini, pouvez vous l'expliquer ? Je suis loin d'être un expert.

    [EDIT] en me relisant j'ai remarqué que ma derniere phrase pourrai paraître arrogante mais ce n'est pas le cas

  4. #4
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Tu as visiblement un probleme d'architecture. Si maMethode a des parametres differents en fonction du type d'animal, alors, par définition, elle n'est pas générique et ne peut pas etre définie au niveau de la classe abstraite.
    De maniere générale, on utilise plutot une fonction avec peu voir aucun parametre dans la classe abstraite et c'est la classe dérivée elle meme qui se débrouille pour avoir les parametres dont elle a besoin (par exemple en les récupérant via son constructeur).
    Ce que je viens de dire est très général mais il faudrait que tu exposes clairement quel est ton problème pour voir si c'est jouable de maniere générique.

  5. #5
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Septembre 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2012
    Messages : 69
    Par défaut
    Hum je viens de m'en rendre compte qu'effectivement j'ai un petit problème d'architecture

    Je vais donc retirer les paramètres et me débrouiller pour les récupérer ailleurs

    Merci

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/02/2007, 20h49
  2. [tableau objet] impossible à remplir
    Par vasilov dans le forum C++
    Réponses: 6
    Dernier message: 23/03/2006, 14h26
  3. [POO] Tri tableau objets
    Par Metallic-84s dans le forum Langage
    Réponses: 4
    Dernier message: 21/02/2006, 19h53
  4. Réponses: 4
    Dernier message: 16/02/2006, 17h45
  5. tableau objet
    Par harris_macken dans le forum C++
    Réponses: 9
    Dernier message: 20/06/2005, 21h04

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