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 :

Parcours Tableau dynamique


Sujet :

Collection et Stream Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Parcours Tableau dynamique
    Bonjour,

    Voici mon probleme :

    J'ai une super-classe "Vehicule" et deux sous-classes "Voiture", "Moto".
    Je stocke dans un tableau dynamique de type "Vehicule" des instances de "Voiture" et "Moto".

    Du coup j'aimerais donc parcourir le tableau de "Vehicule" et acceder aux methods des instances..

    Par exemple

    Voiture v1 = .....

    (Parcours du tableau) : v1.methods().

    Et je ne sais que faire; merci de m'aider..

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2013
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

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

    Informations forums :
    Inscription : Octobre 2013
    Messages : 131
    Points : 203
    Points
    203
    Par défaut
    Si j'ai bien compris ce que tu veux voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public abstract class Vehicule {
     
    protected abstract void demarrer();
    protected abstract void mettreDeLessence();
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Voiture extends Vehicule {
    protected void demarrer() {
    // code pour demarrer une voiture
    }
     
    protected void mettreDeLessence() {
    // code pour mettre de lessence dans une voiture
    }
     
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Moto extends Vehicule {
    protected void demarrer() {
    // code pour demarrer une moto
    }
     
    protected void mettreDeLessence() {
    // code pour mettre de lessence dans une moto
    }
     
     
    }
    et donc dans le main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static void main(String[] args) {
    ArrayList<Vehicule> list = new ArrayList<Vehicule>();
    Vehicule v1 = new Voiture();
    Vehicule m1 = new Moto();
    list.add(v1);
    list.add(m1);
    for (Vehicule v : list) {
        v.demmarer(); // Selon l'object v, la fonction demarrer du vehicule correspondant sera appellee
        v.mettreDeLessence(); // Selon l'object v, la fonction mettreDeLessence du vehicule correspondant sera appellee
    }
    }
    Est ce bien ce que tu voulais ?

  3. #3
    Membre habitué

    Homme Profil pro
    Developpeur
    Inscrit en
    Mars 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Mars 2011
    Messages : 115
    Points : 188
    Points
    188
    Par défaut
    Et pour l’accès au méthode particulière des classes filles, une manière simple c'est d'utiliser instanceOf et puis tu fais le cast
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if(v instanceof Moto) {
         Moto t = (Moto)v;
         t.methodeMoto();
    } 
    else if (v instanceof Voiture) {
         Voiture vt = (Voiture)v;
         vt.methodeVoiture();
    }
    Innovation = Blending of idea , science and practice engineering

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Merci pour vos réponses.
    J'ai finalement utilisé la manière simple :-)
    Et ça marche !

  5. #5
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2013
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

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

    Informations forums :
    Inscription : Octobre 2013
    Messages : 131
    Points : 203
    Points
    203
    Par défaut
    Le probleme avec ce type de code utilisant instanceOf est que si demain tu rajoutes un nouveau vehicules, il va falloir repasser sur l'ensemble de ton code ou tu auras utiliser instanceOf pour y rajouter le nouveau type. Pas terrible.

  6. #6
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Comme l'a dit Yonito, ca revient à faire de l'objet sans utiliser l'objet. C'est quand meme tres dommage.
    De plus, j'ajouterais que ca masque tres probablement un soucis de conception. Si tu as reellement besoin de faire ca, c'est que tu ne devrais pas avoir une liste de vehicules mais plutot 2 listes (Voiture et Moto).

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/03/2015, 18h31
  2. Parcour d un tableau dynamique
    Par harris_macken dans le forum Débuter
    Réponses: 12
    Dernier message: 24/05/2005, 22h23
  3. AFFICHER UN TABLEAU DYNAMIQUE
    Par ghassenus dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2002, 14h19
  4. [Kylix] tableau dynamique
    Par sdoura2 dans le forum EDI
    Réponses: 1
    Dernier message: 31/10/2002, 08h57
  5. Réponses: 4
    Dernier message: 13/05/2002, 16h43

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