Qu'est-ce qu'un objet ?



Je l'ai dit et je le répète : la programmation orientée objet ne va pas instantanément révolutionner votre site web, contrairement à ce que beaucoup semblent penser. En fait, il est même probable que cela vous semble un peu inutile au début et que vous vous disiez « O.K., mais je n'en vois pas l'intérêt, ça marchait aussi bien avant ». Certaines choses vous paraîtront aussi un peu abstraites, vous ne verrez peut-être pas bien comment mettre tout cela en pratique sur votre site. C'est parfaitement normal ; lorsqu'on apprend la programmation orientée objet, il y a un petit temps d'adaptation pendant lequel on ne voit pas le rapport entre la théorie et la pratique.


Prenez quand même le temps de tout lire et de faire l'effort de comprendre ce qui est expliqué. Petit à petit, en pratiquant, vous découvrirez que cela vous permet de mieux maîtriser votre code PHP au fur et à mesure qu'il grossit, et vous verrez par la suite tout l'intérêt de ce que vous aurez appris. ;-)


Ils sont beaux, ils sont frais mes objets


Nous allons commencer par définir ce qu'on appelle un objet en programmation. Alors, de quoi s'agit-il ?


Encore un concept mystique ? Un délire de programmeurs après une soirée trop arrosée ?
Non parce que franchement, un objet, c'est quoi ? Mon écran est un objet, ma voiture est un objet, mon téléphone portable… ce sont tous des objets !


Bien vu, c'est un premier point.


En effet, nous sommes entourés d'objets. En fait, tout ce que nous connaissons (ou presque) peut être considéré comme un objet. L'idée de la programmation orientée objet, c'est de manipuler dans son code source des éléments que l'on appelle des « objets ».


Mais concrètement, c'est quoi ? Une variable ? Une fonction ?


Ni l'un, ni l'autre. C'est un nouvel élément en programmation. Pour être plus précis, un objet c'est… un mélange de plusieurs variables et fonctions. Allez ne faites pas cette tête-là, vous allez découvrir tout cela par la suite.


Imaginez… un objet


Pour éviter que ce que je vous raconte ressemble à un traité d'art moderne conceptuel, on va imaginer ensemble ce qu'est un objet à l'aide de plusieurs schémas concrets. Les schémas 3D que vous allez voir par la suite ont été réalisés pour moi par Nab, que je remercie d'ailleurs vivement au passage.


Imaginez qu'un programmeur décide un jour de créer une section de son site web qui permette d'ajouter des membres, de les placer dans des groupes (administrateurs, modérateurs…), de les bannir, de les supprimer… Le code est complexe : il a besoin de créer plusieurs fonctions qui s'appellent entre elles, des variables pour mémoriser le nom du membre, sa date d'inscription, son groupe, etc.


Il met du temps à écrire ce code : c'est un peu compliqué, mais il y arrive. Au final, le code qu'il a écrit est composé de plusieurs fonctions et variables. Quand on regarde ça pour la première fois, ça ressemble à une expérience de savant fou à laquelle on ne comprend rien (figure suivante).



Notre code ressemble à une expérience de savant fou incompréhensible



Ce programmeur est content de son code et veut le distribuer sur Internet pour que tout le monde puisse créer sa section membres sur son site sans avoir à tout recoder. Seulement voilà : à moins d'être un expert en chimie certifié, vous allez mettre pas mal de temps avant de comprendre comment tout ce bazar fonctionne.


Quelle fonction appeler en premier ? Quelles valeurs envoyer à quelle fonction pour créer le membre ?


C'est là que notre ami programmeur pense à nous. Il conçoit son code de manière orientée objet. Cela signifie qu'il place tout son bazar chimique à l'intérieur d'un simple cube. Ce cube est ce qu'on appelle un objet, comme sur la figure suivante.



Le code est placé dans une boîte qui en simplifie l'accès



