Académique Documents
Professionnel Documents
Culture Documents
numérique de
KAMAL IDRISSI
Hamza
Date :
2022.03.15
14:42:20
+01'00'
Classes et objets.
OOP Object Oriented Programming
Classes et objets.
Objectifs de ce module
Plan de ce module
Plan de ce chapitre
1. Une identité.
2. Des variables définissant son état (attributs).
3. Des sous programmes gérant son comportement
(méthodes).
1. Déclarer une classe.
b. Syntaxe générale.
Syntaxe de la déclaration d’une classe :
class nomDeLaClasse:
“““documentation de la classe“““
...
1. Déclarer une classe.
b. Syntaxe générale.
Remarques sur la documentation :
nomDeLaClasse.__doc__
1. Déclarer une classe.
b. Syntaxe générale.
Une première instanciation :
monObjet = nomDeLaClasse()
1. Déclarer une classe.
b. Syntaxe générale.
Exemple :
class compte:
"""gestion d'un compte bancaire"""
monCompte = compte()
print(monCompte)
print(monCompte.__doc__)
1. Déclarer une classe.
b. Syntaxe générale.
Syntaxe de l’accès aux membres d’une classe :
monObjet.monAttribut
monObjet.maMéthode(para1,...)
1. Déclarer une classe.
c. Attributs.
Ajout dynamique d’attributs :
monObjet.monAttribut = valeur
1. Déclarer une classe.
c. Attributs.
Exemple :
class compte:
"""gestion d'un compte bancaire"""
monCompte = compte()
monCompte.nom = "comptePerso"
monCompte.numero = 666
monCompte.solde = -1000
1. Déclarer une classe.
c. Attributs.
Remarque :
c. Attributs.
Autre remarque :
d. Méthodes.
Déclaration de méthodes au sein d’une classe :
class nomDeLaClasse:
“““documentation de la classe“““
def méthode1(self,para1,para2,...):
...
def méthode2(self,para1,para2,...):
...
1. Déclarer une classe.
d. Méthodes.
Explications :
d. Méthodes.
Explications (suite) :
d. Méthodes.
Exemple :
class compte:
"""gestion d'un compte bancaire"""
def crediter(self,x):
self.solde += x
def afficherSolde(self):
print("Le solde vaut :",self.solde)
1. Déclarer une classe.
d. Méthodes.
Exemple (suite) :
monCompte = compte()
monCompte.nom = "comptePerso"
monCompte.numero = 6666
monCompte.solde = -1000
monCompte.crediter(5000)
monCompte.afficherSolde()
1. Déclarer une classe.
class nomDeLaClasse:
“““documentation de la classe“““
monAttributDeClasse = valeur
def méthode1(self,para1,para2,...):
...
1. Déclarer une classe.
class compte:
"""gestion d'un compte bancaire"""
nbreCompte = 0
def crediter(self,x):
self.solde += x
def afficherSolde(self):
print("Le solde vaut :",self.solde)
1. Déclarer une classe.
maClasse.monAttributDeClasse
1. Déclarer une classe.
print(compte.nbreCompte)
monCompte = compte()
monCompte.nom = "comptePerso"
monCompte.numero = 666
monCompte.solde = -1000
compte.nbreCompte += 1
print(compte.nbreCompte)
1. Déclarer une classe.
class nomDeLaClasse:
“““documentation de la classe“““
@classmethod
def maMéthodeDeClasse(cls,para1,...):
...
1. Déclarer une classe.
class compte:
"""gestion d'un compte bancaire"""
nbreCompte = 0
@classmethod
def afficherNbreComptes(cls):
print("Nombre de comptes : ",cls.nbreCompte)
1. Déclarer une classe.
maClasse.maMéthodeDeClasse(...)
unObjet.maMéthodeDeClasse(...)
1. Déclarer une classe.
monCompte = compte()
compte.nbreCompte += 1
compte.afficherNbreComptes()
monAutreCompte = compte()
compte.nbreCompte += 1
monAutreCompte.afficherNbreComptes()
Classes et objets.
2. CONSTRUCTEURS ET
DESTRUCTEURS.
2. Constructeurs et destructeurs.
Plan de ce chapitre
a. La méthode « __init__ ».
b. La méthode « __del__ ».
2. Constructeurs et destructeurs.
a. La méthode “__init__”.
• Pour initialiser les attributs d’un objet que l’on crée, on va
rajouter à nos classes une méthode particulière : un
constructeur.
a. La méthode “__init__”.
Syntaxe de la déclaration de la méthode __init__ :
class nomDeLaClasse:
“““documentation de la classe“““
def __init__(self,para1,para2,...):
...
def méthode1(self,para1,para2,...):
...
2. Constructeurs et destructeurs.
a. La méthode “__init__”.
Exemple :
class compte:
"""gestion d'un compte bancaire"""
def __init__(self,nom,numero,valeur):
self.nom = nom
self.numero = numero
self.solde = valeur
def afficherSolde(self):
print("Le solde vaut :",self.solde)
2. Constructeurs et destructeurs.
a. La méthode “__init__”.
Exemple (suite) :
monCompte = compte("pro",777,10000)
monCompte.afficherSolde()
2. Constructeurs et destructeurs.
a. La méthode “__init__”.
Remarque :
a. La méthode “__init__”.
Valeurs par défaut des attributs :
•On peut donner des valeurs par défaut aux attributs dans la
méthode “__init__“.
monObjet = nomDeLaClasse()
a. La méthode “__init__”.
Exemple :
class compte:
"""gestion d'un compte bancaire"""
def __init__(self,nom="perso"
,numero=666,valeur=1000):
self.nom = nom
self.numero = numero
self.solde = valeur
def afficherSolde(self):
print("Le solde vaut :",self.solde)
2. Constructeurs et destructeurs.
a. La méthode “__init__”.
Exemple (suite) :
monCompte = compte("pro",777,10000)
monCompte.afficherSolde()
monAutreCompte = compte()
monAutreCompte.afficherSolde()
2. Constructeurs et destructeurs.
a. La méthode “__init__”.
Remarque : si l’on dispose d’un attribut de classe
dénombrant le nombre d’objets instanciés il est pertinent de
le mettre à jour dans la méthode __init__
class compte:
nbreCompte = 0
def __init__(self,nom="perso"
,numero=666,valeur=1000):
self.nom = nom
self.numero = numero
self.solde = valeur
compte.nbreCompte += 1
2. Constructeurs et destructeurs.
a. La méthode “__init__”.
Remarque (suite) :
monCompte = compte("pro",777,10000)
print(compte.nbreCompte)
monAutreCompte = compte()
print(compte.nbreCompte)
2. Constructeurs et destructeurs.
b. La méthode “__del__”.
• Pour libérer la mémoire d’un objet que l’on n’utilise plus,
on va rajouter à nos classes une méthode particulière : un
destructeur.
b. La méthode “__del__”.
Syntaxe de la déclaration de la méthode __del__ :
class nomDeLaClasse:
“““documentation de la classe“““
def __init__(self,para1,para2,...):
...
def __del__(self):
...
def méthode1(self,para1,para2,...):
...
2. Constructeurs et destructeurs.
b. La méthode “__del__”.
Remarque :
b. La méthode “__del__”.
Exemple :
class compte:
nbreCompte = 0
def __init__(self,nom="perso"
,numero=666,valeur=1000):
self.nom = nom
self.numero = numero
self.solde = valeur
compte.nbreCompte += 1
def __del__(self):
compte.nbreCompte -= 1
2. Constructeurs et destructeurs.
b. La méthode “__del__”.
Exemple (suite) :
def unePetiteProcedure():
unAutreCompte = compte()
compte.afficherNbreComptes()
monCompte = compte()
monAutreCompte = compte()
compte.afficherNbreComptes()
unePetiteProcedure()
compte.afficherNbreComptes()
Classes et objets.
3. ENCAPSULATION.
3. Encapsulation.
Plan de ce chapitre
a. Rappel du principe.
b. Comment rendre un attribut “privé“.
c. Le rôle des accesseurs.
d. Le rôle des mutateurs.
3. Encapsulation.
a. Rappel du principe.
Encapsulation : principe interdisant l’accès direct aux
attributs. On ne dialoguera avec l’objet qu’à travers une
interface définissant les services accessibles aux l’utilisateurs
de l’objet. Ce sera le rôle des méthodes.
3. Encapsulation.
a. Rappel du principe.
• Le principe d’encapsulation est donc de déclarer :
def __init__(self,para1,para2,...):
attributPublic = valeur
__attributPrivé = valeur
...
3. Encapsulation.
class compte:
"""gestion d'un compte bancaire"""
def __init__(self,nom,numero,valeur):
self.nom = nom
self.numero = numero
self.__solde = valeur
def afficherSolde(self):
print("Le solde :",self.__solde)
3. Encapsulation.
monCompte = compte("pro",777,10000)
monCompte.nom = "perso"
print(monCompte.nom)
3. Encapsulation.
monCompte = compte("pro",777,10000)
print(monCompte.__solde)
3. Encapsulation.
class compte:
"""gestion d'un compte bancaire"""
def __init__(self,nom,numero,valeur):
self.__nom = nom
self.__numero = numero
self.__solde = valeur
def afficherSolde(self):
print("Le solde :",self.__solde)
3. Encapsulation.
class compte:
"""gestion d'un compte bancaire"""
def __init__(self,nom,numero,valeur):
self.__nom = nom
self.__numero = numero
self.__solde = valeur
def getSolde(self):
return self.__solde
3. Encapsulation.
monCompte = compte("pro",777,10000)
print(monCompte.getSolde())
3. Encapsulation.
class compte:
"""gestion d'un compte bancaire"""
def __init__(self,nom,numero,valeur):
self.__nom = nom
self.__numero = numero
self.__solde = valeur
def getSolde(self):
return self.__solde
def crediter(self,x):
self.__solde += x
3. Encapsulation.
monCompte = compte("pro",777,10000)
monCompte.crediter(500000)
print(monCompte.getSolde())
3. Encapsulation.
e. Exercice.
Exercice : compléter la classe “compte” avec des accesseurs
et des mutateurs pour chacun de ses attributs.
3. Encapsulation.
e. Exercice.
Solution :
class compte:
def debiter(self,x):
if x < self.__solde:
self.__solde -= x
def getNumero(self):
return self.__numero
def getNom(self):
return self.__nom
def setNom(self,nom):
self.__nom = nom
def setNumero(self,num):
self.__numero = num