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 :

que choisir (tableau avec java)


Sujet :

Collection et Stream Java

  1. #21
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Citation Envoyé par pensez en java
    Mais le polymorphisme s'occupe de découpler au niveau des types. Dans le chapitre précédant, nous avons vu comment l'héritage permet le traitement d'un objet comme son propre type ou son type de base. Cette capacité est critique car elle permet à beaucoup de types (dérivé d'un même type de base) d'être traités comme s'ils n'étaient qu'un type, et permet a un seul morceau de code de traiter sans distinction tous ces types différents. L'appel de méthode polymorphe permet à un type d'exprimer sa distinction par rapport à un autre, un type semblable, tant qu'ils dérivent tous les deux d'un même type de base. Cette distinction est exprimée à travers des différences de comportement des méthodes que vous pouvez appeler par la classe de base.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List l=new ArrayList();
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List l = new LinkedList();
    sont deux choses différentes, c'est le polymorphisme qui se charge d'aller chercher le constructeur de chaque classe... Pourtant les types sont semblables : List...

    mavina

  2. #22
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Or, dans ce cas précis, l'interface List ne décrit aucun comportement, ni sur les méthodes, ni sur le constructeur, donc encore une fois, je ne comprend pas pourquoi parle t-on de polymorphisme.
    Brrr j'ai les cheveux qui se dressent... Tu peux faire du polymorphisme avec comem classe mere une interface, dans ce cas la tu n'as jamais de polymorphisme ? Si justemenrt, admettons une Interface Bille. Elle possede la methode estBlanche() .Je crée une classe BilleNoire et une classe BilleBlanche qui implementent Bille. Dans BilleBlanche, estBlanche() retourne true. dans BIlleNoire, c'est le contraire, estBlanche() retourne false.
    Admetons que j'ai un tableau de deux Billes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bille[] b=new Bille[2];
    J'ajoute une bille blanche et une bille noire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    b[0]=new BilleBlanche();
    b[1]=new BilleNoire();
    Eh bien si l'on fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(b[0].estBlanche() + b[1].estBlanche());
    on verra apparaitre a l'écran "true false"... C'est magique non ?

    mavina

  3. #23
    Membre actif Avatar de tnodev
    Profil pro
    SSSSS
    Inscrit en
    Mai 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : SSSSS

    Informations forums :
    Inscription : Mai 2005
    Messages : 182
    Points : 231
    Points
    231
    Par défaut
    Ok, je sais comment marche java, l'héritage, et tout le tintouin...
    C'est juste que lorsque on écrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bille b = new BilleBlanche();
    C'est l'instanciation d'une classe qui implémente une interface... et encore une fois je ne sais pas si l'on peut parler de polymorphisme à cet instant précis

    OK, ok, c'est du polymorphisme...

  4. #24
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Hop hop, ni vu ni connu je place mon avis.
    Le polymorphisme n'a strictement rien à voir avec l'héritage, ca consiste juste à donner le même nom à des méthodes différentes, on les distingue alors par le type et le nombre de leurs paramètres.
    Ca n'a d'ailleurs rien à voir avec de l'orienté objet puisqu'il ne s'agit que d'une facilité dans le nommage de nos fonctions.
    Dans cas du List = new ArrayList() intervient la notion dite d'héritage, qui est une, que dis-je, LA notion importante du concept de l'orienté objet mais qui n'a rien à voir avec le polymorphisme.
    Maintenant, quand il s'agit de redéfinir une méthode d'une classe mère dans une classe fille cela s'apelle une surcharge.

    Mais je le redis: le polymorphisme n'a rien à voir avec l'héritage.

  5. #25
    Membre actif Avatar de tnodev
    Profil pro
    SSSSS
    Inscrit en
    Mai 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : SSSSS

    Informations forums :
    Inscription : Mai 2005
    Messages : 182
    Points : 231
    Points
    231
    Par défaut
    Citation Envoyé par zais_ethael
    Hop hop, ni vu ni connu je place mon avis.
    Le polymorphisme n'a strictement rien à voir avec l'héritage, ca consiste juste à donner le même nom à des méthodes différentes, on les distingue alors par le type et le nombre de leurs paramètres.
    Ca n'a d'ailleurs rien à voir avec de l'orienté objet puisqu'il ne s'agit que d'une facilité dans le nommage de nos fonctions.
    Dans cas du List = new ArrayList() intervient la notion dite d'héritage, qui est une, que dis-je, LA notion importante du concept de l'orienté objet mais qui n'a rien à voir avec le polymorphisme.
    Maintenant, quand il s'agit de redéfinir une méthode d'une classe mère dans une classe fille cela s'apelle une surcharge.

    Mais je le redis: le polymorphisme n'a rien à voir avec l'héritage.
    Non, le polymorphisme est profondément lié à l'héritage.
    La surcharge de fonction, même nom, paramètre différent, c'est autre chose.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public void getName(String name) {...}
    public void getName(Integer int) {...}
    Maintenant, quand il s'agit de redéfinir une méthode d'une classe mère dans une classe fille cela s'apelle du polymorphisme...

    Surcharge = overload
    Polymorphisme = override

  6. #26
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Je viens d'aller relire un cours et je dois reconnaitre qu'effectivement je mélangeais les deux appelations.
    La srucharge consiste bien à donner le même nom à deux fonctions et le polymorphisme à en redéfinir dans une classe fille.

  7. #27
    Membre actif Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Points : 278
    Points
    278
    Par défaut
    En fait toutes ces notions surcharge/redifinition/instanciation dans une classe héritée font partie du polymorphisme....

    on parle d'ailleurs de polymorphisme de méthodes, d'objets, etc

  8. #28
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Pas tout à fait d'accord pour ce dernier point. Tout peut-être polymorphe sauf les constructeur. C'est la seule chose qui ne peut hériter et ce pour une bonne raison: on doit savoir ce qu'on instancie (sauf si on utilise la réflexion mais ca c'est une autre histoire). Dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List list = new ArrayList()
    on instancie bien un ArrayList qui juste après est casté automatiquement en List (puisqu'un ArrayList est un List dans la pensée objet).

Discussions similaires

  1. Que choisir : PHP ou Java ?
    Par Community Management dans le forum Général Conception Web
    Réponses: 200
    Dernier message: 13/06/2014, 17h00
  2. Que choisir : PHP versus Java ?
    Par Sniper37 dans le forum Général Conception Web
    Réponses: 164
    Dernier message: 28/04/2009, 16h50
  3. Que choisir ? Delphi ou Java ?
    Par Jean-Yves dans le forum Débats sur le développement - Le Best Of
    Réponses: 89
    Dernier message: 19/04/2008, 15h40
  4. Que choisir C++ ou Java pour de petites applications ?
    Par kedare dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 23/02/2006, 22h48
  5. [Collections] Que choisir (tableau ou Map)
    Par thomine dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 22/06/2005, 16h25

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