object-oriented programming ou programmation orienté objet (OOP)
La programmation orientée objet (OOP) 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 est bien adaptée aux programmes qui sont importants, complexes et activement mis à jour ou maintenus.
L’organisation d’un programme orienté objet rend également la méthode bénéfique pour le développement collaboratif, où les projets sont divisés en groupes.
Parmi les autres avantages de la POO figurent la réutilisation du code, l’évolutivité et l’efficacité. Même lorsqu’ils utilisent des micro-services, 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 souhaite manipuler et à identifier leurs relations mutuelles, un exercice souvent appelé modélisation des données.
Les exemples d’un objet peuvent aller d’entités physiques, comme un être humain qui est décrit par des propriétés comme le nom et l’adresse, jusqu’à de petits programmes informatiques, comme des widgets.
Une représentation de la programmation orientée objet
Un exemple des conventions en matière de 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 toute séquence logique qui peut 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 PO
La programmation orientée objet est basée sur les principes suivants :
- Encapsulation. L’implémentation et l’état de chaque objet sont conservés de manière privée à l’intérieur d’une limite définie, ou classe. Les autres objets n’ont pas accès à cette classe ou n’ont pas le pouvoir d’effectuer des modifications, mais peuvent seulement appeler une liste de fonctions publiques, ou de méthodes. Cette caractéristique du masquage des données offre une plus grande sécurité aux programmes et évite la corruption involontaire des données.
- Abstraction. Les objets ne révèlent que les mécanismes internes qui sont pertinents pour l’utilisation d’autres objets, cachant tout code d’implémentation inutile. Ce concept permet aux développeurs d’effectuer plus facilement des modifications et des ajouts au fil du temps.
- Héritage. Des relations et des sous-classes peuvent être attribuées entre les objets, ce qui permet aux développeurs de réutiliser une logique commune tout en conservant une hiérarchie unique. Cette propriété de la POO oblige à une analyse plus approfondie des données, réduit le temps de développement et assure un niveau de précision plus élevé.
- Polymorphisme. Les objets peuvent prendre plus d’une forme selon le contexte. Le programme déterminera la signification ou l’usage 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
Si Simula est crédité comme le premier langage de programmation orienté objet, les langages de programmation opérationnelle les plus populaires le 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ée objet.
Critique d’OOPSLA
Le modèle de programmation orienté objet a été critiqué par les développeurs pour de multiples raisons. La plus grande inquiétude est que la programmation orientée objet met trop l’accent sur la composante données du développement de logiciels et ne se concentre pas assez sur le calcul ou les algorithmes. En outre, le code de la POO peut être plus compliqué à écrire et plus long à compiler.
Parmi les méthodes alternatives à la POO, on peut citer :
- la programmation fonctionnelle
- la programmation structurée
- programmation impérative
La plupart des langages de programmation avancés donnent aux développeurs la possibilité de combiner ces modèles