Ici, une partie du cube a été volontairement mise en transparence pour vous montrer que nos fioles chimiques sont bien situées à l'intérieur du cube. Mais en réalité, le cube est complètement opaque, on ne voit rien de ce qu'il y a à l'intérieur (figure suivante).



Le programmeur ne voit pas l'intérieur (la partie compliquée)



Ce cube contient toutes les fonctions et les variables (nos fioles de chimie), mais il les masque à l'utilisateur.

Au lieu d'avoir des tonnes de tubes et de fioles chimiques dont il faut comprendre le fonctionnement, on nous propose juste quelques boutons sur la face avant du cube : un bouton « créer un membre », un bouton « bannir », etc. L'utilisateur n'a plus qu'à se servir des boutons du cube et n'a plus besoin de se soucier de tout ce qui se passe à l'intérieur. Pour l'utilisateur, c'est donc complètement simplifié.


En clair : programmer de manière orientée objet, c'est créer du code source (peut-être complexe), mais que l'on masque en le plaçant à l'intérieur d'un cube (un objet) à travers lequel on ne voit rien. Pour le programmeur qui va l'utiliser, travailler avec un objet est donc beaucoup plus simple qu'avant : il a juste à appuyer sur des boutons et n'a pas besoin d'être diplômé en chimie pour s'en servir.

Bien sûr, c'est une image, mais c'est ce qu'il faut comprendre et retenir pour le moment.


Vous avez déjà utilisé des objets !


Eh oui ! Vous vous souvenez de PDO ? Ne me dites pas que vous avez déjà oublié.

PDO est une extension de PHP et elle est codée en orienté objet. C'est ce qui explique que son mode d'emploi était légèrement différent des fonctions auxquelles nous étions habitués.

Je vous avais promis de vous expliquer plus en détail comment fonctionnait PDO, c'est maintenant l'occasion idéale ! Souvenez-vous de cette ligne qui nous permettait de nous connecter à la base de données :

<?php

$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');

?>


En fait, $bdd n'est pas une variable mais un objet. On crée un objet à l'aide de la commande new suivie du nom de la classe.


Classe ? Objet ? Quelle est la différence ?


  • La classe est un plan, une description de l'objet. Imaginez qu'il s'agit par exemple des plans de construction d'une maison.
  • L'objet est une instance de la classe, c'est-à-dire une application concrète du plan. Pour reprendre l'exemple précédent, l'objet est la maison. On peut créer plusieurs maisons basées sur un plan de construction. On peut donc créer plusieurs objets à partir d'une classe.

La figure suivante schématise ce que je viens d'exposer.



Classes et objets



Par conséquent, si l'on reprend le code précédent, vous aurez deviné que :

  • $bdd est l'objet ;
  • PDO est le nom de la classe sur laquelle est basé l'objet.


Un objet est, je vous le disais plus tôt, un mélange de fonctions et de variables. Lorsqu'on l'utilise, on fait appel à ses fonctions :

<?php

$bdd->query();

$bdd->prepare();

$bdd->execute();

?>


Cela signifie : exécuter la fonction query() de mon objet $bdd, puis la fonction prepare(), puis la fonction execute(), etc. La flèche -> est propre aux objets. Il faut donc comprendre que l'on exécute la fonction query() de l'objet $bdd qui représente la connexion à la base de données.


Autre exemple, imaginaire cette fois, pour être sûr que vous compreniez bien :

<?php

$maison1 = new Maison();

$maison2 = new Maison();

$maison1->nettoyer();

?>


Ici, nous avons plusieurs objets représentant des maisons ($maison1 et $maison2), mais nous n'appelons que la fonction nettoyer() de la maison 1 : c'est donc la seule qui sera propre.

Un des avantages de la programmation orientée objet, comme vous le voyez, c'est sa lisibilité. Ce code est facile à lire et à comprendre.

Nous allons maintenant apprendre dans la suite de ce chapitre à créer nos propres classes.

Créé avec HelpNDoc Personal Edition: Optimisez vos capacités de documentation avec un outil de création d'aide