Académique Documents
Professionnel Documents
Culture Documents
numérique de
KAMAL IDRISSI
Hamza
Date : 2022.03.22
14:45:28 +01'00'
Héritage.
1. Héritage simple.
1. Héritage simple.
Plan de ce chapitre
a. Rappel du concept.
b. Syntaxe générale.
c. La visibilité “protected“.
d. Le constructeur de la classe fille.
e. Transmission des membres.
1. Héritage simple.
a. Rappel du concept.
Héritage : relation de spécialisation/généralisation entre
deux classes. Elle indique qu’une classe dite classe fille
spécialise une autre classe dite classe mère, i.e. qu’elle
possède les attributs et les méthodes de la classe mère
plus d’autres qui lui sont propres.
b. Syntaxe générale.
Syntaxe de la déclaration d’une relation d’héritage :
class classeMère:
“““une classe mère“““
...
class classeFille(classeMère):
“““une classe fille héritant de la
classe mère“““
...
1. Héritage simple.
b. Syntaxe générale.
Exemple :
class rectangle:
"""gestion de rectangles"""
...
class paveDroit(rectangle):
"""gestion de boîtes à chaussures"""
...
1. Héritage simple.
c. La visibilité “protected“.
• Pour l’instant nous avons rencontré deux types de visibilité
pour les attributs :
c. La visibilité “protected“.
Visibilité “protégée“ :
c. La visibilité “protected“.
Méthode pour déclarer un attribut “protégé“ :
def __init__(self,para1,para2,...):
attributPublic = valeur
_attributProtégé = valeur
__attributPrivé = valeur
...
1. Héritage simple.
c. La visibilité “protected“.
Exemple :
class rectangle:
def __init__(self,x,y):
self._x = x
self._y = y
def surface(self):
return self._x*self._y
1. Héritage simple.
c. La visibilité “protected“.
Remarque importante :
c. La visibilité “protected“.
Exemple : une mauvaise pratique qui viole le principe
d’encapsulation.
photo = rectangle(10,15)
print(photo._x)
print(photo._y)
1. Héritage simple.
class classeFille(classeMère):
“““documentation de la classe fille“““
def __init__(self,para1,para2,...):
classeMère.__init__(self,para1,...)
...
1. Héritage simple.
class paveDroit(rectangle):
def __init__(self,x,y,z):
rectangle.__init__(self,x,y)
self.__z = z
def volume(self):
return self._x*self._y*self.__z
1. Héritage simple.
photo = rectangle(3,4)
print(photo.surface())
weston = paveDroit(3,4,10)
print(weston.volume())
1. Héritage simple.
class classeFille(classeMère):
“““documentation de la classe fille“““
def __init__(self,para1,para2,...):
super().__init__(para1,...)
...
1. Héritage simple.
class paveDroit(rectangle):
def __init__(self,x,y,z):
super().__init__(x,y)
self.__z = z
def volume(self):
return self._x*self._y*self.__z
1. Héritage simple.
class paveDroit(rectangle):
def __init__(self,x,y,z):
super().__init__(x,y)
self.__z=z
def volume(self):
return super().surface()*self.__z
1. Héritage simple.
class paveDroit(rectangle):
def __init__(self,x,y,z):
super().__init__(x,y)
self.__z=z
def volume(self):
return self.surface()*self.__z
1. Héritage simple.
class paveDroit(rectangle):
def __init__(self,x,y,z):
rectangle.__init__(self,x,y)
self.__z = z
def volume(self):
return self._x*self._y*self.__z
1. Héritage simple.
class rectangle:
def __init__(self,x,y):
self.__x = x
self.__y = y
def surface(self):
return self.__x*self.__y
1. Héritage simple.
class paveDroit(rectangle):
def __init__(self,x,y,z):
rectangle.__init__(self,x,y)
self.__z = z
def volume(self):
return self.__x*self.__y*self.__z
1. Héritage simple.
santoni = paveDroit(2,3,4)
print(santoni.volume())
Héritage.
2. Héritage multiple.
2. Héritage multiple.
Plan de ce chapitre
a. Rappel du concept.
b. Syntaxe générale.
c. Le constructeur de la classe fille.
d. Recherche dans la hiérarchie.
2. Héritage multiple.
a. Rappel du concept.
Héritage multiple : possibilité pour une classe de posséder
plusieurs classes mères.
2. Héritage multiple.
a. Rappel du concept.
Remarque :
b. Syntaxe générale.
Syntaxe de la déclaration d’une relation d’héritage multiple
class mère1:
“““une classe mère“““
...
class mère2:
“““une classe mère“““
...
class classeFille(mère1,mère2,...):
“““une classe fille héritant des
classes mère1 et mère2 “““
...
2. Héritage multiple.
b. Syntaxe générale.
Exemple :
class carnivore:
"""gestions des carnivores"""
...
class herbivore:
"""gestion des herbivores"""
...
class omnivore(carnivore,herbivore):
"""gestion des omnivores"""
...
2. Héritage multiple.
class classeFille(mère1,mère2,...):
“““documentation de la classe fille“““
def __init__(self,para1,para2,...):
mère1.__init__(self,para1,...)
mère2.__init__(self,para1,...)
...
2. Héritage multiple.
class carnivore:
def __init__(self,p):
self._poidsViande = p
def devorer(self):
print("Je mange ",self._poidsViande,
"kilogs de steack par jour")
2. Héritage multiple.
class herbivore:
def __init__(self,p):
self._poidsHerbe = p
def brouter(self):
print("Je mange ",self._poidsHerbe,
"kilogs de gazon par jour")
2. Héritage multiple.
class omnivore(carnivore,herbivore):
def __init__(self,pv,ph,h):
carnivore.__init__(self,pv)
herbivore.__init__(self,ph)
self.__humain = h
2. Héritage multiple.
teddy = omnivore(10,5,False)
teddy.devorer()
teddy.brouter()
2. Héritage multiple.
class fille(mère1,mère2,mère3...):
“““une classe fille héritant des classes mère1,
mère2 “““
...
2. Héritage multiple.
class a:
"""une classe a"""
def exemple(self):
print("je l'ai trouvée dans a")
class b:
"""une classe b"""
def exemple(self):
print("je l'ai trouvée dans b")
2. Héritage multiple.
class c(a,b):
"""une classe c qui hérite de a et b"""
test = c()
test.exemple()
2. Héritage multiple.
class c(b,a):
"""une classe c qui hérite de a et b"""
test = c()
test.exemple()