Ouvrez le cours interactif au format Jupyter (.ipynb) pour exécuter le code pas à pas.
1. Pourquoi utiliser la POO pour les structures de données ?
Une structure de données n’est pas seulement un ensemble d’éléments, c’est aussi un comportement défini par les opérations que l’on peut effectuer dessus. En programmation orientée objet, on décrit ce comportement à l’aide d’une interface (ensemble des méthodes disponibles) et on propose une implémentation.
Dans la partie précédente, nous avons implémenté des structures de façon fonctionnelle : des fonctions indépendantes manipulaient une liste pour ajouter, retirer ou tester des éléments. Ici, nous découvrons une autre façon d’implémenter les mêmes structures : la programmation orientée objet.
Ce qui lie les deux approches, c’est qu’elles réalisent exactement le même comportement : la pile permet toujours d’empiler, dépiler, et vérifier si elle est vide. La différence réside seulement dans la manière d’organiser le code :
- en version fonctionnelle, les opérations sont séparées des données ;
- en version objet, données et opérations sont regroupées dans une
classe.
L’originalité de la POO est donc de rassembler dans une même entité les données et les méthodes qui agissent sur elles, ce qui rend le code plus lisible, plus proche des objets du monde réel, et plus facile à réutiliser.
2. Problème de départ
Comment représenter une pile (structure LIFO) ? On veut pouvoir :
- empiler un élément,
- dépiler le sommet,
- tester si la pile est vide.
En POO, on définit une classe avec ces méthodes,
puis on écrit une implémentation (par exemple en utilisant une liste Python).