Sommaire
Bonjour, Bonjour 😁
Avez-vous déjà observé un enfant jouant avec des “Legos” ? Empilées les unes sur les autres, elles créent des structures complexes qui sont à la fois uniques et fondamentalement similaires parce qu'elles partagent toutes les mêmes éléments de base…
Et si je vous disais que jouer aux Legos ressemble à notre sujet du jour …
Bienvenue dans le concept de la programmation orientée objet (POO) ! Cela peut sembler un concept obscur, un labyrinthe de jargon conçu pour déconcerter, mais n'ayez crainte, ça va le faire !
Nous sommes sur le point d'embarquer pour un voyage passionnant qui illuminera ce sujet et vous fera passer du statut de novice à celui de ninja de la POO (bon … peut être pas ! mais quand même 😛). L'avenir n'attend pas et chaque seconde qui passe voit la création d'innombrables nouvelles "classes", de nouveaux "attributs" et de nouvelles “méthodes” dans le monde.
Êtes-vous prêt à décoder les mystères de la POO ? Alors ! C’est parti ! 😁
Accrochez-vous, car nous sommes sur le point de rentrer dans le vif du sujet, Alors, qu'est-ce que la programmation ou le développement logiciel ?
Imaginez que vous êtes un marionnettiste, mais au lieu de tirer les ficelles d'un petit Pinocchio en bois, vous pilotez votre ordinateur. Vous lui demandez d'effectuer des tâches spécifiques, comme afficher une page web, calculer une équation ou même exécuter un jeu vidéo. Vous avez l'impression d'exercer un pouvoir sur votre machine, n'est-ce pas ?
En gros, la programmation est un moyen de dire à un ordinateur ce qu'il doit faire. Mais voilà le hic : les ordinateurs, contrairement à nous, humains intelligents et géniaux (bah quoi ? 😛), ne comprennent pas les langues humaines. Ils parlent leur propre langue, le binaire (une série de 1 et de 0), et ce n'est pas très convivial.
Par conséquent, pour communiquer avec les ordinateurs, nous devons utiliser un langage de programmation.
Les langages de programmation sont comme les glaces. Il existe des tonnes de parfums (ou de types), et si certains préfèrent la simplicité de la vanille (comme Python), d'autres préfèrent quelque chose d'un peu plus complexe avec beaucoup de garnitures (comme C++).
Il existe généralement trois grands types de programmation :
Chaque type de programmation a ses avantages et ses inconvénients, et celui que vous choisissez d'utiliser dépend souvent de la tâche à accomplir, tout comme vous n'utiliseriez pas un marteau pour couper un morceau de bois...
Après, certains "types" sont, je trouve, plus difficiles à prendre en main que d'autres (c'est de toi que je parle, la fonctionnelle)
Mais pour l'instant, nous allons nous concentrer sur la programmation orientée objet. Alors, attachez vos ceintures, car nous sommes sur le point d'être "objectivés" (dans le bon sens du terme) !
Dans la prochaine section, nous nous pencherons sur la définition, l'histoire et l'importance de la POO. Restez donc dans les parages si cela vous intéresse 🙂.
Maintenant que nous avons plongé le monde de la programmation, il est temps d'allez en profondeurs : le monde de la programmation orientée objet, ou comme on à l'habitude de l'appeler : la POO.
Alors, qu'est-ce que la POO ?
En termes simples, la POO est un paradigme de programmation (un terme sophistiqué pour désigner un style ou une manière de programmer) dans lequel nous organisons notre code autour d'objets ...
Un objet est tout ce que vous voulez qu'il soit ! Il peut s'agir d'une personne, d'une voiture, d'un compte bancaire ou même d'un pixel sur votre écran. Le point essentiel est que les objets sont comme l'ADN de la POO. Ils contiennent des données (appelées attributs) et du code pour manipuler ces données (appelées méthodes).
Imaginez un objet "voiture". Il possède des attributs tels que la couleur, le modèle et la vitesse actuelle, ainsi que des méthodes telles qu’accélérer, freiner et tourner. Dans la POO, vous créez des instances de ces objets et vous les faites interagir les uns avec les autres, un peu comme vous le feriez avec des petites voitures.
Le concept de la POO n'est pas apparu du jour au lendemain. Comme la plupart des choses brillantes, il a évolué au fil du temps. Le premier langage de programmation à utiliser les principes de la POO était Simula, développé dans les années 1960 pour simuler des systèmes du monde réel. Toutefois, c'est le langage Smalltalk, développé dans les années 1970, qui a réellement mis la POO sous les feux de la rampe.
Depuis lors, de nombreux autres langages ont adopté les principes de la POO, notamment les très populaires Java et Python,.
Et tout comme un bon vin, la POO s'est améliorée avec le temps, prouvant son utilité dans une variété d'applications (ce sjte internet, par exemple 😁).
Vous vous demandez peut-être : "Pourquoi devrais-je m'intéresser à la POO ?". Eh bien, la POO est aussi importante pour le développement de logiciels que le café l'est pour une session de code qui dure toute la nuit (oui, j'ai connu ça 😛). Voici pourquoi :
En résumé, la POO change la donne (enfin a changé la donne, car elle est très répandue aujourd'hui). Ce n'est pas seulement un style de programmation ; c'est une façon de penser, un paradigme qui vous guide pour aborder la résolution de problèmes comme si vous construisiez avec des Legos, un bloc (ou un objet) à la fois.
Vous êtes toujours avec moi ? Parfait 😁 ! Car dans la prochaine section, nous allons nous plonger dans les concepts de base de la programmation orientée objet. Nous parlerons de classes, d'attributs, de méthodes et de bien d'autres choses encore ! Alors, prenez une tasse de café (ou de thé, si vous préférez) et continuons de creuser en profondeur dans la programmation orientée objet !
Très bien, il est temps de plonger dans les concepts de base de la POO. Ne vous inquiétez pas, j'ai préparé mon traducteur pour convertir le langage des développeurs en langage humain. Attachez vos ceintures, c'est parti !
Vous vous souvenez de l'analogie avec les Lego ? Dans la POO, un "objet" est comme un simple bloc de Lego. Chaque objet est une instance d'une "classe", qui définit les attributs et les méthodes communs à tous les objets de ce type (oui, dis comme ça ça l'air compliquer, mais, ne vous inquiétez pas).
Pensez à une classe comme à un plan de création d'objets. Par exemple, supposons que nous ayons une classe appelée "Chien". Cette classe définit les attributs communs à tous les chiens, tels que la race, l'âge et la couleur, ainsi que des méthodes telles qu’aboyer, manger et dormir. Chaque chien de votre programme serait alors un objet créé à partir de cette classe, avec son propre ensemble d'attributs.
Les "attributs" sont les caractéristiques d'un objet, les détails qui le définissent. Par exemple, dans notre classe "Chien", la race, l'âge et la couleur seraient des attributs. Ce sont des adjectifs qui décrivent un objet.
Les "méthodes", quant à elles, sont les actions qu'un objet peut effectuer. Ce sont des verbes. Dans notre classe "Chien", aboyer, manger et dormir seraient des méthodes.
En POO, on parle d'"héritage" lorsqu'une classe (l'enfant) hérite des attributs et des méthodes d'une autre classe (le parent). Cela permet de réutiliser le code et de l'organiser de manière logique et hiérarchique.
Pensez-y comme à un véritable héritage. Si vos parents vous lèguent une voiture de collection, vous en "héritez". De même, si nous créons une classe appelée "Caniche" qui hérite de la classe "Chien", la classe "Caniche" aura automatiquement les mêmes attributs et méthodes que la classe "Chien". Les caniches sont des petits chiens, après tout !
"Polymorphisme" est un grand mot effrayant qui signifie simplement "plusieurs formes". Dans la POO, il désigne la capacité d'un objet à prendre plusieurs formes.
Prenons l'exemple de notre classe Chien avec une méthode appelée "son". Pour un objet Chien, le son peut être "aboyer". Mais si nous avons un autre objet de la classe Oiseau, le son pourrait être "gazouille". Le même nom de méthode "son" se comporte différemment selon les classes. C'est le polymorphisme en action !
"L'encapsulation" consiste à cacher des données. Il s'agit de protéger les attributs et les méthodes d'une classe contre les interférences extérieures et les abus. Il s'agit d'une bulle protectrice qui protège le fonctionnement interne d'un objet du reste du programme.
C'est comme un journal secret fermé par un cadenas. Vous (l'objet) pouvez y écrire (modifier les attributs) et le lire (appelé des méthodes), mais personne d'autre ne peut le faire, à moins que vous ne leur fournissiez une clé (méthodes d'accès, souvent appelées les "getter" et les "setter").
Enfin, l'"abstraction" consiste à simplifier les systèmes complexes en les modélisant de manière à mettre en évidence leurs caractéristiques essentielles et à masquer les détails. C'est comme lorsque vous utilisez une voiture : vous n'avez pas besoin de savoir comment fonctionne le moteur pour la conduire.
Dans la POO, l'abstraction permet de créer une interface simple et de haut niveau pour un code complexe, ce qui le rend plus facile à comprendre et à utiliser. Il s'agit de prendre du recul pour voir la forêt (la fonctionnalité globale) au lieu de se perdre dans les arbres (les détails du code).
Maintenant que nous avons abordé la théorie de la POO, regardons-la en action. Car, soyons honnêtes, "voir c'est croire", et je suis sûr que vous êtes impatient de voir ces concepts "en vrai".
La programmation orientée objet est omniprésente dans le monde de la programmation. Des jeux au développement web, des applications mobiles à l'intelligence artificielle, on là retrouve un peu partout :
Retroussons maintenant nos manches et voyons quelques exemples de code réels dans plusieurs langages de POO populaires : Python, Java, C++ et PHP (bah oui, forcément ...).
Python, avec sa syntaxe simple et ses capacités puissantes, est un excellent langage pour démontrer la POO. Reprenons l'exemple de notre classe "Chien" :
Ici, nous avons défini une classe "Chien" avec des attributs "race" et "couleur", et une méthode aboyer(). Nous avons ensuite créé un objet mon_chien à partir de la classe "Chien" et utilisé ses attributs et ses méthodes. Plutôt sympa, non ?
Java est un pilier dans le monde de la POO. Voyons à quoi ressemblerait la classe Chien en Java :
Java est un peu plus verbeux que Python, mais les concepts restent les mêmes. Nous avons défini une classe Chien avec des attributs et des méthodes, et créé un objet monChien à partir de cette classe.
Le C++, un langage puissant à la syntaxe complexe, offre un support solide à la POO. L'utilisation de classes et d'objets est au cœur du C++. Voyons à quoi ressemblerait notre fidèle classe Chien en C++ :
Dans ce code, nous faisons la même chose que dans les deux autres langages précédents, toujours la création, l'instanciation et l'utilisation d'une classe.
La syntaxe et la structure du C++ peuvent sembler un peu intimidantes, surtout si vous venez d'un langage comme Python ou PHP, mais les principes de la POO restent cohérents.
PHP, conçu à l'origine comme un langage de script pour le web, supporte également la programmation orientée objet et l'utilise largement. Revenons sur notre classe Chien en PHP :
Nous faisons encore une fois exactement la même chose que précédemment, création, instanciation et l'utilisation d'une classe et ses méthodes.
Comme vous pouvez le constater, la structure est assez similaire à celle d'autres langages de programmation orientée objet. Cela montre la beauté et la cohérence de la programmation orientée objet POO à travers différents langages. Même si la syntaxe varie, les principes sous-jacents restent les mêmes.
A noter qu'ici, les attributs sont affichés comme étant "public", ce que l'on ne fait normalement jamais, on accède aux attributs via des méthodes, et les attributs restent en "privé" ("private" en anglais, et oui, on ne code pas en français).
Maintenant que nous avons acquis une bonne base de la POO, il est temps de passer à l'épreuve de force. Opposons nos nouvelles connaissances à d'autres paradigmes de programmation et voyons ce qu'il en est.
Vous vous souvenez de ces vieux films en noir et blanc ? La programmation procédurale est un peu comme ça : classique, directe et un peu linéaire. Il s'agit d'écrire une liste d'instructions que l'ordinateur doit suivre, étape par étape. C'est un peu comme une recette de cuisine : faites ceci, puis ceci, puis cela.
La programmation orientée objet, en revanche, ressemble à un film moderne avec de multiples intrigues et flashbacks. Il s'agit de créer des objets, de définir leurs attributs et de décider des actions qu'ils peuvent entreprendre. L'accent est mis sur les objets et leurs interactions, et non sur la séquence d'actions.
La programmation fonctionnelle est comme un mathématicien pur : elle aime l'immuabilité, évite les effets de bord et traite les fonctions comme des citoyens de première classe. Imaginez une bibliothèque parfaitement organisée où chaque livre est toujours à sa place et où vous n'êtes pas autorisé à apporter vos propres livres (ou à modifier ceux qui sont déjà là).
La programmation orientée objet, en revanche, est comme une ville animée : elle se nourrit d'interactions, de changements et de modélisation du monde réel. Il s'agit d'encapsuler les données et le comportement dans des objets et de les laisser interagir, tout comme les habitants d'une ville.
Comme toutes les technologies dans le monde du développement, la programmation orientée objet POO à sont lot de fan et ses détracteurs, voyons quelques-uns de ses avantages et de ses inconvénients
En fin de compte, le meilleur paradigme de programmation dépend du problème à résoudre, des exigences spécifiques du projet et des préférences du développeur. Comme un outil dans une boîte à outils, chaque paradigme a sa place, et la POO ne fait pas exception.
Maintenant que nous avons parcouru le sujet de la POO, vous avez peut-être envie de vous plonger dedans. Alors, voici quelques idées pour vous aider à vous lancer :
Se lancer dans l'aventure de la POO peut être très passionnant, à condition d'avoir de bonnes ressources
En ce qui concerne les outils, un bon environnement de développement intégré (IDE) sera votre compagnon le plus important. Personnellement j'utilise beaucoup les "IDE" de chez Jetbrains, et le plus souvent PHPStorm, puisque je code beaucoup avec PHP.
Il y a d'autre environnement de développement, qui contrairement a ceux de Jetbrains sont gratuit, le plus connu est Visual studio code, si vous voulez allez dans l'univers Microsoft (car le C# est aussi de la POO), il y a Microsoft Visual Studio, que l'on retrouve souvent en entreprise, il dispose d'une version gratuite.
En tant que débutant de la POO, voici quelques conseils à garder à l'esprit :
Et c'est tout ! Avec ces ressources et ces conseils, vous pouvez vous lancer dans l'aventure de la POO. N'oubliez pas qu'il ne s'agit pas d'arriver rapidement à destination, mais de prendre le temps d'apprendre, de toute façon dans les métiers du dev et de la technologie, vous en apprendrez tout le temps.
Cet article touche à sa fin, j'ai tenté de vous donner les bases sur la POO, les objets (des classes instanciées, c'était pour vérifier si vous avez suivi...).
Sachez que dans le monde du dev, vous la retrouverez partout, enfin, sauf si vous utilisez Redux, là c'est de la fonctionnelle.
Bon courage et à la prochaine 😁