Généricité en Java Virginia Aponte CNAM-Paris 10 septembre 2016 VirginiaAponte (CNAM-Paris) Ing39 10septembre2016 1/22 1. Définitions, exemples VirginiaAponte (CNAM-Paris) Ing39 10septembre2016 2/22 Paramétrisation Paramétrisation d’un code Mécanismepuissantdelaprogrammationquiconsisteàgénéraliseruncode, demanièreàluipasserenparamètrelesvariablesdontildépend. lecodedevientréutilisablesurtoutevaleurdesparamètres. Exemple:afficheruntableaud’entiers boucleaffichantuntableautparticulier⇒codefigépourt,non reutilisable. méthodeparamétréeparn’importequeltableaux⇒codereutilisable pourtouttableauconcret,den’importequelletaille. VirginiaAponte (CNAM-Paris) Ing39 10septembre2016 3/22 Deux sortes de paramétrisation Pardonnées:uneméthodeestparamétrablepar variablesdésignantdesvaleursquelconques(entiers,booleans, uneinstaced’unobjet) ⇒coderéutilisablesurn’importequelledonnée(dubontype). Partypes:uneclasseouméthodeestparamétrablepar variablesdésignantdestypesquelconques ⇒réutilisablesurn’importequeltypeconcret. VirginiaAponte (CNAM-Paris) Ing39 10septembre2016 4/22 Définition de généricité Généricité Paramétrisationd’unmorceaudecode(classes,méthodes),paruntype. Exemple: classeArrayList<T>:soncodeparamétréparlavariabledetypeT <T>:signifie«n’importequeltypenonprimitif» méthodesdelaclasse:décritespourn’importequelT ré-utilisablepourn’importequelT:new ArrayList<Compte>(). Ici,T=Compte. VirginiaAponte (CNAM-Paris) Ing39 10septembre2016 5/22 Exemple généricité : classe ArrayList<E> public class ArrayList<E> implements List<E>, Collection<E>, Iterable<E> ...{ public boolean add(<E> el) {...} public E get(int i){...} .... } E:type(quelconque)desélémentsdelaliste; implanteplusieursinterfacesgénériques; lesméthodesontdestypesgénériques: boolean add(<E> el)ajouteunélémentdetypeEdansla liste; VirginiaAponte (CNAM-Paris) Ing39 10septembre2016 6/22 Exemple généricité (2) : utilisation UnArrayList<T>avecT=Compte: ArrayList<Compte> comptesBNP = new ArrayList<Compte>(); Compte c1 = new Compte("Lucie", 150.0); comptesBNP.add(c1); // dans liste comptes banque comptesBNP:listedecomptesdelabanque VirginiaAponte (CNAM-Paris) Ing39 10septembre2016 7/22 Généricité en Java EmployéedemanièreintensivedanslabibliothèqueCollections: Typesgénériques: interfacesgénériques(List<T>,Set<T>,...) classes(implantations)génériques:(LinkedList<T>, ArrayList<T>,...) méthodesgénériques nombreusesimplantationsgénériquesprédéfinies:(LinkedList<T>, ArrayList<T>,...) VirginiaAponte (CNAM-Paris) Ing39 10septembre2016 8/22 2. Porquoi la généricité? VirginiaAponte (CNAM-Paris) Ing39 10septembre2016 9/22 Intérêt de la généricité Letypageestplusprécis⇒plusd’erreurssontdetectéesàla compilation: sansgénéricité:certaineserreursnesontdetectablesquelorsde l’exécution; sansgénéricité:lecodeestsouventpluscomplexe. VirginiaAponte (CNAM-Paris) Ing39 10septembre2016 10/22
Description: