Vous êtes sur la page 1sur 47

Introduction à la programmation Orientée Objet

Concepts de POO
Définir l’héritage « Principe de l’héritage »
Définir l’héritage « Principe de l’héritage »
L'héritage est un concept clé en programmation orientée objet (POO) qui permet à une classe
(appelée classe dérivée ou sous-classe) d'hériter des caractéristiques et comportements d'une autre
classe (appelée classe de base ou superclasse
Définir l’héritage « Principe de l’héritage »

Exemple : Un employé est aussi un être humain et par suite la sous classe employé hérite les
mêmes propriétés nom, age, adresse... de la classe mère être humain , néanmoins la classe fille employé
possède d'autres attributs inexistants chez la classe mère comme salaire, grade...
Définir l’héritage « Principe de l’héritage »
Définir l’héritage « Principe de l’héritage »

 Héritage permet de créer une nouvelle classe (classe dérivée,


classe descendante, classe fille ) qui réutilise, étend et modifie
le comportement défini dans une autre classe (classe de base,
classe ancêtre, classe mère ).

 La classe dérivée dispose implicitement de tous les attributs et


de toutes les méthodes définies dans la classe de base.

 L’héritage évite la duplication et facilite la réutilisation.


Définir l’héritage « Principe de l’héritage »

En Python, l'héritage est mis en œuvre de la manière suivante :


Définir l’héritage « Principe de l’héritage »

En Python, l’héritage est la capacité d’une classe (parente) à


transmettre certaines de ses propriétés ou méthodes à une autre
classe (classe enfant).

Par exemple, la voiture, le bus et le vélo sont des véhicules.


Le véhicule représente une classe parente ou la classe de base tandis
que la voiture, le bus et le vélo sont des classes enfants ou dérivées.
Définir l’héritage « Principe de l’héritage »

Les classes ont également un attribut __bases__, qui est un tuple qui fait
référence à l’objet superclasse.
Définir l’héritage « Principe de l’héritage »
 Exemple:

L'héritage permet de favoriser la réutilisation du


code, de créer une hiérarchie logique entre les classes
et de faciliter la maintenance du code.
Définir l’héritage « Principe de l’héritage »

Forme générale :

class ClasseFille (ClasseMére):


# code
H
Définir l’héritage « Principe de l’héritage »

L’héritage en POO(Programmation Orientée Objet) nous permet


de définir une classe qui prend toutes les fonctionnalités d’une classe
mère et nous permet d’en ajouter plus.

•La classe mère est la classe héritée, également appelée classe de


base.

•La classe fille est la classe qui hérite d’une autre classe,
également appelée classe dérivée.
Définir l’héritage « Principe de l’héritage »

En Python, lorsque l'on veut créer une classe héritant d'une autre
classe, on ajoutera après le nom de la classe fille le nom de la ou des
classe(s) mère(s) entre parenthèses :
Définir l’héritage « Principe de l’héritage »

Vous pouvez constater que la classe Homme ne contient ni attributs ni méthodes.


Tant que Homme est la sous-classe de Homme, elle hérite des deux
méthodes _init_() et say_hi() . Hériter de ces méthodes est l’équivalent de les
définir dans la sous-classe Homme. Quand on crée une instance de la classe
Homme la fonction _init_() crée automatiquement un attribut nom
Définir l’héritage « Principe de l’héritage »
Définir l’héritage « Principe de l’héritage »

Si une méthode de la classe fille possède le même nom que celle


de la classe mère, c'est la première qui prend la priorité. Dans ce cas, on dit
que la méthode est redéfinie (en anglais on parle de method overriding),
Définir l’héritage « Principe de l’héritage »

Dans cet exemple, nous voyons que l'objet mirza , qui est une instance de
la classe Chien(), hérite non seulement l'attribut défini pour cette classe,
mais également les attributs définis pour les classes parentes
Définir l’héritage « Principe de l’héritage »

Exemple :
Définir l’héritage « Principe de l’héritage »

Exemple :
Définir l’héritage « Principe de l’héritage »
Exemple : avec le constructeur de la classe mère « le nom de la classe mère »
Définir l’héritage « Principe de l’héritage »
Exemple 2:
Créez une classe nommée Employee, avec la propriété salary et une méthode printSalary:

Créer une classe fille


Pour créer une classe qui hérite des fonctionnalités d’une autre classe, envoyez la
classe mère en tant que paramètre lors de la création de la classe fille.

Remarque: Utilisez le mot-clé ‘pass’ lorsque vous ne souhaitez pas ajouter d’autres
propriétés ou méthodes à la classe.
Définir l’héritage « Principe de l’héritage »
Maintenant, la classe Programmer a les mêmes propriétés et
Exemple 2 méthodes que la classe Employee. Utilisez la classe Programmer pour créer un
objet, puis exécutez la méthode printSalary:
Définir l’héritage « Principe de l’héritage »
Ajoutez la fonction __init__() avec le nom de la classe mère
Exemple 2
Pour garder l’héritage de la fonction __init__() du classe mère, ajoutez un
appel à la fonction __init__() de la classe mère:
Définir l’héritage « Principe de l’héritage »
Ajoutez la fonction __init__()
Exemple 2
Pour garder l’héritage de la fonction __init__() du classe mère, ajoutez un
appel à la fonction __init__() de la classe mère:
Définir l’héritage « Principe de l’héritage »
Ajoutez la fonction __init__()
Exemple 2
Jusqu’à présent, nous avons créé une classe fille qui hérite des propriétés et
des méthodes de la classe mère.
Nous voulons ajouter la fonction __init__() à la classe fille.

Lorsque vous ajoutez la fonction __init__(), la classe fille n’héritera plus


de la fonction __init__() de la classe mère. On peut dire que la classe fille
surcharge la fonction __init__() de la classe mère.
Définir l’héritage « Principe de l’héritage »

Exemple 3: Classe Personne

Classe Employe :
Définir l’héritage « Principe de l’héritage »

Exemple 3:
Définir l’héritage « Principe de l’héritage »
Exemple 5: Redéfinition
Définir l’héritage « Principe de l’héritage »

Principe de Redéfinition

Qu'est-ce que la « redéfinition » en POO ? La redéfinition, aussi appelée


« overriding », consiste à définir le comportement d'une méthode selon le type de l'objet
qui l'invoque, elle consiste à donner une nouvelle implémentation à une méthode héritée
sans changer sa signature : ... Même type de retour.
Définir l’héritage « Principe de l’héritage »

Principe de Redéfinition
Définir l’héritage « Principe de l’héritage »
Principe de Redéfinition

Le principe de redéfinition (ou "overriding" en anglais) fait référence à la possibilité de


remplacer ou redéfinir une méthode héritée d'une classe parente dans une classe enfant. Cela permet à la
classe enfant de fournir une implémentation spécifique de la méthode qui diffère de celle de la classe
parente.
Définir l’héritage « Principe de l’héritage »
Principe de Redéfinition

Exemple 5: Redéfinition
Définir l’héritage « Principe de l’héritage »

Principe de Redéfinition avec amélioration de code

Exemple 5: Redéfinition
Définir l’héritage « Principe de l’héritage »
Principe de Redéfinition avec amélioration de code

Exemple 5: Redéfinition
Définir l’héritage « Principe de l’héritage »

la fonction super()
En programmation orientée objet en Python, la fonction super() est utilisée pour appeler la
méthode d'une classe parente. Elle est couramment utilisée à l'intérieur d'une méthode de sous-classe
pour appeler la même méthode de la classe parente. Cela est utile lorsque vous avez une hiérarchie de
classes et que vous souhaitez étendre le comportement d'une méthode de la classe parente dans la
sous-classe.
Définir l’héritage « Principe de l’héritage »
La fonction super() dans les classes Python

La fonction super() est utilisée pour faire référence à l’objet parent. Nous pouvons appeler la méthode
super() pour accéder aux attributs et aux méthodes de la classe parente.

En effet, super() est une fonction prédéfinie en python. Par conséquent, elle permet à la classe enfant
d’appeler le constructeur, les variables et les méthodes de la classe de base ou la super-classe.
Définir l’héritage « Principe de l’héritage »
La fonction super() dans les classes Python
Définir l’héritage « Principe de l’héritage »
La fonction super() dans les classes Python
Définir l’héritage « Principe de l’héritage »

La surcharge de méthodes en Python (Overloading)

Contrairement à d’autres langages de programmation comme C,


C ++ ou Java, deux méthodes ne peuvent pas avoir le même nom en
Python. Cependant, la surcharge de méthode en Python est une
fonctionnalité qui permet au même opérateur d’avoir des significations
différentes.

Python à pris en considération la dernière fonction et a écrasé la première.


Définir l’héritage « Principe de l’héritage »

La surcharge de méthodes en Python (Overloading)

Nous pouvons résoudre ce problème en définissant le paramètre à None.


Définir l’héritage « Principe de l’héritage »

En fait, ces deux derniers concept sont connus sous le nom de


polymorphisme. Ce qui signifie, plusieurs formes ou lorsque la même
méthode est déclarée plusieurs fois, à des fins multiples et dans différentes
classes Python.
Définir l’héritage « Principe de l’héritage »

Principe de Redéfinition

Quelle est la différence entre Surcharge et Redéfinition ?

– la surcharge de fonctions est utilisée dans une seule classe où vous


avez le même nom de fonction mais un ensemble d’arguments différent
pour chaque fonction.

-La redéfinition de fonction est un concept que l’on rencontre lors de la


création de sous-classes. Ici, si vous déclarez une sous-classe et créez une
fonction avec le même nom et les mêmes arguments qu’une fonction
dans la classe de base, la fonction associé à la sous-classe sera exécuté.
C’est parce que vous allez probablement déclarer un objet de la sous-
classe. D’une manière générale, la fonction associée à l’objet créé sera
exécutée.

Vous aimerez peut-être aussi