Ils sont beaux, ils sont frais mes objets
S'il y a bien un mot qui doit vous frustrer depuis que vous en entendez parler, c'est celui-ci :
objet.
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 des éléments que l'on appelle des "objets" dans son code source.
Voici quelques exemples d'objets dans des programmes courants :
- Une fenêtre
- Un bouton
- Un personnage de jeu vidéo
- Une musique
Comme vous le voyez, beaucoup de choses peuvent être considérées comme 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.
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 l'ami Nab, que je remercie d'ailleurs vivement au passage.
Imaginez qu'un programmeur décide un jour de créer un programme qui permet d'afficher une fenêtre à l'écran, de la redimensionner, de la déplacer, de la supprimer... Le code est complexe : il va avoir besoin de plusieurs fonctions qui s'appellent entre elles, et de variables pour mémoriser la position, la taille de la fenêtre, 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 :
Ce programmeur est content de son code et veut le distribuer sur internet pour que tout le monde puisse créer des fenêtres sans passer du temps à tout réécrire. 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 redimensionner la fenêtre ? Autrement dit : comment utiliser ce bazar sans qu'une fiole ne nous explose entre les mains ?
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 :
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 :
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 fioles chimiques dont il faut comprendre le fonctionnement, on nous propose juste quelques boutons sur la face avant du cube : un bouton "ouvrir fenêtre", un bouton "redimensionner", 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.
Nous n'allons pas voir tout de suite comment faire pour
créer des objets. En revanche, nous allons apprendre à en
utiliser un. Nous allons nous pencher sur le cas de
string dans ce chapitre.
J'ai déjà utilisé le type string, ce n'est pas une nouveauté pour moi ! C'est le type qui permet de stocker du texte en mémoire c'est ça ?
Oui. Mais comme je vous l'ai dit il y a quelques chapitres, le type string est différent des autres.
int,
bool,
float,
double sont des types naturels du C++. Ils stockent des données très simples. Ce n'est pas le cas de
string qui est en fait... un objet ! Le type
string cache beaucoup de secrets à l'intérieur de sa boîte.
Jusqu'ici, nous n'avons fait qu'appuyer sur des boutons (comme sur les schémas), mais en réalité ce qui se cache à l'intérieur de la boîte des objets
string est très complexe. Horriblement complexe.