Vous êtes sur la page 1sur 26

DÉVELOPPEMENT DIGITAL

PROGRAMMER EN
ORIENTÉ OBJET
CHAPITRE3 1 - Principe et intérêt del’héritage
2 - Types de l’héritage
DÉFINIR L’HÉRITAGE ET 3 - Redéfinition des méthodes
LE POLYMORPHISME
4 - Principe du polymorphisme
Principe de l’héritage

• L'héritage est un mécanisme qui nous permet de créer une nouvelle classe – connue sous le nom de classe
enfant – qui est basée sur une classe existante – la classe mère, en ajoutant de nouveaux attributs et
méthodes en plus de la classe existante. Lorsque vous procédez ainsi, la classe enfant hérite des attributs et
méthodes de la classe parent.

• L'héritage brille vraiment quand vous voulez créer des classes qui sont très similaires. Tout ce que vous avez
à faire est d’écrire le code des choses qu’ils ont en commun dans une classe - la classe mère. Ensuite, écrire
du code pour des choses très spécifiques dans une classe différente - la classe enfant. Cela vous évite de
dupliquer le code.

Appréhender le paradigme de Connaître les principaux


la POO La POO en Python 3
piliers de la POO
Principe de l’héritage

• Le concept de l'héritage spécifie une relation de spécialisation/généralisation entre les classes (Document :
livre, revu, …/Personne : étudiant, employé…)
• Lorsqu'une classe D hérite d'une classe B :

• D possède toutes les caractéristiques de B et aussi, d'autres caractéristiques qui sont spécifiques à D

• D est une spécialisation de B (un cas particulier)

• B est une généralisation de D (cas général)

• D est appelée classe dérivée (fille)

• B est appelée classe de base (mère ou super-classe)

• Tout objet instancié de D est considéré, aussi, comme un objet de type B

• Un objet instancié de B n'est pas forcément un objet de type D

Appréhender le paradigme de Connaître les principaux


la POO La POO en Python 4
piliers de la POO
Principe de l’héritage
Exemple:

Considérons la définition des 3 classes Personne, Etudiant et Employé suivantes:

Personne Etudiant Employe


Nom
Nom
CIN Nom
CIN
anneeNaiss CIN
anneeNaiss
age() anneeNaiss
prixHeure
note1, note2
nbreHeure
age()
age()
Problème: moyenne()
Salaire()
• Duplication du code
• Une modification faite sur un attribut ou méthode doit être refaite sur les autres classes

Appréhender le paradigme de Connaître les principaux


la POO La POO en Python 5
piliers de la POO
Principe de l’héritage
Personne
Solution Nom
CIN Super-classe
• Placer dans la classe mère toutes les informations anneeNaiss
age()
communes à toutes les classes.

• Les classes filles ne comportent que les attributs ou Héritent de

méthodes plus spécifiques.


Employe
• Les classes filles héritent automatiquement les Etudiant
attributs (et les méthodes) qui n'ont pas besoin prixHeure
note1, note2 nbreHeure
d'être ré-écrits.
moyenne()
Salaire()
Sous-classes

Appréhender le paradigme de Connaître les principaux


la POO La POO en Python 6
piliers de la POO
Intérêt de l’héritage

• L'héritage minimise l'écriture du code en regroupant les caractéristiques communes entre classes au sein
d’une seule (la classe de base) sans duplication.
• Localisation facile, en un point unique, des sections de code.

• La rectification du code se fait dans des endroits uniques grâce à la non redondance de description

• L’extension ou l’ajout de nouvelles classes est favorisée surtout en cas d’une hiérarchie de classes bien
conçue

• Définition des informations et des comportements aux niveaux opportuns.

• Rapprochement de la modélisation des systèmes d’informations aux cas réels

Appréhender le paradigme de Connaître les principaux


la POO La POO en Python 7
piliers de la POO
Intérêt de l’héritage

• La classe Employé hérite de la classe Personne

Appréhender le paradigme de Connaître les principaux


la POO La POO en Python 8
piliers de la POO
Intérêt de l’héritage

Appréhender le paradigme de Connaître les principaux


la POO La POO en Python 9
piliers de la POO
Si aucun attribut n'est trouvé dans la classe, la recherche continue vers la classe de mère. Cela se
répète de manière récursive, si la classe mère est elle-même dérivée d'autres classes.
En Python, nous utilisons la fonction super() pour appeler les méthodes de la classe parent.
CHAPITRE 1 1 - Principe et intérêt de l’héritage
2 - Types de l’héritage
DÉFINIR L’HÉRITAGE ET 3 - Redéfinition des méthodes
LE POLYMORPHISME
4 - Principe du polymorphisme
Héritage multiple

• Une classe peut hériter de plusieurs classes

Exemple:

Un Etudiant est à la fois une Personne et un EtreHumain

•La classe Etudiant hérite les attributs et les méthodes des

deux c l a s s e s  Il deviennent ses propres attributs et méthodes

Appréhender le paradigme de Connaître les principaux


la POO La POO en Python 12
piliers de la POO
Héritage en cascade Personne
Nom
•Une classe sous-classe peut être elle-même une super-classe
CIN
dateNaiss
Exemple:
age()

Etudiant hérite de Personne

EtudiantDeuxièmeCycle hérite de Etudiant Etudiant

 EtudiantDeuxièmeCycle hérite de Personne note1


