Il me semblait que Genericité* et template c'est la même chose. Template est le nom C++ et il ne faudrait pas utiliser ailleurs qu'en C++.
Il ne faut pas confondre un paradigme avec son implémentation.
Sinon, l'implémentation de la généricité à la C++ est mauvaise car en effet elle est pas beaucoup plus intéligente qu'un préprocesseur. Ainsi une classe générique (le .h et le .cpp associé) ne peuvent être compilés séparément ce qui pose des problèmes de surreté du code : en gros on doit attendre l'instanciation du composant générique pour avoir les éventuels messages d'erreurs. Donc on ne sait que la classe est correcte au niveau de l'interface qu'une fois celle-ci livré.
Un deuxième problème est que la généricité contrainte n'est pas présente en C++ (il me semble mais ca fait longtemps que j'ai pas touché au C++). C'est à dire on ne peut pas fabriquer une classé générique Pile en précisant que T doit être sous-type de Vaisselle, donc permettre l'instanciation d'une pile d'Assiette mais pas celle d'une pile de Poulet.
D'ailleurs, dans leurs projets, la généricité en Java sera-t-elle contrainte ?
* Un autre synomyme qui en jette auprès des filles est "Polymorphisme paramétrique" (attention, ça marche pas avec toutes les filles)
[^] # Re: Pour rentrer dans les details
Posté par MrTout . En réponse à la dépêche Java Virtual Machine 1.4.2 beta. Évalué à 3.
Il ne faut pas confondre un paradigme avec son implémentation.
Sinon, l'implémentation de la généricité à la C++ est mauvaise car en effet elle est pas beaucoup plus intéligente qu'un préprocesseur. Ainsi une classe générique (le .h et le .cpp associé) ne peuvent être compilés séparément ce qui pose des problèmes de surreté du code : en gros on doit attendre l'instanciation du composant générique pour avoir les éventuels messages d'erreurs. Donc on ne sait que la classe est correcte au niveau de l'interface qu'une fois celle-ci livré.
Un deuxième problème est que la généricité contrainte n'est pas présente en C++ (il me semble mais ca fait longtemps que j'ai pas touché au C++). C'est à dire on ne peut pas fabriquer une classé générique Pile en précisant que T doit être sous-type de Vaisselle, donc permettre l'instanciation d'une pile d'Assiette mais pas celle d'une pile de Poulet.
D'ailleurs, dans leurs projets, la généricité en Java sera-t-elle contrainte ?
* Un autre synomyme qui en jette auprès des filles est "Polymorphisme paramétrique" (attention, ça marche pas avec toutes les filles)