Alors nous y voilà ! Je pense que les parties précédentes vous ont un peu mis sur la piste, mais dans ce chapitre nous allons voir en détail ce qu'est la POO.
Familiarisez-vous avec la programmation procédurale et la POO
Pour bien comprendre la POO, essayons de comprendre ce qu'est la programmation procédurale.
Attends, on ne sait déjà pas ce qu'est la POO ! Pourquoi tu nous parles d'autre chose ?
N'ayez crainte, je vous parle seulement de ce que vous savez déjà. En effet, si aujourd'hui vous deviez créer un programme, vous écririez une suite d'instructions les unes à la suite des autres. Éventuellement, vous créeriez des fonctions qui vous permettraient de réutiliser du code et de simplifier la lecture de votre programme. Eh bien on appelle ça de la programmation procédurale ! Vous voyez, rien de nouveau !
En programmation procédurale, le meilleur moyen que l'on a pour organiser notre code, ce sont les fonctions. C'est un petit peu léger...
Avec l'orienté objet, nous pouvons aller beaucoup plus loin en manipulant des objets. Pourquoi beaucoup plus loin ? Eh bien parce qu'un objet, techniquement, c'est un groupe de fonctions et de variables ! Donc on va pouvoir organiser notre code avec des groupements de fonctions et de variables.
Découvrez les objets
Qu’est-ce qu’un objet ?
Eh bien, tout simplement, un objet c'est un petit paquet de variables et de fonctions.
Prenons l'exemple du jeu "Qui est-ce ?".
Voici comment nous nous y prendrions si on voulait programmer ce jeu en orienté objet. Tout d'abord il faudrait décrire le jeu avec des objets. Alors quels objets avons-nous ?
Nous avons bien sûr des personnages. Voilà un premier objet. Ces personnages ont tous des propriétés distinctives. C'est grâce à ces propriétés que, dans le jeu, nous allons pouvoir éliminer des personnages et trouver celui choisi par le joueur adverse.
Par exemple, les personnages ont comme propriétés :
une couleur de cheveux ;
une paire de lunettes ou non ;
un sexe ;
une barbe ou non ;
une moustache ou non ;
un nom.
L'objet Personnage
contient donc 6 variables qu'on appelle ici, en POO, des propriétés.
Nous avons également un objet Plateau
qui contient tous les personnages.
On peut également penser à un objet Joueur
qui aurait les propriétés suivantes :
le personnage qu'il a sélectionné ;
son plateau de jeu ;
s'il a gagné ou non.
Enfin, on pourrait avoir un objet Partie
qui aurait comme propriétés :
les joueurs ;
le joueur dont c'est le tour ;
si la partie est finie ou non.
Avec ces 4 objets, Personnage
, Plateau
, Joueur
et Partie
, nous avons décrit très précisément les éléments qui composent le jeu. En programmation procédurale, ceci aurait été simplement une longue liste de variables. En POO, on peut classer ces informations par objet.
Mais un objet, ce ne sont pas que des propriétés. Comme je vous le disais plus haut, ce sont aussi des fonctions. Les fonctions dans un objet, on les appelle les méthodes. Les méthodes, c'est ce que l'objet peut faire, ses actions.
Par exemple, l'objet Joueur
pourrait avoir une méthode poserUneQuestion
pour en savoir plus sur le joueur adverse. Ensuite il pourrait avoir une méthode éliminer
pour éliminer certains personnages, et enfin une méthode deviner
pour deviner le personnage choisi par l'adversaire.
L'objet Partie
pourrait avoir une méthode démarrer
pour lancer la partie, remettre les personnages en place et définir le personnage sélectionné par chaque joueur.
La logique de notre programme prend place dans les méthodes. Cela veut dire qu'au lieu que notre programme soit une suite d'instructions, il sera la combinaison de plusieurs objets qui vont interagir ensemble.
Comprenez l’utilité des objets
Les objets sont extrêmement pratiques. Un programmeur sans objets, c'est comme un Jedi sans sabre laser !
Simplifiez la programmation
Si je dois faire une liste de films à envoyer à un ami, et que je la lui envoie comme ceci :
Forrest Gump, 2 h 20, Drame, Robert Zemeckis, La liste de Schindler, Drame, Historique, Steven Spielberg, 3 h 15, La ligne verte, Frank Darabont, 3 h 09, Policier.
Je ne sais pas pour vous, mais personnellement, je ne comprends pas vraiment cette liste. Ce n’est ni lisible ni ordonné.
En revanche, si je l’envoie comme ceci :
Forrest Gump
- Titre : Forrest Gump
- Durée : 2 h 20
- Genre : Drame
- Réalisateur : Robert Zemeckis
La liste de Schindler
- Titre : La liste de Schindler
- Durée : 3 h 15
- Genre : Drame, Historique
- Réalisateur : Steven Spielberg
La ligne verte
- Titre : La ligne verte
- Durée : 3 h 09
- Genre : Policier
- Réalisateur : Frank Darabont
On est d’accord que c’est bien plus clair ? Eh bien la POO c’est, entre autres, ce qui va nous permettre de mieux nous comprendre en organisant nos informations de manière plus structurée.
Cachez une implémentation
Mettons que l'on ait un objet Voiture
. Une voiture contient un mécanisme très compliqué. Le moteur qui brûle de l'essence. Cela crée de la chaleur. Cette énergie thermique est transformée en énergie mécanique. Le mouvement arrive jusqu'aux roues, et la voiture avance. Toute cette logique est abstraite dans une voiture, vous n'avez pas besoin de la connaître. On l'a déjà fait pour vous. La seule chose que vous avez à votre disposition pour effectuer cette action, c'est la pédale de l'accélérateur. Tout le reste est caché sous le capot et si le constructeur a bien fait son travail, vous n'avez pas à vous en occuper.
Un objet en POO, c'est exactement la même chose. Un objet peut être excessivement complexe et, pourtant, vous allez pouvoir l'utiliser au travers de seulement quelques méthodes très simples.
Représentez un concept
Un objet vous permet de représenter un concept et de le manipuler en tant que tel. Par exemple, dans notre "Qui est-ce ?", nous n'avons pas une grande liste de variables et de fonctions mélangées. Nous avons simplement 4 objets clairs qui nous permettent d'organiser simplement et facilement notre logique, et qui représentent des concepts simples structurant le jeu.
En résumé
La programmation procédurale, c'est ce que vous connaissez : la programmation à base de variables et de fonctions.
La POO permet de simplifier les informations dans la programmation.
La programmation orientée objet se base sur le principe d'objets. Un objet est un ensemble de variables (appelées propriétés) et de fonctions (appelées méthodes). Cet ensemble décrit un concept unique et cohérent.
Un objet permet de :
cacher une implémentation ;
représenter un concept clairement.
Maintenant que vous avez vu ce que sont la POO et les objets, c’est l’heure de les créer vous-même. Suivez-moi au prochain chapitre, où vous commencerez à utiliser la programmation orientée objet dans un projet !