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.
Une interface unique est implémentée par une routine membre ayant le même identifiant dans chaque classe faisant partie de la même hiérarchie d'héritage. Selon le langage informatique employé, le polymorphisme peut être réalisé par différents moyens, inhérents au langage ou par emploi de patrons de conception.
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.
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é.
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.
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.
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.
la signature d'une méthode est constituée du nom de la méthode, du nombre et du type de ses paramètres, et du type qu'elle renvoie.
Forme différente que peut prendre un même gène. Il existe plusieurs formes normales de certains gènes: les gènes qui commandent les groupes sanguins sont un exemple de polymorphisme.
Le concept d'encapsulation
L'encapsulation est un mécanisme consistant à rassembler les données et les méthodes au sein d'une structure en cachant l'implémentation de l'objet, c'est-à-dire en empêchant l'accès aux données par un autre moyen que les services proposés.
L'objectif de la programmation orientée objet est de se concentrer sur l'objet lui-même et les données, plutôt que sur la logique nécessaire et les actions à mener pour faire cette manipulation.
Une méthode static est une méthode qui n'agit pas sur des variables d'instance mais uniquement sur des variables de classe. Ces méthodes peuvent être utilisées sans instancier un objet de la classe. Les méthodes ainsi définies peuvent être appelées avec la notation classe.
En Programmation Orientée Object (POO), la généricité est un concept permettant de définir des algorithmes (types de données et méthodes) identiques qui peuvent être utilisés sur de multiples types de données. Cela permet donc de réduire les quantités de codes à produire.
une classe est abstraite si elle contient au moins une méthode abstraite ; elle ne peut pas être instanciée, mais ses sous-classes non abstraites le peuvent. une classe abstarite est déclarée avec le modificateur abstract. une classe est abstraite ne peut être instanciée.
Les interfaces servent à créer des comportements génériques: si plusieurs classes doivent obéir à un comportement particulier, on créé une interface décrivant ce comportement, on est la fait implémenter par les classes qui en ont besoin.
Le mécanisme des classes abstraites permet de définir des comportements (méthodes) dont l'implémentation (le code dans la méthode) se fait dans les classes filles. Ainsi, on a l'assurance que les classes filles respecteront le contrat défini par la classe mère abstraite. Ce contrat est une interface de programmation.
Créer une interface peut-être utile si ces dernières ne devraient pas être accessibles. Lorsque du code interagit avec le système de fichier, du réseau ou n'importe quel système tiers, la mise en place d'une interface est essentielle pour se découpler de l'implémentation et faciliter l'écriture de tests.
L'encapsulation est un mécanisme consistant à rassembler les données et les méthodes au sein d'une structure en cachant l'implémentation de l'objet, c'est-à-dire en empêchant l'accès aux données par un autre moyen que les services proposés.
Le polymorphisme en Python orienté objet
Dans le contexte de la programmation orientée objet, le polymorphisme est un concept qui fait référence à la capacité d'une variable, d'une fonction ou d'un objet à prendre plusieurs formes, c'est-à-dire à sa capacité de posséder plusieurs définitions différentes.
La surcharge d'une méthode ou d'un constructeur permet de définir plusieurs fois une même méthode/constructeur avec des arguments différents. Le compilateur choisit la méthode qui doit être appelée en fonction du nombre et du type des arguments .
Lors d'une encapsulation, la couche la plus abstraite est appelée 'couche protocole de plus haut niveau' (Upper Layer Protocol - ULP) alors que la couche la plus spécifique est appelée 'couche protocole de plus bas niveau' (Lower Layer Protocol - LLP).
En Java, l'héritage est indiqué par le mot clé extends après le nom de la classe. On dit donc qu'une classe en étend une autre. La classe qui est étendue est appelée classe mère ou classe parente et la classe qui étend est appelée classe fille ou classe enfant.
Pour appeler le constructeur d'une classe, il suffit de préciser la valeur de ses paramètres effectifs dans l'instruction d'instanciation. Par exemple, pour créer une nouvelle voiture d'immatriculation "4017 ZX 67" avec le constructeur défini précédement, on pourra écrire: LaVoiture = new Voiture ("4017 ZX 67");