|
- Chapitre 18 - Classes (3ème partie)
- ====================================
-
- Rappel - composition
- ---------------------
-
- Dans le chapitre 13 on a parlé de *composition* qui décrit une relation entre deux classes.
-
- Pour rappel::
-
-
- class Chat:
- def __init__(self, nom):
- self.nom = nom
-
- def ronronne(self):
- print(self.nom, 'fait: "prrrrr"')
-
- def caresse(self):
- self.ronronne()
-
-
- class Enfant:
- def __init__(self, prénom, chat):
- self.chat = chat
-
- def console(self):
- self.chat.caresse()
-
-
-
- Héritage
- --------
-
- L'héritage décrit une autre relation entre classes, appelée parfois un peu abusivement "partage de code".
-
- Petit détour
- ++++++++++++
-
- Commencons par une question - qu'est-ce qui ne va pas dans ce code ?::
-
- def faire_le_café():
- mettre_café_dans_tasse()
- allumer_bouilloire()
- attendre_que_ça_bouille()
- verser_dans_tasse()
- melanger()
-
- def faire_le_thé():
- mettre_thé_dans_tasse()
- allumer_bouilloire()
- attendre_que_ça_bouille()
- verser_dans_tasse()
- laisser_infuser()
-
-
- Le proble est la *duplication* du code. Les lignes de ``allumer_bouilloire()`` à ``verser_dans_tasse()`` sont
- identiques.
-
- Du coup:
-
- * Le code est plus long
- * Si jamais la procédure pour faire chauffer l'eau change, il faudra changer
- le code a deux endroits différents
-
- Une solution est possible est *d'extraire une fonction*::
-
-
- def faire_chauffer_l_eau():
- allumer_bouilloire()
- attendre_que_ça_bouille()
-
-
- def faire_le_café():
- mettre_café_dans_tasse()
- faire_chauffer_l_eau()
- verser_dans_tasse()
- melanger()
-
- def faire_le_thé():
- mettre_thé_dans_tasse()
- faire_chauffer_l_eau()
- verser_dans_tasse()
- laisser_infuser()
|