Heritage Poo
Heritage Poo
Heritage Poo
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.
• 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
• 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
Exemple:
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
• 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
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
• 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
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()
•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.
•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.