Programmation orientée objet (POO) est un paradigme de programmation qui constitue la pierre angulaire du développement logiciel moderne. Bien que la POO ne soit pas le seul paradigme de programmation qui existe, je dirais qu’il est le plus important d’avoir une base solide et, lorsqu’il est utilisé correctement, il peut conduire à un logiciel plus solide et plus robuste. Mais qu’est-ce que la POO et comment s’assurer de bien la comprendre ? Explorons.
À un niveau élevé, en POO, il y a 3 piliers principaux à comprendre pour réduire la POO :
- Encapsulation avec des classes
- Héritage
- Polymorphisme (le plus important de loin)
L’encapsulation est la capacité d’inclure des données qui décrivent l’objet et les fonctions utilisées pour manipuler ces données dans un seul conteneur de modules.
En POO, celles-ci sont généralement appelées classes et sont au centre du paradigme. La variable résultante lorsque la variable est déclarée est appelée un objet. Une partie importante est l’abstraction afin que seules les fonctionnalités nécessaires soient exposées.
- Privé/Interne : Les méthodes et propriétés sont accessibles depuis d’autres méthodes de la même classe. Tout ce qui se trouve en dehors de la classe ne devrait pas pouvoir accéder à ces membres/méthodes. Ceci est généralement désigné par Privé ou Protégé.
- Public/Externe: Les méthodes et propriétés sont accessibles depuis l’extérieur de la classe.
Un exemple serait si vous programmiez un jeu de cartes. Dans votre classe de réduction de cartes, voudriez-vous que quelqu’un d’autre modifie le nombre de cartes dans le jeu ? Probablement pas.
L’héritage est la possibilité de prendre une classe existante et d’étendre ses fonctionnalités pour former une autre classe.
Pourquoi est-ce important? Parce qu’il prend en charge la réutilisabilité avec la réutilisation du code. En effet, la nouvelle classe a accès à toutes les fonctionnalités parent. La classe enfant doit simplement ajouter de nouveaux attributs et méthodes spécifiques à ses besoins.
- La généralisation est la relation telle que la sous-classe est une variante du parent. C’est-à-dire qu’une camionnette « est une » automobile.
- La spécialisation est la relation telle que la classe « a une » sous-classe. C’est-à-dire qu’une automobile « a un » moteur.
Le polymorphisme est la capacité d’objets similaires à répondre différemment au même message.
Le dernier pilier de la POO est étroitement lié à l’héritage et pourtant il est sans doute bien plus important. Le préfixe poly signifie plusieurs ; morph signifie forme. Le polymorphisme fait alors référence à la capacité d’un seul type ou classe à prendre plusieurs formes.
Comment cela se fait-il ? Avec substitution de méthode :
Dans l’exemple ci-dessus, vous pouvez voir que la voiture électrique et la camionnette héritent de l’automobile et remplacent toutes deux le comportement de démarrage car elles ont toutes deux des besoins très différents. Une voiture électrique n’a pas besoin de démarrer un moteur alors qu’une camionnette le ferait (en supposant qu’elle soit à essence).
Points clés à retenir
- Les objets bien conçus manipulent les données ou l’état d’un objet en transmettant des messages via l’interface de l’objet.
- Contrôler un objet via son interface garantit qu’il se comporte de manière sûre et que l’état interne reste valide.
- La capacité de modéliser le monde réel est un avantage important de la POO.
- Les objets doivent être autonomes pour pouvoir tenir debout tout seuls.