debuter_en_python:poo
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
debuter_en_python:poo [2024/09/10 15:57] – [Les méthodes] gerardadmin | debuter_en_python:poo [2024/09/10 16:26] (Version actuelle) – [Programmation Orientée Objet (POO)] gerardadmin | ||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
La programmation orientée objet (POO) permet de créer des entités (objets) que l'on peut manipuler . La programmation orientée objet impose des structures solides et claires. Les objets peuvent interagir entre eux, cela facilite grandement la compréhension du code et sa maintenance. On oppose souvent la programmation objet à la programmation procédurale , la première étant plus " | La programmation orientée objet (POO) permet de créer des entités (objets) que l'on peut manipuler . La programmation orientée objet impose des structures solides et claires. Les objets peuvent interagir entre eux, cela facilite grandement la compréhension du code et sa maintenance. On oppose souvent la programmation objet à la programmation procédurale , la première étant plus " | ||
- | Les classes | + | |
+ | La notion la plus importante en programmation orientée objet est **le concept de classe.** | ||
+ | ======Les classes====== | ||
Une classe regroupe des fonctions et des attributs qui définissent un objet. On appelle par ailleurs les fonctions d'une classe des " méthodes ". | Une classe regroupe des fonctions et des attributs qui définissent un objet. On appelle par ailleurs les fonctions d'une classe des " méthodes ". | ||
Ligne 36: | Ligne 38: | ||
>>> | >>> | ||
- | ==== Les attributs de class ==== | + | ==== Les attributs de classe |
Les attributs de classe permettent de stocker des informations au niveau de la classe. Elle sont similaires aux variables. | Les attributs de classe permettent de stocker des informations au niveau de la classe. Elle sont similaires aux variables. | ||
Ligne 137: | Ligne 139: | ||
Le résultat sera le même, mais la lecture du code se trouve amélioré. | Le résultat sera le même, mais la lecture du code se trouve amélioré. | ||
+ | ==== La fonction dir==== | ||
+ | |||
+ | Parfois il est intéressant de decortiquer un objet pour résoudre à un bug ou pour comprendre un script. | ||
+ | |||
+ | La fonction dir vous donne un aperçu des méthodes de l' | ||
+ | |||
+ | >>> | ||
+ | < | ||
+ | [' | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== L' | ||
+ | |||
+ | |||
+ | Cet attribut spécial vous donne les valeurs des attributs de l' | ||
+ | |||
+ | >>> | ||
+ | {' | ||
+ | |||
+ | ====L' | ||
+ | |||
+ | L' | ||
+ | |||
+ | Gardons l' | ||
+ | |||
+ | <code pyton3 class005.py> | ||
+ | class Voiture: | ||
+ | |||
+ | roues = 4 | ||
+ | moteur = 1 | ||
+ | |||
+ | def __init__(self): | ||
+ | self.nom = "A déterminer" | ||
+ | |||
+ | class VoitureSport(Voiture): | ||
+ | |||
+ | def __init__(self): | ||
+ | self.nom = " | ||
+ | </ | ||
+ | |||
+ | On a indiqué que VoitureSport a hérité de classe Voiture , elle recupère donc toutes ses méthodes et ses attributs. | ||
+ | |||
+ | On peut toujours instancier la classe Voiture si on le désire: | ||
+ | |||
+ | >>> | ||
+ | >>> | ||
+ | 'A déterminer' | ||
+ | >>> | ||
+ | 4 | ||
+ | |||
+ | Instancions maintenant la classe VoitureSport : | ||
+ | |||
+ | >>> | ||
+ | >>> | ||
+ | ' | ||
+ | >>> | ||
+ | 4 | ||
+ | |||
+ | On remarque tout d' | ||
+ | |||
+ | ====Polymorphisme / surcharge de méthode==== | ||
+ | |||
+ | Comme nous l' | ||
+ | |||
+ | Exemple: | ||
+ | |||
+ | <code pyton3 class006.py> | ||
+ | # coding: utf-8 | ||
+ | |||
+ | class Voiture: | ||
+ | |||
+ | roues = 4 | ||
+ | moteur = 1 | ||
+ | |||
+ | def __init__(self): | ||
+ | self.nom = "A déterminer" | ||
+ | | ||
+ | def allumer(self): | ||
+ | print "La voiture démarre" | ||
+ | |||
+ | class VoitureSport(Voiture): | ||
+ | |||
+ | def __init__(self): | ||
+ | self.nom = " | ||
+ | |||
+ | ma_voiture_sport = VoitureSport() | ||
+ | ma_voiture_sport.allumer() | ||
+ | |||
+ | </ | ||
+ | |||
+ | Le résultat: | ||
+ | |||
+ | La voiture démarre | ||
+ | |||
+ | Il est cependant possible d' écraser la méthode de la classe parente en la redéfinissant. On parle alors de surcharger une méthode . | ||
+ | |||
+ | <code python class007.py> | ||
+ | |||
+ | # coding: utf-8 | ||
+ | |||
+ | class Voiture: | ||
+ | |||
+ | roues = 4 | ||
+ | moteur = 1 | ||
+ | |||
+ | def __init__(self): | ||
+ | self.nom = "A déterminer" | ||
+ | | ||
+ | def allumer(self): | ||
+ | print "La voiture démarre" | ||
+ | |||
+ | class VoitureSport(Voiture): | ||
+ | |||
+ | def __init__(self): | ||
+ | self.nom = " | ||
+ | | ||
+ | def allumer(self): | ||
+ | print "La voiture de sport démarre" | ||
+ | |||
+ | ma_voiture_sport = VoitureSport() | ||
+ | ma_voiture_sport.allumer() | ||
+ | </ | ||
+ | |||
+ | Le résultat: | ||
+ | |||
+ | La voiture de sport démarre | ||
+ | |||
+ | Enfin dernier point intéressant: | ||
+ | |||
+ | <code python class008.py> | ||
+ | # coding: utf-8 | ||
+ | |||
+ | class Voiture: | ||
+ | |||
+ | roues = 4 | ||
+ | moteur = 1 | ||
+ | |||
+ | def __init__(self): | ||
+ | self.nom = "A déterminer" | ||
+ | | ||
+ | def allumer(self): | ||
+ | print "La voiture démarre" | ||
+ | |||
+ | class VoitureSport(Voiture): | ||
+ | |||
+ | def __init__(self): | ||
+ | self.nom = " | ||
+ | | ||
+ | def allumer(self): | ||
+ | Voiture.allumer(self) | ||
+ | print "La voiture de sport démarre" | ||
+ | |||
+ | ma_voiture_sport = VoitureSport() | ||
+ | ma_voiture_sport.allumer() | ||
+ | |||
+ | </ | ||
+ | |||
+ | Le résultat: | ||
+ | |||
+ | La voiture démarre | ||
+ | La voiture de sport démarre | ||
+ | |||
+ | Les classes Voiture et VoitureSport possédent donc chacune une méthode de même nom mais ces méthodes n' | ||
+ | Conventions | ||
+ | |||
+ | Prenez l' | ||
+ | |||
+ | voiture_sport = VoitureSport() | ||
+ | | ||
+ | ======= Programmation Orientée Objet (POO) ======= | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | [[https:// |
/home/chanteri/www/fablab37110/data/attic/debuter_en_python/poo.1725976674.txt.gz · Dernière modification : 2024/09/10 15:57 de gerardadmin