note2
Moyenne()

Etudiant
DeuxiemeCycle
option
Appréhender le paradigme de Connaître les principaux
la POO La POO en Python 13
piliers de la POO
CHAPITRE 1 1 - Principe et intérêt de l’héritage
2 - Types de l’héritage
DÉFINIR L’HÉRITAGE ET 3 - Redéfinition des méthodes
LE POLYMORPHISME
4 - Principe du polymorphisme
Redéfinition des méthodes héritées

• Une méthode héritée peut être redéfinie si sa version initiale n'est pas satisfaisante pour la classe dérivée

• La redéfinition consiste à conserver l'entête de la méthode et à proposer un code différent

• Si une méthode héritée est redéfinie, c'est uniquement la nouvelle version qui fait parti de la description
de la classe dérivée

• Si la méthode définie au niveau de la classe dérivée est de type différent, ou de paramètres différents, alors
il s’agit d’une nouvelle méthode qui s’ajoute à celle héritée de la classe debase

Appréhender le paradigme de Connaître les principaux


la POO La POO en Python 17
piliers de la POO
Redéfinition des méthodes héritées

Exemple:
Personne
• Soit la classe Etudiant qui hérite de la classe Personne Nom
CIN
• La méthode afficher() de la classe Personne affiche les attribut Nom,
age()
CIN d’une personne afficher()
• La classe Etudiant hérite la méthode afficher() de la classe Personne et

la redéfinit , elle propose un nouveau code (la classe Etudiant ajoute l’affichage
Etudiant
des attributs notes1 et note2 del’étudiant)
note1
note2
Moyenne()
afficher()
Appréhender le paradigme de Connaître les principaux
la POO La POO en Python 18
piliers de la POO
Mécanisme de la liaison retardée

Soit C la classe réelle d'un objet o à qui on envoie un message « o.m() »


• o.m() peut appeler la méthode m() de C ou de n’importe quelle sous-classe de C

• Si le code de la classe C contient la définition (ou la redéfinition) d’une méthode m(), c’est cette méthode
qui sera exécutée

• Sinon, la recherche de la méthode m() se poursuit dans la classe mère de C, puis dans la classe mère de
cette classe mère, et ainsi de suite, jusqu’à trouver la définition d’une méthode m() qui est alors exécutée

Appréhender le paradigme de Connaître les principaux


la POO La POO en Python 19
piliers de la POO
Mécanisme de la liaison retardée

Exemple: Soit etc un objet de type EtudiantTroisièmeCycle

1er cas 2ème cas


Personne Personne

afficher() etc.afficher() afficher()

Etudiant Etudiant
Afficher() de la
afficher()
classe Personne
est exécutée
Afficher() de la classe
EtudiantTroisièmeCycle
EtudiantTroisième EtudiantTroisième
est exécutée Cycle
Cycle

etc.afficher() afficher()

Appréhender le paradigme de Connaître les principaux


la POO La POO en Python 20
piliers de la POO
Les classes Quotidiennes
Classe Datetime / Date :

Appréhender le paradigme de Connaître les principaux


la POO La POO en Python
piliers de la POO
Les classes Quotidiennes
Classe Datetime / Date : les types disponibles

•class datetime.date
• Une date naïve idéalisée, en supposant que le calendrier Grégorien actuel a toujours existé et qu’il existera
toujours. Attributs : année , mois et jour .
•class datetime.time
• Un temps idéalisé, indépendant d’une date particulière, en supposant qu’une journée est composée
d’exactement 24*60*60 secondes (il n’y a pas ici de notion de “seconde bissextile”). Attributs : hour, minute,
second, microsecond et tzinfo.
•class datetime.datetime
• Une combinaison d’une date et d’une heure. Attributs : year, month, day, hour, minute, second, microsecond,
et tzinfo.

Appréhender le paradigme de Connaître les principaux


la POO La POO en Python
piliers de la POO
Les classes Quotidiennes
Classe Datetime / Date : les types disponibles

•class datetime.timedelta
• Une durée qui exprime la différence entre deux instances de date, time ou datetime en microsecondes.
•class datetime.tzinfo
• Une classe de base abstraite pour les objets portants des informations sur les fuseaux horaires. Ceux-ci
sont utilisés par les classes datetime et time pour donner une notion personnalisable d’ajustement
d’horaire (par exemple la prise en compte d’un fuseau horaire et/ou de l’heure d’été).
•class datetime.timezone
• Une classe qui implémente la classe de base abstraite tzinfo en tant qu’offset fixe par rapport au temps
UTC.

Appréhender le paradigme de Connaître les principaux


la POO La POO en Python
piliers de la POO
Les classes Quotidiennes
Classe Datetime / Date : Code de Formatage des dates dans le fuseau horaire americain

Appréhender le paradigme de Connaître les principaux


la POO La POO en Python
piliers de la POO
Les classes Quotidiennes
Classe Datetime / Date : Code de Formatage des dates dans le fuseau horaire americain

Appréhender le paradigme de Connaître les principaux


la POO La POO en Python
piliers de la POO
Les classes Quotidiennes
Classe Datetime / Date : Code de Formatage des dates dans le fuseau horaire americain

Appréhender le paradigme de Connaître les principaux


la POO La POO en Python
piliers de la POO

Vous aimerez peut-être aussi