Articles

programmation orientée objet (POO)

La programmation orientée objet (POO) est un modèle de programmation informatique qui organise la conception de logiciels autour de données, ou d’objets, plutôt que de fonctions et de logique. Un objet peut être défini comme un champ de données ayant des attributs et un comportement uniques.

La POO se concentre sur les objets que les développeurs veulent manipuler plutôt que sur la logique requise pour les manipuler. Cette approche de la programmation convient bien aux émissions de grande taille, complexes et activement mises à jour ou maintenues.

L’organisation d’un programme orienté objet rend également la méthode bénéfique au développement collaboratif, où les projets sont divisés en groupes.

Les avantages supplémentaires de la POO incluent la réutilisabilité du code, l’évolutivité et l’efficacité. Même lors de l’utilisation de microservices, les développeurs doivent continuer à appliquer les principes de la POO.

La première étape de la POO consiste à collecter tous les objets qu’un programmeur veut manipuler et à identifier comment ils se rapportent les uns aux autres — un exercice souvent connu sous le nom de modélisation de données.

Les exemples d’un objet peuvent aller d’entités physiques, telles qu’un être humain décrit par des propriétés telles que le nom et l’adresse, à de petits programmes informatiques, tels que des widgets.

Une représentation de la programmation orientée objet
Un exemple des conventions de la programmation orientée objet.

Une fois qu’un objet est connu, il est étiqueté avec une classe d’objets qui définit le type de données qu’il contient et toutes les séquences logiques pouvant le manipuler. Chaque séquence logique distincte est connue sous le nom de méthode. Les objets peuvent communiquer avec des interfaces bien définies appelées messages.

Principes de la POO

La programmation orientée objet est basée sur les principes suivants:

  • Encapsulation. L’implémentation et l’état de chaque objet sont détenus en privé à l’intérieur d’une limite ou d’une classe définie. D’autres objets n’ont pas accès à cette classe ni à l’autorité pour apporter des modifications, mais ne peuvent appeler qu’une liste de fonctions ou de méthodes publiques. Cette caractéristique de masquage des données offre une plus grande sécurité du programme et évite la corruption involontaire des données.
  • Abstraction. Les objets ne révèlent que des mécanismes internes pertinents pour l’utilisation d’autres objets, masquant tout code d’implémentation inutile. Ce concept aide les développeurs à apporter plus facilement des modifications et des ajouts au fil du temps.
  • Héritage. Des relations et des sous-classes entre objets peuvent être attribuées, permettant aux développeurs de réutiliser une logique commune tout en maintenant une hiérarchie unique. Cette propriété de la POO force une analyse des données plus approfondie, réduit le temps de développement et garantit un niveau de précision plus élevé.
  • Polymorphisme. Les objets peuvent prendre plusieurs formes selon le contexte. Le programme déterminera quelle signification ou quelle utilisation est nécessaire pour chaque exécution de cet objet, réduisant ainsi la nécessité de dupliquer le code.

Langages de programmation orientés objet

Bien que Simula soit crédité comme le premier langage de programmation orienté objet, les langages de POO les plus populaires sont:

  • Java
  • JavaScript
  • Python
  • C++
  • Visual Basic .NET
  • Ruby
  • Scala
  • PHP

OOPSLA est la conférence annuelle pour les Systèmes, Langages et Applications de Programmation Orientés Objet.

Critique de la POO

Le modèle de programmation orientée objet a été critiqué par les développeurs pour de multiples raisons. La plus grande préoccupation est que la POO accorde trop d’importance à la composante données du développement logiciel et ne se concentre pas suffisamment sur le calcul ou les algorithmes. De plus, le code POO peut être plus compliqué à écrire et prendre plus de temps à compiler.

Les méthodes alternatives à la POO incluent :

  • programmation fonctionnelle
  • programmation structurée
  • programmation impérative

La plupart des langages de programmation avancés offrent aux développeurs la possibilité de combiner ces modèles.