Programmation Orientée Objet

La Programmation Orientée-Objet (POO ou OOP en anglais) est la programmation concentrée sur les données, les données et les comportements sont inséparables. Les données et les comportements ensemble constituent une classe, tandis que les objets sont des instances de classe.

Les composantes de l'approche orientée-objet sont :

La POO considère les calculs comme la modélisation des comportements. L'élément modélisé est l'objet représneté par des abstractions de calcul. Supposons que nous voulions écrire le fameux jeu "Tetris". Pour ce faire, nous devons savoir comment modéliser l'apparence des formes aléatoires composées de quatre carrés reliés ensemble par les bords. Nous devons également régler la vitesse de chute des formes, définir les opérations de rotation et de décalage des formes. Le déplacement des formes à l'écran est limité par les bordures du puits, cette exigence doit également être modélisée. De plus, les rangées pleines de cubes doivent être détruites et le nombre de points doit être compté.

Ce jeu facile à comprendre nécessite donc la création de plusieurs modèles - modèle de la forme, modèle du puits, modèle du mouvement des formes, etc. Tous ces modèles sont des abstractions, représentées par des calculs de l'ordinateur. Pour décrire ces modèles, le concept de Type de Données Abstrait, ADT (ou type de donnée complexe) est utilisé. A propement parler, le modèle de mouvement des "formes" dans le DOM n'est pas un type de données, mais est un ensemble d'opérations du type de données "forme", utilisant les restrictions du type de données "puits".

Les objets sont des variables de classe. La programmation orientée-objet vous permet de créer ADT et de l'utiliser facilement. La programmation orientée-objet utilise le mécanisme d'héritage. L'héritage permet d'obtenir des types dérivés des types de données déjà définis par l'utilisateur.

Par exemple, pour créer les formes du Tetris, il est plus pratique de créer en premier une classe de base Shape. Les autres classes représentant les 7 autres types possibles de formes peuvent dériver de cette base. Le comportement des formes est défini dans la classe de base, tandis l'implémentation des comportements de chaque forme est défini dans les classes dérivées.

En POO, les objets sont responsables de leur comportement. Un développeur ADT devrait inclure du code pour décrire n'importe quel comportement qui serait attendu des objets correspondants. Le fait que l'objet lui-même soit responsable de son comportement simplifie grandement la programmation pour l'utilisateur de cet objet.

Si nous souhaitons dessiner une forme à l'écran, nous devons savoir où se trouvera le centre et comment le dessiner. Si une autre forme sait comment se dessiner elle-même, le programmeur ne doit pas envoyer un message "draw" lorsqu'il utilise cette forme.

Le langage MQL5 ressemble au C++, et possède également le mécanisme d'encapsulation por l'implémentation d'ADT. D'un côté, l'encapsulation intègre les détails internes de l'implémentation d'un type particulier, et de l'autre, elle regroupe les fonctions accessibles de l'extérieur qui peuvent agir sur les objets de ce type. Les détails d'implémentation peuvent ne pas être accessibles pour un programme utilisant ce type.

 

Le concept de POO a un ensemble de concepts liés, incluant les suivants :

  • Simulation d'actions du monde réel
  • Types de données définis par l'utilisateur
  • Masquage des détails d'implémentation
  • Possibilité de réutilisation du code grâce à l'héritage
  • Interpretation des appels de fonctions pendant l'exécution

Certains de ces concepts sont assez vagues, certains sont abstraits, d'autres plus généraux.