La Programmation Orientée Objet est dirigée par trois fondamentaux qu'il convient de toujours garder à l'esprit : encapsulation, héritage et polymorphisme.
La programmation orientée objet obéit à des principes. Les 4 principaux principes sont l'encapsulation, l'héritage, le polymorphisme et la généricité.
Les principes de l'approche objet : abstraction, encapsulation, modularité, hiérarchie, héritage, polymorphisme, etc. Un vocabulaire à démystifier. Les 5 concepts fondateurs : ce qu'il faut comprendre pour aborder une problématique par un raisonnement objet.
Il existe actuellement deux grandes catégories de langages à objets : les langages à classes, que ceux-ci soient sous forme fonctionnelle (Common Lisp Object System), impérative (C++, Java) ou les deux (Python, OCaml) ; les langages à prototypes (JavaScript, Lua).
Définition du polymorphisme
Le nom de polymorphisme vient du grec et signifie qui peut prendre plusieurs formes. Cette caractéristique est un des concepts essentiels de la programmation orientée objet. Alors que l'héritage concerne les classes (et leur hiérarchie), le polymorphisme est relatif aux méthodes des objets.
L'abstraction est l'un des concepts clés dans les langages de programmation orientée objet (POO). Son objectif principal est de gérer la complexité en masquant les détails inutiles à l'utilisateur.
L'encapsulation permet de définir des niveaux de visibilité des éléments de la classe. Ces niveaux de visibilité définissent les droits d'accès aux données selon que l'on y accède par une méthode de la classe elle-même, d'une classe héritière, ou bien d'une classe quelconque.
La programmation orientée objet consiste à modéliser informatiquement un ensemble d'éléments d'une partie du monde réel (que l'on appelle domaine) en un ensemble d'entités informatiques. Ces entités informatiques sont appelées objets.
En programmation fonctionnelle, une fonction est l'unité de manipulation principale. En POO, un objet est l'unité de manipulation principale. En programmation fonctionnelle, ses fonctions n'ont pas d'effets secondaires, cela n'a aucun impact sur le code qui s'exécute sur plusieurs processeurs.
Le polymorphisme est un mécanisme important dans la programmation objet. Il permet de modifier le comportement d'une classe fille par rapport à sa classe mère. Le polymorphisme permet d'utiliser l'héritage comme un mécanisme d'extension en adaptant le comportement des objets.
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.
En programmation procédurale, le programme est divisé en petites parties appelées fonctions . Dans la programmation orientée objet, le programme est divisé en petites parties appelées objets . La programmation procédurale suit une approche descendante . La programmation orientée objet suit une approche ascendante .
En programmation orientée objet (POO), une méthode est une routine membre d'une classe. Une méthode peut être: une méthode d'instance, n'agissant que sur un seul objet (instance de la classe) à la fois; une méthode statique ou méthode de classe, indépendante de toute instance de la classe (objet).
Les langages Java et C++ sont moins « purs » même si Java opérationnalise presque tous les concepts du paradigme objet. Quant au langage C, c'est le plus célèbre et le plus utilisé des langages qualifiés de « procéduraux ».
En 1991, le programmeur Guido van Rossum écrit sur son ordinateur personnel la première version d'un langage orienté objet et multiplateformes. C'est parce qu'il est fan de la série télévisée Monty Python qu'il baptise ce langage « PYTHON » !
Le paradigme le plus courant est la programmation impérative. Les étapes d'instructions se suivent jusqu'à arriver au résultat escompté. Par exemple, dans le cas d'une fonction qui voudrait produire une omelette, les instructions seraient : Prendre 3 œufs.
Dans le paradigme de programmation, C'est une manière d'organiser l'utilisation des données selon des règles. De fait, il y a 3 types : l'encapsulation, le polymorphisme et l'héritage.
En informatique, la programmation impérative est un paradigme de programmation qui décrit les opérations en séquences d'instructions exécutées par l'ordinateur pour modifier l'état du programme.
L'idée principale à retenir ici est qu'un attribut de donnée ou une méthode est propre à un objet tandis qu'une variable ou une fonction est indépendante de tout objet. C'est la raison pour laquelle pour accéder à un attribut de données ou à une méthode on doit préciser le nom de l'objet qui souhaite y accéder avant.
Java est un langage orienté objet : tout appartient à une classe sauf les variables de types primitives. Pour accéder à une classe il faut en déclarer une instance de classe ou objet. Une classe comporte sa déclaration, des variables et les définitions de ses méthodes.
Parmi les avantages de cette approche, on peut citer : la possibilité de concevoir par objet une application informatique sans pour autant utiliser des outils dédiés, il facilite beaucoup dans la conception, la maintenance, la réutilisabilité des éléments (objets), l'avantage d'utiliser un objet de base afin de ...
En programmation orientée objet, la surcharge, aussi appelée « overloading », consiste à déclarer, dans une même classe, deux méthodes de même nom mais avec des sémantiques différentes : Même nom de méthode, Paramètres différents (soit sur le nombre ou le/les type(s)), Le type de retour n'est pas pris en compte.
Même sans parler de redéfinir, un getter ou un setter permet d'associer une action chaque fois qu'il est appelé. Ce n'est pas le cas de la lecture ou écriture d'un attribut. On dit souvent qu'un getter ou un setter ne devrait pas faire autre que juste lire ou modifier l'attribut.
Classes abtraites et interfaces ont chacune une fonction bien distincte : les classes abstraites servent à factoriser du code, tandis que les interfaces servent à définir des contrats de service.