Depuis sa version 4 ; PHP intègre les concepts de Programmation Orienté Objet. Très à la mode ; cette façon de programmer vous sera très utile. Néanmoins ; elle introduit foule de nouveaux concepts à nos méthodes de développement plus classique.
Il existe beaucoup d’articles et de tutoriel concernant la POO. Mais dans la plupart des cas ; ces articles sont écrits avec des exemples en C++ ou en Java.
Et encore trop peu avec des illustrations en PHP.
Cette semaine ; à l’occasion de la sortie de la version 5 de TitaXium ; je vous propose une série de 6 articles introduisant la Programmation Orienté Objet avec des exemples en PHP.
Ainsi ; en 6 jours ; j’espère faire découvrir à ce qui ne le connaissent pas encore ; le monde des classes ; des méthodes et des objets. Et d’ici à ce week-end ; vous serez sans doutes à même d’écrire vous-même vos propres classes !
Introduction
Prés requis
Avant d’entrer dans le vif du sujet ; je déconseille cet article à toutes les personnes ayant un niveau de débutant en développement.
Cet article s’adresse à des développeurs PHP confirmés ; qui ont de l’expérience. Pour comprendre cet article ; il vous faudra être à l’aise avec tous les outils utilisés dans les langages procéduraux ; et plus particulièrement en PHP.
De plus ; cet article n’est qu’une introduction. Une première étape dans la compréhension de la POO.
Nous ne traiterons donc pas de concepts avancés comme par exemple l’héritage ou les design pattern.
Comparaison avec un développement procédural
En développement classique ; vous connaissez déjà les types de variable les plus courant. Entiers, réels, Tableaux, Chaines de caractères, booléen … Tout ca n’a plus de secrets pour vous.
Vous avez aussi l’habitude de réunir vos traitements récurrents au sein de procédures ou de fonctions. C’est ce que nous faisons tous avec nos db_connect() ou encore les afficher_machin($truc).
Pourtant ; la POO (Programmation Orienté Objet) est un terme qui vous parait obscur et barbare. Vous en entendez parler depuis des années sans trop savoir ce qui se cache derrière.
Imaginez un instant ; qu’en plus des types courant que nous avons cité ci-dessus ; vous puissiez vous même définir vos propres types de valeurs. Avec des comportements et des structures qui leur sont propre. Imaginez vos variables comme des entités ; des individus contenant des informations et pouvant effectuer des traitements divers sur celles-ci.
Vous ne voyez toujours pas ou je veux en venir ?
Si on prend une variable simple ; un entier par exemple ; cette variable peut contenir une valeur. Et sur cette valeur je peux effectuer des traitements (l’additionner ; la comparer ; la diviser etc). En théorie objet ; toutes ces entités que nous utilisons ; nous appelons cela des objets (ou des instances de classe). Et ces traitements ce sont des méthodes. Mon entier sera donc un objet ; sur lequel je pourrais appliquer les méthodes d’addition ; de comparaison ; de division etc.
En plus des objets simple que nous connaissons en développement procédural classique ; nous pouvons donc définir de nouveaux objets. Avec de nouvelles méthodes.
Vous verrez que ce concept d’objets et plus naturel qu’il n’y parait de prime abord. Car tout ce qui nous entoure n’est qu’objets ! Le clavier et la souris que vous avez sous votre nez sont des objets.
Qui contiennent des valeurs et sur lequel vous appliquez des méthodes.
Par exemple ; votre souris est un objet. Qui contient les valeurs x et y (pour connaitre sa position) et sur lequel vous pouvez appliquer les méthodes deplacer(), click_droit(), click_gauche() …
Exemple employé
Pour illustrer mon propos ; je vais utiliser un exemple très simple. Et très commun.
Prenez un stylo. Un de ces stylos à bille commerciaux que l’on trouve n’importe où. Il s’agit bien d’un objet. Un objet que vous pouvez facilement synthétiser le fonctionnement en POO.
Que peut-on faire avec un stylo ou, quelles seront les méthodes de notre objet ? Exactement ce que vous faites avec un stylo traditionnel. Ecrire, cliquer sur ses fesses pour faire apparaitre ou disparaitre la mine ; ou encore observer le niveau de sa réserve d’encre. Et bien ce sera très exactement les méthodes que nous allons retrouver dans notre objet.
Quelles sont les propriétés que possèdes un stylo ? Quels sont les attributs qui font de lui qu’il est différent d’un autre stylo ? Quelles valeurs vont être contenues notre stylo ? Ici nous nous posons la question des valeurs qui seront attachés à chacun de nos stylos.