9-CH5-Les Classes

Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1sur 4

CH4- Les classes

I Programmation orientée objet


1- Définition et utilité
- La programmation orientée objet (POO) est un concept de programmation très puissant qui permet
de structurer ses programmes d’une manière nouvelle.
- En POO, on définit un « objet » qui peut contenir des attributs » ainsi que des méthodes
qui agissent sur lui-même.
- La POO permet de rédiger du code plus compact et mieux réutilisable.
- La POO intègre aussi les méthodes spéciales: constructeur, destructeur.
- La POO amène de nouveaux concepts tels que le polymorphisme (capacité à redéfinir le comportement
des opérateurs), ou bien encore l’héritage (capacité à définir une classe à partir d’une classe
préexistante et d’y ajouter de nouvelles fonctionnalités).
≪ Tout en Python est un objet ≫
2- Les classes
- Une classe définit des objets qui sont des instances (des représentants) de cette classe
(Tout en Python est un objet).
- Les objets peuvent posséder des attributs (variables associées aux objets: champs, propriétés)
et des méthodes (qui sont des fonctions associées aux objets et qui peuvent agir sur ces derniers
ou encore les utiliser et les manipuler).
- Les attributs et les méthodes représentent les membres de la classe.
Remarques:
- La classe est un type structuré qui va plus loin que l’enregistrement
(l’enregistrement n’intègre que les champs).
- Les attributs d’une classe peuvent être de type quelconque.
- Les attributs peuvent faire référence à d’instances d’autres classes
Termes techniques en POO:
- La classe est la structure.
- L’objet est une instance de la classe (variable obtenue après instanciation).
- L’instanciation » consiste à la création d’un objet.
- Les destructeurs ( __del __ () ) sont appelés lorsqu'un objet est détruit.
NB : En Python, les destructeurs ne sont pas aussi nécessaires que en C++, car Python dispose
d'un ramasse-miettes qui gère automatiquement la gestion de la mémoire. Donc, c’est inutile
de faire la destruction d’un objet explicitement.
II- Les classes en Python
1- Créer une classe
Pour créer une classe, utilisez le mot-clé class:
Syntaxe :
class NomDeLaClasse:
"""La documentation de la classe (optionnel)"""

# Définition d'attributs de classe (optionnel)


nom_attribut = valeur_attribut

# Définition du constructeur
def __init__(self, parametre1, parametre2, ...):
# Initialisation des attributs de l'objet
self.attribut1 = parametre1
self.attribut2 = parametre2

# Définition d'autres méthodes de classe


def nom_methode(self, parametre1, parametre2, ...):
# Corps de la méthode
...

CH4- Les classes -1-


Explications :
- Le mot-clé class : est utilisé pour définir une nouvelle classe.
- NomDeLaClasse : est le nom de la classe, suivi de : pour ouvrir le bloc de définition de la classe.
- La documentation de la classe : est facultative et fournit une description de la classe.
- Les attributs de classe : sont définis directement à l'intérieur de la classe.
- Le constructeur de la classe, __init__, est une méthode spéciale utilisée pour initialiser les attributs
de l'objet lors de sa création.
- self est un paramètre spécial qui fait référence à l'instance actuelle de la classe. Il est utilisé pour accéder
aux attributs de l'objet à l'intérieur de la classe.
- Les autres méthodes de la classe sont définies de la même manière que le constructeur, mais peuvent
avoir des paramètres différents selon les besoins.
- Dans Python, le point (.) est utilisé pour accéder aux attributs et méthodes d'un objet. Lorsque
vous utilisez objet.attribut, Python recherche l'attribut nommé attribut dans l'objet donné.

2- Instanciation et utilisation dans le programme principal


Exemple :
# Importation du module
import Module_Rectangle as MR

# Instanciation d'objet rectangle1


rectangle1 = MR.Rectangle()
# Affichage de tous les membres de rectangle1
print(dir(rectangle1))
# Affectation aux attributs ou utilisation de la méthode saisie()
rectangle1.long = int(input("Longueur : "))
12 rectangle1.larg = int(input("Largeur : "))
# Appels des méthodes avec l'objet rectangle1
# Affichage des résultats
print(rectangle1.surface())
print(rectangle1.perimetre())

III- Gestion des collections d’objets : Exemple: les listes


- Python intègre des outils pour la gestion des collections d’objets hétérogènes (tuple, liste, dictionnaire).
Ces outils sont opérationnels pour les instances de nos classes.

- Les collections de nos objets (instances de nos classes) servent à une programmation plus organisée
et efficace.
- L’intérêt d’utilisation des collections des objets est aussi important pour étudier les fichiers.
- Les objets de la collection peuvent être différents. Quand ce sont des instances de classes héritières
du même ancêtre, on parle de liste polymorphe.
- Le gestionnaire de collection peut être un dictionnaire, le mécanisme « clé – valeur » (« clé – objet »)
est très utilisé dans d’autres applications et domaines (ex. bases NoSQL).

IV- Autres utilisations des classes


- Une fonction peut renvoyer un objet (une instance de classe).
- L’héritage permet de construire une hiérarchie de classes. Les classes héritières
(filles) héritent les attributs et les méthodes de la classe ancêtre (mère).
- Surcharge des méthodes.
- Une collection peut contenir des objets de types différents.
- Une variable de classe est un champ directement accessible sur la classe,
et qui est partagée par toutes les instances de la classe.

CH4- Les classes -2-


V- Encapsulation
- L'encapsulation est un concept important en programmation orientée objet.
- Il s’agit d’un mécanisme qui consiste à rassembler les données et les méthodes au sein d'une structure
en cachant l'implémentation de l'objet, c'est-à-dire en empêchant l'accès aux données par un autre
moyen que les services proposés.
- Python n’implémente pas directement ces concepts de visibilité des membres de classe et il est donc
impossible de définir un membre comme privé ou protégé : par défaut, tous les membres de classe sont
publics en Python.
- En revanche, certaines conventions ont été mises en place par la communauté Python, notamment
au niveau des noms des membres de classe qui servent à indiquer aux autres développeurs qu’on ne
devrait accéder à tel membre que depuis l’intérieur de la classe ou à tel autre membre que depuis
la classe ou une classe fille.

Les règles à respecter sont les suivantes :


1- Rendre privés les attributs caractérisant l’état de l'objet. Si nous voulons respecter le concept
d'encapsulation, nous devons donc conserver la portée de cet attribut et définir des accesseurs
pour y avoir accès.
2- Fournir des méthodes publiques permettant de accéder/modifier l'attribut
• accesseurs
• mutateurs
Exemple:
class Voiture():
"""La classe voiture definie par sa largeur"""
# Constructeur
def __init__(self, valeur):
self.__largeur = valeur
# Methodes publiques: Accesseurs et Mutateurs
# Accesseurs
def getLargeur(self):
return self.__largeur
# Mutateurs
def setLargeur(self, value):
self.__largeur = value
# Methodes publiques : Operations
def mettreAJour (self) :
...

CH4- Les classes -3-


CH4- Les classes -4-

Vous aimerez peut-être aussi