J'aurais dû coder tout en objet

Introduction

Si vous venez sur Slack, vous pouvez y croiser @Jack. Je discute beaucoup avec @Jack et on s'apprend mutuellement des choses. Mais assez souvent, @Jack me dit :

C'est compliqué de trouver quelque chose qui explique la POO avec WinDev®.

Quelques jours plus tard, un de mes collègues au travail m'a dit :

Je pige que dalle à la POO.

Ni une, ni deux, j'ai pris mon clavier et j'ai décider de sauver le monde d'expliquer la POO. La théorie, mais aussi la pratique avec WinDev.

Je ne vous fais pas de fausse promesse, je risque d'échouer. En effet, la POO, c'est un concept très vaste avec du concret et de l'abstrait. Le concret explique le comment mais pas le pourquoi, tandis que l'abstrait explique le pourquoi mais pas le comment. Il va me falloir vous expliquer les deux notions en même temps.

Je compte sur vous pour me guider dans l'écriture de ces articles (car il va y en avoir plusieurs). Vous devez me poser des questions, me dire si je suis trop vague, trop compliqué, dans l'erreur ou quoique ce soit. Lorsque j'aurai écrit tous les articles, j'en ferai un beau bien condensé que je publierai sur développez.com.

Présentation de la POO

De manière abstraite

Imaginez votre programme comme une grosse boîte. Vous rentrez dedans et vous voyez plein de grosses boîtes. Elles sont toutes noires, vous ne voyez pas ce qu'il y a à l'intérieur. Elles ne sont pas de la même forme, ni de la même taille. Certaines boîtes sont liées à d'autres.
Vous rentrez dans une de ces boîtes et vous constatez la même chose, cette boîte contient elle aussi d'autres boîtes noires. Et ainsi de suite.
Vous décidez de modifier le comportement de votre programme, alors, vous créez une nouvelle boîte. Et vous la substituez à une autre boîte. Ces boîtes ont la même taille et la même forme, mais si vous comparez leurs contenus, vous voyez qu'ils sont différents. Deux boîtes de même forme, mais avec un comportement différent.

Et de manière concrète

Les boîtes sont des objets. Elles sont noires pour qu'on ne puisse pas voir à l'intérieur. Cela veut dire que le développeur, lorsqu'il manipule l'objet, ne doit pas savoir comment fonctionne l'objet. Ce principe s'appelle l'encapsulation.

Une boîte ayant la même forme qu'une autre peut remplacer cet autre boîte, même si leur contenu (comportements) sont différents. Cela veut dire que le développeur peut interchanger des objets qui se ressemblent (ces objets ont la même interface) mais qui n'ont pas forcément le même comportement. Ce principe s'appelle le polymorphisme.

Ces deux concepts (encapsulation et polymorphisme) font parti des concepts les plus importants de la POO. Ils font parti du pourquoi de la POO.

Et de manière imagée ?

Je suis en train de construire ma voiture. On va simplifier les choses, il y a le châssis et le moteur. J'ai le châssis d'une Clio® et d'une Ferrari®. De même pour le moteur, j'ai celui d'une Clio et d'une Ferrari.

Avec le principe d'encapsulation, je ne sais pas comment fonctionnent les moteurs. En y réfléchissant bien, je n'ai pas un moteur de Clio et un moteur de Ferrari. J'ai deux moteurs, point. Le principal, c'est qu'ils fonctionnent et font ce que j'attends d'eux.

Avec le principe de polymorphisme, je peux utiliser n'importe quel moteur avec n'importe quel châssis. Les moteurs rentrent dans les deux et se connectent parfaitement.

Au final, en faisant joujou, je peux créer :

  • une Ferrari ;
  • une Clio ;
  • une voiture avec un châssis de Clio et un moteur de Ferrari ;
  • une voiture avec un châssis de Ferrari et un moteur de Clio.

Conclusion

Et voilà, je vous ai parlé de POO sans mentionner les mots classe, méthode, propriété ni héritage. C'est le comment, et on en parlera dans un prochain article.

En attendant, commentez cet article. Donnez votre avis, posez des questions. Aidez-moi à l'améliorer.

Et si vous pouvez le partager, ça me ferait très plaisir.

Je vous remercie de votre lecture.

Jonathan Laurent

Read more posts about this author.

Comments