This is an old revision of the document!
Dans la conclusion du cours, nous affirmons qu’un intérêt du polymorphisme, c’est de pouvoir écrire un algorithme « générique », c’est à dire un algorithme qui pourra fonctionner pour des objets représentant des données de plusieurs types. Nous considérons un algorithme de tri très simple qui fonctionne sur des entiers :
void insertion_sort(std::vector<int>& anArray) { for (int i = 0; i < anArray.size(); i++) { for (int j = i + 1; j < anArray.size(); j++) { if (anArray[i] > anArray[j]) std::swap(anArray[i], anArray[j]); } } }
Cet algorithme fonctionne uniquement pour des entiers. Nous nous proposons de transformer cette fonction afin qu’elle puisse aussi bien trier des entiers mais aussi des réels ou des complexes.
Pour ce faire, nous concevons une classe « abstraite » ayant comme nom Base
qui expose les fonctions nécessaires à l’écriture de l’algorithme de tri.
void insertion_sort(std::vector<Base*>& anArray);