Académique Documents
Professionnel Documents
Culture Documents
Chapitre 5
POO/Gestion des exceptions
6 novembre 2022
Plan
1 Programmation orientée objet (POO)
Introduction
Notion de classe
Attributs & Constructeur
Méthodes de classe /Méthodes statiques
L’héritage et la surchage de méthode
2 Gestion des expceptions
Introduction
Qu’est ce qu’une exception ?
Traitement des exceptions
Les mots clés else et Finally
L’instruction raise
Les assertions
Liste des exceptions
ENSA-K, Khouribga 2022-2023 2/ 38
Introduction
Notion de classe
Programmation orientée objet (POO)
Attributs & Constructeur
Gestion des expceptions
Méthodes de classe /Méthodes statiques
L’héritage et la surchage de méthode
Plan
1 Programmation orientée objet (POO)
Introduction
Notion de classe
Attributs & Constructeur
Méthodes de classe /Méthodes statiques
L’héritage et la surchage de méthode
2 Gestion des expceptions
Introduction
Qu’est ce qu’une exception ?
Traitement des exceptions
Les mots clés else et Finally
L’instruction raise
Les assertions
Liste des exceptions
ENSA-K, Khouribga 2022-2023 3/ 38
Introduction
Notion de classe
Programmation orientée objet (POO)
Attributs & Constructeur
Gestion des expceptions
Méthodes de classe /Méthodes statiques
L’héritage et la surchage de méthode
Introduction
La programmation orientée objet (POO), ou programmation par objet, est un
paradigme de programmation informatique élaboré par les Norvégiens Ole-Johan
Dahl et Kristen Nygaard au début des années 1960 et poursuivi par les travaux
d’Alan Kay dans les années 1970.
Il consiste en la définition et l’interaction de briques logicielles appelées objets ;
un objet représente un concept, une idée ou toute entité du monde physique,
comme une voiture, une personne ou encore une page d’un livre.
Un objet possède une structure interne et un comportement, et il sait interagir
avec ses pairs. Il s’agit donc de représenter ces objets et leurs relations
l’interaction entre les objets via leurs relations permet de concevoir et réaliser les
fonctionnalités attendues, de mieux résoudre le ou les problèmes.
Python est un langage de programmation orientée objets.
Les objets sont omniprésents en Python, string, int, float,list ...(qui sont alors
dits natifs, c’est à dire par défaut dans Python), mais est qu’on peut créer des
objets personalisés selon nos besoin ?
On a déjà rencontré des classes qui sont déjà programmées dans Python :
- Les listes qui ont par exemple pour méthodes : pop, append, insert,
remove,...
- Les chaı̂nes de caractères qui ont pour méthodes : upper, isupper,lower,. .
Exemple
>>>s=”CPGE GSR”
>>>type(s)
<class ’str’> #s est un objet de la classe str
>>> s.isupper() #isupper() est une méthode de la classe str
True
ENSA-K, Khouribga 2022-2023 5/ 38
Introduction
Notion de classe
Programmation orientée objet (POO)
Attributs & Constructeur
Gestion des expceptions
Méthodes de classe /Méthodes statiques
L’héritage et la surchage de méthode
Remarque
Généralement, les attributs d’une classe sont définis dans le constructeur
init ()
ENSA-K, Khouribga 2022-2023 7/ 38
Introduction
Notion de classe
Programmation orientée objet (POO)
Attributs & Constructeur
Gestion des expceptions
Méthodes de classe /Méthodes statiques
L’héritage et la surchage de méthode
Exemple
class Point :
Tex ””” Modélise les points d’un plan muni d’un repère ”””
Tex x=None # première composante
Tex y=None # deuxième composante
class Point :
Tex ””” Modélise les points d’un plan muni d’un repère ”””
Tex x=None # première composante
Tex y=None # deuxième composante
Tex #Défintion de la méthode initialise()
Tex def initialise (self ,a,b) :
TexText self.x=a
TexText self.y=b
ENSA-K, Khouribga 2022-2023 16/ 38
Introduction
Notion de classe
Programmation orientée objet (POO)
Attributs & Constructeur
Gestion des expceptions
Méthodes de classe /Méthodes statiques
L’héritage et la surchage de méthode
Code Python
class Point :
Tex x=None # première composante
Tex y=None # deuxième composante
Tex def initialise (self ,a,b) :
TexText self.x=a
TexText self.y=b
Tex def affichePoint(self) :
Textete print(”Point(”,self.x,”,”,self.y,”)”)
a.initialise(3, 5)
a.affiche()
Résultat du programme :Point(3,5) ENSA-K, Khouribga 2022-2023 17/ 38
Introduction
Notion de classe
Programmation orientée objet (POO)
Attributs & Constructeur
Gestion des expceptions
Méthodes de classe /Méthodes statiques
L’héritage et la surchage de méthode
L’héritage
Définition
Dans la programmation orientée objet (que ce soit en Python, C++, Java, ...),
le concept d’héritage est une technique très puissante et extrêmement pratique.
Dans l’héritage on parle de :
• une classe de base (classe mère)
• Une classe dérivée (classe fille)
Le concept de l’héritage permet de créer une nouvelle classe (classe dérivée) à
partir d’une classe existante (classe mère).
• La classe dérivée contient tous les éléments de la classe mère (attributs et
méthodes) sauf ses constructeurs.
• La classe dérivée peut posséder autres éléments : attributs et méthodes.
• La classe dérivée peut redéfinir des méthodes de la classe mère.
L’héritage
Exemple
Résultat
##Créaction de la classe mère Point
Je suis : Point(2,3,)
class Point :
Ma couleur est Rouge
Tex x=None # première composante
Tex
Tex y=None # deuxième composante
Tex
Tex def initialise (self ,a,b) :
Tex
TexText self.x=a
Tex
TexText self.y=b
Tex
Tex def affichePoint(self) :
Tex
Textete return(”Point(”,self.x,”,”,self.y,”)”)
Tex
##Créaction de la classe fille PointCouleur
Tex
class PointCouleur(Point) :
Tex
Tex couleur=”Rouge” # un nouveau attribut
Tex
Tex def info(self) :
Tex
TexText print (” Je suis :”,self.affichePoint())
Tex
TexText print(”Ma couleur est”,self.couleur)
Tex
##Programme principal
Tex
P= PointCouleur()
Tex
P. initialise (2 ,3)
Tex 2022-2023
ENSA-K, Khouribga 20/ 38
P.info ()
Introduction
Notion de classe
Programmation orientée objet (POO)
Attributs & Constructeur
Gestion des expceptions
Méthodes de classe /Méthodes statiques
L’héritage et la surchage de méthode
L’héritage
La classe object
Par défaut, toutes les classes sont descendantes de la classe object et ainsi tous les
objets que l’on crée en Python possèdent les attributs et méthodes de cette classe.
Exemple
>>> issubclass (int, object )
True
>>> issubclass (list , object )
True
>>> issubclass(int,list)
False
>>> issubclass (Point , object )
True
>>> issubclass (PointCouleur , Point )
True
>>> dir( object )
[’ class ’, ’ delattr ’, ’ doc ’, ’ format ’, ’ getattribute ’, ’ hash ’,
’ init ’, ’ new ’, ’ reduce ’, ’ reduce ex ’, ’ repr ’, ’ setattr ’,
’ sizeof ’, ’ str ’, ’ subclasshook ’]
ENSA-K, Khouribga 2022-2023 21/ 38
Introduction
Notion de classe
Programmation orientée objet (POO)
Attributs & Constructeur
Gestion des expceptions
Méthodes de classe /Méthodes statiques
L’héritage et la surchage de méthode
L’héritage
La fonction isinstance
Si x est une instance d’une sous-classe B de A, la fonction isinstance(x,B) ou
isinstance(x,A) renvoie True
Exemple
>>> type(5)
< class ′ int ′ >
>>> isinstance(5, int)
True
>>>L=[1,3,10,-6]
>>> type(L)
< class ′ list ′ >
>>> isinstance(L, list)
True
>>> isinstance(L, tuple)
Flase
>>> isinstance(L, object)
True
ENSA-K, Khouribga 2022-2023 22/ 38
Introduction
Notion de classe
Programmation orientée objet (POO)
Attributs & Constructeur
Gestion des expceptions
Méthodes de classe /Méthodes statiques
L’héritage et la surchage de méthode
Définition
La surchage (redéfinition) d’une méthode est le fait de réécrire
dans une classe B une méthode d’une des classes dont B
hérite.
Lorsque cette méthode sera appelée sur un objet de type B,
alors c’est la méthode redéfinie qui sera utilisée et non la
méthode de la classe mère.
Syntaxe pour créer une classe Dérivée
class NomDeLaClasseFille(NomDeLaClasseMere) :
# Défintion des attributs spécifiques à la classe Fille
# Défintion des méthodes spécifiques à la classe Fille
Plan
1 Programmation orientée objet (POO)
Introduction
Notion de classe
Attributs & Constructeur
Méthodes de classe /Méthodes statiques
L’héritage et la surchage de méthode
2 Gestion des expceptions
Introduction
Qu’est ce qu’une exception ?
Traitement des exceptions
Les mots clés else et Finally
L’instruction raise
Les assertions
Liste des exceptions
ENSA-K, Khouribga 2022-2023 26/ 38
Introduction
Qu’est ce qu’une exception ?
Programmation orientée objet (POO) Traitement des exceptions
Gestion des expceptions Les mots clés else et Finally
L’instruction raise
Les assertions
Liste des exceptions
Introduction
Les erreurs de syntaxe
Jusqu’à maintenant, les messages d’erreurs qu’on a rencontré sont le plus
souvent les erreurs de syntaxe
• manque deux points (’ :’)
• L’indentation n’est pas réspectée
Les erreurs de syntaxe sont mentionnés par l’intepréteur python,
Exemple
>>> for i in range(1,10)
Tex File ”<stdin>”, line 1
TexTE for i in range(1,10)
TexTESTTETSTETSTT ˆ
SyntaxError : invalid syntax
• L’analyseur répère la ligne contenant l’erreur et affiche une petite ‘flèche’
pointant vers le premier endroit de la ligne où l’erreur a été détectée
• L’erreur est causée (ou, au moins, a été détectée comme telle) par le symbole
placé avant la flèche, ici car il manque deux points (’ :’) avant lui,
ENSA-K, Khouribga 2022-2023 27/ 38
Introduction
Qu’est ce qu’une exception ?
Programmation orientée objet (POO) Traitement des exceptions
Gestion des expceptions Les mots clés else et Finally
L’instruction raise
Les assertions
Liste des exceptions
Introduction
En pyhton, même si une instruction ou une expression est syntaxiquement
correcte, elle peut générer une erreur lors de son exécution.
Ce genre d’erreurs sont dues à la mauvaise gestion des cas particuliers comme :
Exemple
>>> print(55/0)
Traceback (most recent call last) :
File ”<stdin>”, line 1, in <module>
ZeroDivisionError : int division or modulo by zero
Le message d’erreur proprement dit comporte deux parties séparées par un
double point : d’abord le type d’erreur, et ensuite une information spécifique de
cette erreur.
Le mot-clé else
Dans un bloc try, else va permettre d’exécuter une action si aucune erreur ne
survient dans le bloc.
Voici un petit exemple :
######Défintion de la fonction calcul()
def calcul(a,b) :
Tex y=a/b
Tex return y
######Programme principal
a=int(input(”Donnez un entier a :”))
b=int(input(”Donnez un entier b :”))
resultat=0
try :
Tex resultat=calcul(a, b)
except ZeroDivisionError :
Tex print (”Division par zero” )
except TypeError :
Tex print (”type incompatible avec la division .”)
else :
Tex print (”Le ré sultat obtenu est”, resultat )
ENSA-K, Khouribga 2022-2023 36/ 38
Introduction
Qu’est ce qu’une exception ?
Programmation orientée objet (POO) Traitement des exceptions
Gestion des expceptions Les mots clés else et Finally
L’instruction raise
Les assertions
Liste des exceptions
Le mot-clé finally
finally permet d’exécuter du code après un bloc try, quelque soit les différents
scénarios.
Voici un petit exemple :
######Défintion de la fonction calcul()
def calcul(a,b) :
Tex y=a/b
Tex return y
######Programme principal
a=int(input(”Donnez un entier a :”))
b=int(input(”Donnez un entier b :”))
resultat=0
try :
Tex resultat=calcul(a, b)
except ZeroDivisionError :
Tex print (”Division par zero” )
except TypeError :
Tex print (”type incompatible avec la division .”)
finally :
Tex print (”Le résultat obtenu est”, resultat )
ENSA-K, Khouribga 2022-2023 37/ 38
Introduction
Qu’est ce qu’une exception ?
Programmation orientée objet (POO) Traitement des exceptions
Gestion des expceptions Les mots clés else et Finally
L’instruction raise
Les assertions
Liste des exceptions
L’instruction raise
Les assertions
Défintion : Les assertions sont un moyen simple de s’assurer, avant de
continuer, qu’une condition est respectée. En général, on les utilise dans des
blocs try ... except.
Sa syntaxe est la suivante :assert test
Si le test renvoie True, l’exécution se poursuit normalement. Sinon, une
exception AssertionError est levée.
Exemple
1 >>>var = 5
2 >>> assert var == 5
3 >>> assert var == 8
4 Traceback ( most recent call last ) :
5 File ” < stdin > ”, line 1, in <module>
6 AssertionError
Comme vous le voyez, la ligne 2 s’exécute sans problème et ne lève aucune
exception. On teste en effet si var == 5. C’est le cas, le test est donc vrai,
aucune exception n’est levée.
À la ligne suivante, cependant, le test est var == 8. Cette fois, le test est faux
et une exception du type AssertionError est levée.
ENSA-K, Khouribga 2022-2023 39/ 38
Introduction
Qu’est ce qu’une exception ?
Programmation orientée objet (POO) Traitement des exceptions
Gestion des expceptions Les mots clés else et Finally
L’instruction raise
Les assertions
Liste des exceptions
Exception Description
IndexError se produit si on cherche à accéder à un élément
d’une liste, en dehors des limites de celle-ci.
NameError se produit quand on évoque une variable (locale
ou globale) dont le nom n’existe pas
SyntaxError se produit quand Python échoue à lire une ex-
pression dont la syntaxe est erronée
TypeError se produit quand une opération est appliquée à
un objet qui n’est pas du type adéquat
ValueError se produit quand la valeur saisie est de type
différent de celui attendu
ZeroDivisionError se produit quand un calcul arithmétique conduit
à une division par 0