Bienvenue dans notre cours ‘Programmation orientée objet en Python’. Alors, dans cette partie de cours, on va découvrir l’héritage successif en python.
héritage successif en python
Dans la partie précédente, nous avons décrit le type d’héritage nommé héritage successif. Cette relation qui peut exister entre classes, impose d’avoir une classe qui joue à la fois le rôle d’une classe fille et une classe mère.
Ainsi, l’implémentation de cette relation , dans un langage de programmation orienté objet, revient à programmer les classes mères et les classes spécifique qui héritent de ces classes . Puis, utiliser les objets de la classe voulue.
Exemple : Héritage successif
1- La classe Personne :
Dans l’exemple suivant, on a une classe mère Personne qui a les attributs nom et prénom. Pour le moment, on laisse les attributs publics (on va appliquer le principe d’encapsulation après) :
#classe mère 1
import datetime
class Personne:
def __init__(self,n,p,d):
self.nom=n
self.prenom=p
self.dateNaiss=d
2- La classe Employe :
La deuxième classe à implémenter est la classe Employé (Attention, ici, on n’applique pas le principe d’encapsulation. On doit le détailler après pour voir comment l’appliquer si on a l’héritage) :
#classe qui est à la fois fille de Personne et mère de Contractuel
class Employe(Personne):
def __init__(self,nom,prenom,poste,sal,dateemb):
super().__init__(nom,prenom)
self.poste=poste
self.salaire=sal
self.dateemb=dateemb
def AfficherInfos(self):
print("nom: ",self.nom,"prénom: ",self.prenom,"poste:",self.poste,"salaire : ", self.salaire,"date d'embauche : ",self.dateemb)
Remarque :
Dans cet exemple, la classe Employe a définit la méthode d’affichage en sa totalité puisqu’elle ne l’a pas hérité de sa classe mère Personne (en effet, ici, la classe Personne n’a pas de méthode d’affichage).
Donc, en général, la création des classes mères se fait de la même façon que l’implémentation d’une classe normale (sauf qu’on doit mettre les attributs protégés : voir la partie d’encapsulation et héritage)
3- La classe Contractuel :
La classe Contracuel est une classe fille de la classe Employe qui est elle-aussi une fille de la classe Personne. Ainsi, pour implémenter la classe Contractuel en python , on procède de la meme manière qu’on a fait pour la classe Employe :
class Contractuel(Employe):
def __init__(self,n,p,d,poste,sal,typeC):
super().__init__(self,n,p,poste,sal,d)
self._typeC=typeC
def AfficherInfos(self):
super().AfficherInfos()
print("Type de contrat: ", self._typeC)
Tout simplement , on ne doit pas oublier qu’un contractuel a un nom et un prénom ( hérités de la classe Personne via sa mère directe Employe) , un poste, un salaire et une date d’embauche (hérités de sa mère directe). Puis, a l’attribut type de contrat qui est une propriété spécifique.
héritage successif en python : création des objets
Une fois les classes (filles et mères) sont définit, alors, les objets peuvent être crées et utiliser selon l’objectif à atteindre.
Exemple : créer un objet c1 de la classe Contractuel :
c1=Prof("elgarrai","zineb",datetime.date(2019, 4, 13),"chef de projet",15000,"CDI")
c1.AfficherInfos()
Remarque : nous avons utiliser la méthode date du module datetime pour créer la date de recrutement. C’est pour cela nous avons démarré notre code au début par :
import datetime
Attention : dans cette partie , nous avons définit les attributs public. Chose qui est incorrectes selon le principe d’encapsulation. Nous l’avons fait simplement pour se focaliser sur l’implémentation d’héritage multiple. Pour compléter cette partie , vous devez voir la partie suivante qui va traiter l’encapsulation et l’héritage.
Vous pouvez suivre notre liste des vidéos sur la programmation orientée objet sur notre chaine youtube 9raytifclick (Darija: arabe marocaine) : POO en Python
Aussi, si vous voulez commencer l’apprentissage d’un langage de programmation, voilà notre cours : Langage Python Niveau 1 qui sera très utile pour vous (il vous aide à pratiquer tous les éléments de base de la programmation ; vus dans notre cours d’algorithmique).