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

avec Java Discussion :

développeurs: j'ai envie de comprendre la généricité


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Par défaut développeurs: j'ai envie de comprendre la généricité
    Bonjour,

    quelqu'un aurait il la patience de m'expliquer en des mots simples ce qu'est la généricité en java ; le principe et l'utilité...

    Jai lu ces deux tutos :

    http://gfx.developpez.com/tutoriel/java/generics/

    http://java.developpez.com/faq/java/...IONS_info_list


    Mais je les trouve un peu trop compliqué pour moi...J'ai un peu compris, mais pas vraiment vraiment...

    J'ai compris que ça permet de paramétrer des collections et que ça facilite le typage...Mais pourquoi et comment...Je ne sais pas...Et que ça facilite le travail des développeurs java...Il doit y a voir des développeurs içi...pourriez vous m'expliquer s'il vous plaît...


    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    Bien pour prendre un exemple : les ArrayList.

    De base dans une ArrayList tu peux mettre n'importe quoi puisque elle est conçu pour des objets Object.

    Mais du coup si tu laisses comme ca, tu sais pas ce que l'utilisateur de ta liste va mettre dedans, ca pose des soucis. Ensuite quand tu recuperes un objet de ta liste il sera alors du type Object, et tu es obligé de caster l'objet dans la classe qu'il est vraiment pour utiliser ses méthodes ... à condition de connaitre la classe dont il est vraiment ! Si tu as mis n'importe quoi dedans, tu le sais plus, ou difficilement.

    Grace a la genericité, tu peux typer la liste en precisant les objets qu'elle contient, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ArrayList<Bonbon> var = new ArrayList<Bonbon>();
    La maintenant ton ArrayList ne contient que des Bonbon et si jamais tu essayes d'y mettre autre chose, ca ne marchera pas !
    En plus, désormais, quand tu voudras recuperer un objet de ta liste, il sera automatiquement du bon type : Bonbon.

    Ca c'est pour la base base. Ensuite coté programmation d'une classe avec genéricité plutot que seulement son utilisation, ca aide dans de nombreux cas où une classe réalise la meme chose mais dans des cas differents avec des objets differents.
    Notamment tu peux definir une classe Caisse par exemple qui dedans aura une liste qui pourra contenir soit des Billets soit des Pieces. Et à la création de la caisse, tu definis ce qu'elle contient, inutile d'ecrire deux classes differentes !

    Pour programmer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class Caisse<T> {
     
      private ArrayList<T> argent = new ArrayList<T>();
     
    ...
    }
    On a donc une caisse qui contient une liste d'objets generiques dont le type sera precisement a la creation de la classe comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /* Caisse contenant des Billets */
    Caisse<Billet> caisse = new Caisse<Billet>();
     
    /* Caisse contenant des Pieces */
    Caisse<Piece> caisse = new Caisse<Piece>();
    et ce sans avoir à modifier la classe Caisse.

    Voila, j'espere t'avoir aidé.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Par défaut
    Bonjour ,


    oui, tu m'as bien aidée...Je commence enfin à comprendre...MERCI pour ces excellentes explications

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Par défaut
    Bonjour,

    concernant les casts, je ne suis pas vraiment au point....par exemple, pourquoi a-t-on besoin de caster ici j'ai compris mais pas vraiment vraiment)



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    List employes = new ArrayList();
    Employe e = new Employe("Dupond");
    employes.add(e);
    . . . // On ajoute d’autres employés
    for (int i = 0; i < employes.size(); i++) {
     
    System.out.println(
    ((Employe) employes.get(i)).getNom());
    }// que signifie cette ligne, on caste quoi en quoi exactement...je n'ai pas vraiment compris.


    Merci pour votre patience, je suis étudiante en informatique mais débutante en java, désolée...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    Tu as besoin de caster parce qu'a la declaration tu n'as pas mis la genericité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List<Employe> employes = new ArrayList<Employe>();
    Il faut précisé quel objet tu veux, je l'avais expliqué plus haut pourtant :p

    Si tu dis rien pour lui c'est Object, donc faut caster pour avoir un Employe ...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Par défaut
    Citation Envoyé par Wydicule Voir le message
    Tu as besoin de caster parce qu'a la declaration tu n'as pas mis la genericité :

    Il faut précisé quel objet tu veux, je l'avais expliqué plus haut pourtant :p

    Si tu dis rien pour lui c'est Object, donc faut caster pour avoir un Employe ...
    Oui oui, c'est tout à fait évident pour moi DESORMAIS


    Merci pour votre aide !

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/06/2014, 16h25
  2. Les logiciels indispensables pour Développeurs selon vous ?
    Par Straahd dans le forum Débats sur le développement - Le Best Of
    Réponses: 287
    Dernier message: 24/10/2010, 11h14
  3. Réponses: 21
    Dernier message: 20/02/2006, 14h39
  4. Guide du développeur Delphi devant un problème
    Par Bestiol dans le forum Delphi
    Réponses: 0
    Dernier message: 24/03/2004, 22h51
  5. [Procédure][java] A n'y rien comprendre
    Par Stessy dans le forum SQL
    Réponses: 2
    Dernier message: 18/03/2004, 15h05

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