0% ont trouvé ce document utile (0 vote)
65 vues239 pages

Introduction à la Programmation Orientée Objet

Le document présente les concepts fondamentaux de la programmation orientée objet (POO), en mettant l'accent sur ses avantages tels que la modularité, l'abstraction et la réutilisabilité. Il explique la structure des classes, des attributs et des méthodes, ainsi que l'instanciation d'objets et l'utilisation de constructeurs. Enfin, des exercices pratiques sont proposés pour appliquer ces concepts dans le langage Python.

Transféré par

ananadi2022
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
65 vues239 pages

Introduction à la Programmation Orientée Objet

Le document présente les concepts fondamentaux de la programmation orientée objet (POO), en mettant l'accent sur ses avantages tels que la modularité, l'abstraction et la réutilisabilité. Il explique la structure des classes, des attributs et des méthodes, ainsi que l'instanciation d'objets et l'utilisation de constructeurs. Enfin, des exercices pratiques sont proposés pour appliquer ces concepts dans le langage Python.

Transféré par

ananadi2022
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

PRGRAMMATION ORIENTEE

OBJET

IDRISSI KHAMLICHI SAFAA NTIC 2024-2025


2 PRGRAMMATION ORIENTEE OBJET
APPRÉHENDER LE PARADIGME DE LA POO
1

CONNAÎTRE LES PRINCIPAUX PILIERS DE LA POO


2

CODER DES SOLUTIONS ORIENTÉES OBJET


3

MANIPULER LES MODULESET LES BIBLIOTHÈQUES


4
NTIC 2024-2025
3 PRGRAMMATION ORIENTEE OBJET

Partie 1: APPRÉHENDER LE
PARADIGME DE LA POO
Chapitre 1 : Introduction à la
POO

Chapitre 2 : PARADIGME
OBJET

NTIC 2024-2025
4 INTRODUCTION
Dans la programmation procédurale, le programme est divisé en petites parties appelées procédures ou
fonctions.
• Ensuite, pour résoudre chaque partie, une ou plusieurs procédures/fonctions sont utilisées.
• Dans la programmation procédurale, les notions de données et de traitement de ces données sont
séparées. Inconvénients:
• Difficulté de réutilisation du code.
• Difficulté de la maintenance de grandes applications.
Au fur et à mesure que les programmes écrits avec une
approche procédurale grossissent, ils deviennent fragiles et
mettent en danger les données.

NTIC 2024-2025
5 INTRODUCTION

la programmation orientée objet :

 Séparation (données, procédures) est-elle utile ?

 Pourquoi privilégier les procédures sur les données ?

 Pourquoi ne pas considérer que les programmes sont avant tout des ensembles

objets informatiques caractérisé par les opérations qu’ils connaissent?

NTIC 2024-2025
6 INTRODUCTION
Les langages orientés objets sont nés pour répondre à ces questions.
Ils sont fondés sur la connaissance d’une seule catégorie d’entités informatiques : LES OBJETS
Ainsi, un objet est une entité qui regroupe des propriétés statiques et d'autres dynamiques.

 La programmation orientée objet (POO) est un paradigme de programmation dans lequel


nous pouvons considérer des problèmes complexes comme des objets.

 Un paradigme est une théorie qui fournit la base de la résolution des problèmes.

NTIC 2024-2025
7 INTRODUCTION
Objectifs et Avantages de la POO

 Objectif :
Faciliter la conception, l'exploitation et la maintenabilité de gros programmes.
 Avantages:

• Modularité : les objets forment des modules compacts regroupant des données et un ensemble d'opérations ce qui
réduit la complexité de l’application (classe = module)

• Abstraction :

 Les entités objets de la POO sont proches de celles du monde réel (objet est un compte, stagiaire, etc…).

 La POO se base sur un processus qui consiste à masquer des détails non pertinents à l’utilisateur.

• Réutilisabilité:

 La POO favoriser la réutilisation de composants logiciels et même d'architectures complexes

 définition d’une relation d’héritage entre les entités logicielle évite la duplication de code → Facilité de la
maintenance logicielle et amélioration de la productivité
NTIC 2024-2025
8 INTRODUCTION
 Brève historique de l’évolution des langages de programmation Orientée
Objet

Eiffel,C++,objectif C Java PHP , C#,Ruby, Python

NTIC 2024-2025
9 PRGRAMMATION ORIENTEE OBJET

Partie 1:APPRÉHENDER LE
PARADIGME DE LA POO
Chapitre 1 : Introduction à la
POO

Chapitre 2 : PARADIGME
OBJET

NTIC 2024-2025
10
PARADIGME OBJET
1- Classe

 Une classe est une structure informatique représentant

les principales caractéristiques d'un élément du monde réel grâce :

 à des variables, qui représentent les divers attributs de l'élément que vous souhaitez utiliser ;

 à des méthodes, qui permettent de définir les comportements de vos éléments.

 Une classe contient donc des variables et des méthodes, qui forment un tout.

 Une classe peut être comparée à un moule,


 lorsque nous le remplissons, nous donne un objet ayant la forme du moule, et toutes ses caractéristiques.
 Instancier une classe consiste à créer un objet sur son modèle

NTIC 2024-2025
11 PARADIGME OBJET

NTIC 2024-2025
12 PARADIGME OBJET

Une classe est caractérisée par :


• Un nom
• Une composante statique : des champs (ou attributs). Ils
caractérisent l’état des objets pendant l’exécution du
programme
• Une composante dynamique : des méthodes représentant
le comportement des objets de cette classe. Elles
manipulent les champs des objets et caractérisent les
actions pouvant être effectuées par les objets

NTIC 2024-2025
13 PARADIGME OBJET
Syntaxe de déclaration d’une classe:

Exemple:
La première lettre du nom d’une classe doit toujours être une lettre majuscule (ex : Chat).

NTIC 2024-2025
14 PARADIGME OBJET

2- Attribut Un attribut peut être de type :


Un attribut appelé également champ ou donnée membre • simple: entier, réel, chaine de caractères, caractère, etc
correspond à une propriété de la classe, il est défini par:
• Objet de type classe: Etudiant, Voiture, etc
• un nom,
• un type de données
• une valeur initiale (éventuellement)

NTIC 2024-2025
15
PARADIGME OBJET
Accès aux attributs

Pour accéder à un attribut d’un objet on indique le nom de la référence de l'objet suivi par le nom de l’attribut dans
l’objet de la manière suivante :

• nomObjet : nom de de la référence à l’objet

• nomAttribut = nom de l’attribut

NTIC 2024-2025
16
PARADIGME OBJET
 Définir une variable de classe qui est partagée entre toutes les instances d'une même classe.

Accès :

• Depuis, une méthode de la classe comme pour tout autre attribut

• Via une instance de la classe

• À l’aide du nom de la classe

NTIC 2024-2025
17 PARADIGME OBJET
Syntaxe de déclaration d’un attribut :

NTIC 2024-2025
18
PARADIGME OBJET
3- Méthode

 Les méthodes sont des fonctions qui implémentent les traitements de la classe.

 Le type retourné peut être élémentaire ou correspondre à un objet

 Si la méthode ne retourne rien, alors on utilise void.

Syntaxe de déclaration d’une méthode :

NTIC 2024-2025
19 PARADIGME OBJET

A part le premier paramètre qui doit de préférence s’appeler self, la syntaxe de définition
d’une méthode ressemble en tout point à celle d’une fonction. Le corps de la méthode est
indenté par rapport à la déclaration de la méthode, elle-même indentée par rapport à la
déclaration de la classe.

NTIC 2024-2025
20 PARADIGME OBJET
Méthodes de classe ou méthodes statiques

 Les méthodes statiques peuvent être appelées sans création d’instance au


préalable.

 Une méthode statique peut être appelée sans instance. De ce fait, le paramètre
Self est inutile.

 La déclaration d’une méthode statique se fait avec le décorateur @staticmethod

NTIC 2024-2025
21
PARADIGME OBJET
4-Constructeur et instanciation

• Le constructeur d’une classe est une méthode dont le nom commence


obligatoirement par _ _init_ _ , sa syntaxe est la même que celle d’une
méthode sauf que le constructeur ne peut employer l’instruction return.

• Le constructeur doit avoir comme premier paramètre l’attribut self. Il peut


également contenir un ensemble de paramètres.

• Le constructeur crée l’état initial de l’objet avec l’ensemble minimal de


paramètres dont il a besoin pour exister.

NTIC 2024-2025
22 PARADIGME OBJET

 Syntaxe de déclaration d’un constructeur :

 Appel d’un constructeur

• Par défaut, toute classe en Python a un constructeur par défaut sans paramètre
• Le constructeur par défaut n’existe plus si la classe présente un constructeur à
paramètre.
• Contrairement à d'autres langues, la classe de Python n'a qu'un seul constructeur.
NTIC 2024-2025
23 PARADIGME OBJET

Cependant, Python permet à un paramètre de prendre une valeur par défaut.


Remarque :
Tous les paramètres requis doivent précéder tous les paramètres qui ont des valeurs par
défaut.

NTIC 2024-2025
24 PARADIGME OBJET

L’exemple suivant montre deux classes pour lesquelles un constructeur a été défini.
• La première n’ajoute aucun paramètre, la création d’une instance ne nécessite pas de
paramètre supplémentaire.

• La seconde classe ajoute deux paramètres a et b. Lors de la création d’une instance de la


classe classe2, il faut ajouter deux valeurs.

NTIC 2024-2025
25
PARADIGME OBJET
4- Objet

 Un « objet » est une représentation d'une chose matérielle ou immatérielle du réel à


laquelle on associe des propriétés et des actions.

Par exemple :

 une voiture, une personne, un animal, un nombre ou bien un compte bancaire


peuvent être vus comme des objets.

Syntaxe d’instanciation d’un objet :

NTIC 2024-2025
26
PARADIGME OBJET

 Une instance est une représentation particulière d'une classe.

 Lorsque l'on crée un objet, on réalise ce que l'on appelle une « instance de
la classe ». C'est à dire que du moule, on en extrait un nouvel objet qui
dispose de ses attributs et de ses méthodes. L'objet ainsi créé aura pour
type le nom de la classe.

Par exemple, les objets Mohamed, Rayane, Nada, Dounia sont des instances
(objets) de la classe Personne.

NTIC 2024-2025
27 PARADIGME OBJET

Exemple complet :

NTIC 2024-2025
28 PARADIGME OBJET

NTIC 2024-2025
29 PARADIGME OBJET

• Les destructeurs sont appelés lorsqu'un objet est détruit.

• les destructeurs ne sont pas nécessaires car Python dispose d'un ramasse-miettes
assurant le gestion automatiquement de la mémoire.

• La méthode __del __ () est une méthode appelée destructeur en Python. Il est appelé
lorsque toutes les références à l’objet ont été supprimées, c’est-à-dire lorsqu’un objet est
nettoyé.

Syntaxe de destructeur :

NTIC 2024-2025
30 Exercice :
Classe Rectangle :

1- Ecrire une classe Rectangle en langage Python, permettant de construire un rectangle

dotée d'attributs longueur et largeur.

2- Créer une méthode Afficher() permettant d’afficher la longueur et la largeur du rectangle.

3- Créer une méthode Perimetre() permettant de calculer le périmètre du rectangle et une

méthode Surface() permettant de calculer la surface du rectangle

4-Créer 3 objets différents et appeler les méthodes

NTIC 2024-2025
31 PARADIGME OBJET

• Les destructeurs sont appelés lorsqu'un objet est détruit.

• les destructeurs ne sont pas nécessaires car Python dispose d'un ramasse-miettes
assurant le gestion automatiquement de la mémoire.

• La méthode __del __ () est une méthode appelée destructeur en Python. Il est appelé
lorsque toutes les références à l’objet ont été supprimées, c’est-à-dire lorsqu’un objet est
nettoyé.

Syntaxe de destructeur :

NTIC 2024-2025
32 PARADIGME OBJET

NTIC 2024-2025
33 PARADIGME OBJET

La fonction isinstance() permet de s'assurer qu'une instance a été créé à partir


d'une classe donnée, elle retourne True ou False.

NTIC 2024-2025
34
Exercice :
Class Book

1. Définir une classe Book avec les attributs suivants : Title, Author (Nom complet), Price.

2. Définir un constructeur ayant comme attributs: Title, Author, Price.

3. Définir une variable de classe cpt, qui a pour rôle de calculer le nombre des instances créées.

4. Définir la méthode View() pour afficher les informations d'une instance object Book.

4. Ecrire un programme pour tester la classe Book.

NTIC 2024-2025
35 PARADIGME OBJET
Apport du langage Python

 Dans un code destiné a être réutilisé, il faut absolument définir dans la


documentation ce que fait la classe et ses entrées et sorties.

 L’attribut spécial _ _doc_ _ affiche la documentation de la classe

NTIC 2024-2025
36 PARADIGME OBJET
L’attribut spécial _ _dict_ _
 Cet attribut spécial donne les valeurs des attributs de l'instance :

Fonction dir
 La fonction dir donne un aperçu des méthodes de l'objet :

NTIC 2024-2025
37 PARADIGME OBJET
Affichage d’un objet
_ _str_ _ : vous donne la possibilité de redéfinir l’affichage d’un objet

NTIC 2024-2025
38 PARADIGME OBJET
Ajout d'un attribut d'instance
 Il est possible d'ajouter un attribut uniquement pour une instance donnée
via la syntaxe suivante :
instance.nouvel_attribut = valeur

NTIC 2024-2025
39

Exercices

NTIC 2024-2025
40 Exercice :

1- Ecrire une classe Livre avec les attributs suivants:

titre, auteur, prix, annee.

2- La classe Livre doit disposer d’un constructeur.

3- La classe livre doit aussi contenir :

A- une méthode afficher() pour afficher les attributs des livres,

B- Une méthode compter() pour avoir le nombre des instances créées

C- Une méthode type() qui va prendre 1 si le prix de livre <100 et la valeur 2 si le


100<=prix< =500 et 3 si 500<prix.

4- Ecrire un programme pour tester la classe Livre.


NTIC 2024-2025
41 Exercice :
On souhaite programmer une application de gestion commerciale. Cette application permet à une petite société de gérer les commandes.
Nous donnons dans ce qui suit une description des fonctionnalités attendues de l’application.

Gestion produits :

Chaque produit est caractérisé par sa référence, sa désignation, son prix d’achat, son prix de vente, le nombre d’exemplaires en stock; le
nombre de produit A la création du produit, on lui attribue une référence, un prix d’achat, un prix de vente, un stock nul (quantité=0), et une
désignation (petite description du produit). Parmi les fonctionnalités attendues de l’application de gestion de stock, relative au produit, est de
pouvoir retourner le nombre de produits existants, afficher les informations relatives à un produit, modifier son prix d’achat et son prix de vente,
augmenter ou diminuer le nombre d’exemplaires en stock

Gestion des commandes:

Les sorties de stock sont gérées à travers les commandes. Une commande est caractérisée par sa date de création et un ensemble de produits
avec les quantités qu’on va livrer (vendre).

Questions:

1. Définir l’ensemble de classes à implémenter pour assurer la gestion commerciale de la société.

2. Précisez pour chaque classe: les attributs (d’instance ou de classe) et les méthodes.

3. Pour chaque méthode, définissez ses paramètres.

NTIC 2024-2025
42 PRGRAMMATION ORIENTEE OBJET

principaux piliers de la POO


PARTIE 2: Connaître les
Chapitre 1: Héritage

Chapitre 2 : Encapsulation

Chapitre 3 : Polymorphisme

NTIC 2024-2025
43 L’HERITAGE
2-Heritage

• L'héritage est une notion qui définit une relation de spécialisation ou de généralisation entre
différentes classes

• Lorsqu'une classe A hérite d'une classe B :

A s'octroie toutes les propriétés de B, en plus de ses propres propriétés.

A est alors considéré comme une spécialisation de B.

Dans le même temps, B peut être vu comme une généralisation de A.

A est appelée classe fille de B, ou classe dérivée de B.

B est dite classe mère ou super-classe de A.

• Toute instance (objet) de A peut être considéré comme un objet de B.

• Une instance de B ne peut être toujours considéré comme un objet de A.

NTIC 2024-2025
44 L’HERITAGE
Exemple :
• Considérons la définition des 3 classes Personne, Etudiant et Employé suivantes

Problème :
• Duplication du code.
• Toute modification d'un attribut ou d'une méthode doit être répétée dans chaque classe
où ils ont été déclarés. (Exp : si on souhaite modifier le type de l'attribut anneeNaiss, il faut
le faire dans chacune des 3 classes).
NTIC 2024-2025
45 L’HERITAGE

Solution :

• Placer dans la classe mère les propriétés en commun à toutes les autres classes.

• On ne garde dans les classes filles que les attributs

ou méthodes qui leur sont spécifiques.

• Les classes dérivées héritent automatiquement

des attributs (et des méthodes) qui n'ont pas besoin

d'être réécrits.

NTIC 2024-2025
46 L’HERITAGE

Intérêt de l’héritage

• L'héritage permet de factoriser le code en regroupant les caractéristiques en

commun à plusieurs classes au sein d’une seule (la classe mère).

• La création de nouvelles classes s'en trouve facilitée grâce à une hiérarchie

bien définie des classes.

NTIC 2024-2025
47 L’HERITAGE

Héritage unique

L’héritage unique permet à une classe dérivée d’hériter des propriétés d’une
seule classe parente, permettant ainsi la réutilisation du code et l’ajout de
nouvelles fonctionnalités au code existant

Syntaxe en Python

NTIC 2024-2025
48 L’HERITAGE

Exemple :

NTIC 2024-2025
49 L’HERITAGE (Exemple complet)

NTIC 2024-2025
50 L’HERITAGE

Héritage en cascade

Une classe sous-classe peut être elle-même une super-classe.

• Etudiant hérite de Personne

• EtudiantDeuxièmeCycle hérite de Etudiant Alors EtudiantDeuxièmeCycle


hérite de Personne

NTIC 2024-2025
51 L’HERITAGE
 Exemple :

NTIC 2024-2025
52 L’HERITAGE
Héritage multiple

• Une classe peut hériter de plusieurs classes

Exemple :

• Un Etudiant est à la fois une Personne et un EtreVivant

• La classe Etudiant hérite des attributs et des méthodes des deux

classes à Il deviennent ses propres attributs et méthodes

NTIC 2024-2025
53 L’HERITAGE Multiple(Exemple complet)

NTIC 2024-2025
54 PRGRAMMATION ORIENTEE OBJET

principaux piliers de la POO


PARTIE 2: Connaître les
Chapitre 1 : Héritage

Chapitre 2 : Encapsulation

Chapitre 3 : Polymorphisme

NTIC 2024-2025
55 ENCAPSULATION

 L'encapsulation est un mécanisme consistant à 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.

 Ce mécanisme permet donc de garantir l'intégrité des données contenues


dans l'objet.

 L’encapsulation consiste donc à protéger l’information contenue dans un objet,


Il est donc possible de masquer les informations d'un objet aux autres objets

NTIC 2024-2025
56 ENCAPSULATION

La visibilité des attributs définit les droits d’accés aux données d’une classe :
• Publique (+) :
Toute classe peut accéder aux données d’une classe définie
avec le niveau de visibilité publique.
• Protégée (#) :
L’accés aux données est réservé aux méthodes des classes
héritières
• Privée (-) :
L’accés aux données est limite aux méthodes de la classe elle-même

NTIC 2024-2025
57 ENCAPSULATION
Modificateur d’accès public en python

 Les membres d’une classe déclarés publics sont facilement accessibles


depuis n’importe quelle partie du programme.

 Tous les membres de données et les fonctions membres d’une classe sont
publics par défaut

NTIC 2024-2025
58 ENCAPSULATION

Modificateur d’accès protégé en python

 Les membres d’une classe déclarés protégés ne sont accessibles qu’à une classe qui en
dérive ( héritage ).

 Les données membres d’une classe

sont déclarées protégées en ajoutant

un seul symbole de soulignement « _ »

avant le membre de données de cette

classe

NTIC 2024-2025
59 ENCAPSULATION

Modificateur d’accès privé en python

 Les membres d’une classe qui sont déclarés privés sont accessibles
uniquement dans la classe, le modificateur d’accès privé est le
modificateur d’accès le plus sécurisé.

 Les données membres d’une classe sont déclarées privées en ajoutant un


double trait de soulignement «_ _» avant le membre de données de cette
classe.

NTIC 2024-2025
60 ENCAPSULATION

Modificateur d’accès privé d’une methode:

NTIC 2024-2025
61 ENCAPSULATION

On ne peut atteindre les attributs d’un objet que par l’intermédiaire de ses méthodes.

Les accesseurs et modificateurs : Un accesseur est une méthode qui va nous permettre
d'accéder aux variables des objets en lecture et un mutateur, en écriture .

On parle de Getters et de Setters.

 Accesseurs (getters): Méthodes qui retournent la valeur d’un attribut d’un objet (un
attribut est généralement privé)

• La notation utilisée est getattribut avec attribut est l’attribut retourné

 Modificateurs (setters): Méthodes qui modifient la valeur d’un attribut d’un objet

• La notation utilisée est setattribut avec attribut l’attribut modifié


NTIC 2024-2025
62 ENCAPSULATION
Les accesseurs (getters ) et mutateurs (setters) :

NTIC 2024-2025
63 Exercice :

Définir une classe Salarie avec son constructeur avec ses attributs privés et deux méthodes :

❑ Une méthode CalculSalaire() : qui renvoie le calcul du salaire annuel (salaire *12)

❑ Une méthode d’affichage des infos Affichage().

Tester la classe Salarie dans votre programme main:

-Créer un objet S de Type Salarie de salaire 10000

-Changer le salaire de S en 12000.

- Afficher le nom de salarie S.

NTIC 2024-2025
64 ENCAPSULATION

Getter et Setter avec property()

En Python property() est une fonction intégrée qui crée et renvoie un objet de
propriété. Un objet de propriété a trois méthodes, getter(), setter() et delete().

La fonction property() en Python a trois arguments property (fget, fset, fdel,doc)

• fget est une fonction pour récupérer une valeur d’attribut

• fset est une fonction pour définir une valeur d’attribut

• fdel est une fonction pour supprimer une valeur d’attribut

• doc est une chaîne contenant la documentation (docstring à voir ultérieurement) de


l’attribut

NTIC 2024-2025
65 ENCAPSULATION
property (fget, fset, fdel,doc)

NTIC 2024-2025
66 ENCAPSULATION
Utilisation de @property
@property est un décorateur qui évite d'utiliser la fonction getter explicite
@[Link] est un décorateur qui évite d'utiliser la fonction setter explicite

NTIC 2024-2025
67 Exercice
Vous devez créer un système de gestion de bibliothèque en utilisant la programmation orientée
objet en Python. Ce système permettra de gérer différents types de documents dans une
bibliothèque.
[Link] Document (classe de base) :
•Attributs privés : titre, auteur, année de publication, statut d'emprunt
•Getters et setters pour tous les attributs
•Une méthode __str__ pour afficher les informations du document
Classe Livre (hérite de Document) :
•Attributs privés supplémentaires : ISBN et nombre de pages
•Getters et setters spécifiques
•Redéfinition de la méthode __str__
NB: Dans le fichier main créer des objet livre, modifier les attributs et afficher dans le main les
attributs modifier
NTIC 2024-2025
68 Exercice

Classe DVD (hérite de Document) :


•Attributs privés supplémentaires : durée en minutes et âge minimum
•Getters et setters avec validation
•Redéfinition de la méthode __str__

Classe Bibliothèque : Gestion d'une collection de documents

• Méthodes pour ajouter des documents

• Méthode de recherche par titre

• Méthode d'affichage de tous les documents

NTIC 2024-2025
69 Getters/Setters
class Personne:
def __init__(self, nom):
self.__Nom = nom

def get__Nom(self): def get__Nom(self): @property


return self.__Nom return self.__Nom def Nom(self):
return self.__Nom
def set__Nom(self, x): def set__Nom(self, x): @[Link]
self.__Nom = x self.__Nom = x def Nom(self, x):
def del__Nom(self): self.__Nom = x
def del__Nom(self): del self.__Nom @[Link]
del self.__Nom Nom=property (get__Nom, set__Nom,del__Nom) def Nom(self):
del self.__nom
Main: Main: Main:
P1=Personne("TAZI") P1=Personne("TAZI") P1=Personne("TAZI")
P1.set__Nom("SLAOUI") [Link]= "SLAOUI" [Link]= "SLAOUI"
Print(P1.get__Nom()) Print([Link]) Print([Link])
P1.del__Nom() del [Link] del [Link]
NTIC 2024-2025
70 PRGRAMMATION ORIENTEE OBJET

principaux piliers de la POO


PARTIE 2: Connaître les
Chapitre 1 : Héritage

Chapitre 2 : Encapsulation

Chapitre 3 : Polymorphisme

NTIC 2024-2025
71

class Animal: class Calculateur:


def faire_son(self): def __init__(self, n):
return "Bruit d'animal" [Link] = n
class Chien(Animal): def afficher(self):
def faire_son(self): print([Link])
return "Woof!" def addition(self, a, b):
class Chat(Animal): return a + b
def faire_son(self): def addition(self, a, b, c):
return "Meow!" return a + b + c
chien = Chien() calc = Calculateur(3)
chat = Chat() result1 = [Link](1, 2) # Appelle la
print(chien.faire_son()) # Appelle la méthode spécifique de la classe Chien première version de la méthode

print(chat.faire_son()) # Appelle la méthode spécifique de la classe Chat result2 = [Link](1, 2, 3) # Appelle la


NTIC 2024-2025
deuxième version de la méthode
72

class Calculateur:
def __init__(self, n):
[Link] = n
def afficher(self):
print([Link])
def addition(self, a, b, c=1):
return a + b + c

calc = Calculateur()

result1 = [Link](1, 2) # Appelle la première version de la méthode

result2 = [Link](1, 2, 3) # Appelle la deuxième version de la méthode

NTIC 2024-2025
73 LE POLYMORPHISME

3- Le polymorphisme

• En Python, le polymorphisme permet de définir des méthodes dans la classe


enfant qui ont le même nom que les méthodes de la classe parent.

• En héritage, la classe enfant hérite des méthodes de la classe parent.

• Il est possible de modifier une

méthode dans une classe enfant dont

elle a hérité de la classe parent

(redéfinition de la méthode).

NTIC 2024-2025
74 LE POLYMORPHISME
Surcharge des constructeurs

• Les constructeurs portant le même nom mais une signature différente sont appelés
constructeurs surchargés

• La signature d’un constructeur comprend les types des paramètres et le nombre des
paramètres.

• Dans une classe, les constructeurs peuvent avoir différents nombres d'arguments,
différentes séquences d'arguments ou différents types d'arguments

• Nous pouvons avoir plusieurs constructeurs

mais lors de la création d'un objet,

le compilateur choisit la méthode qui doit

être appelée en fonction du nombre et du type des arguments.


NTIC 2024-2025
75 LE POLYMORPHISME
Surcharge des méthodes

• La surcharge d'une méthode permet de définir plusieurs fois une même


méthode avec des arguments différents. (le cas du constructeur)

• Le compilateur choisi la méthode qui doit être appelée en fonction du


nombre et du type des arguments.

• Une méthode est surchargée lorsqu'elle exécute des actions différentes


selon le type et le nombre de paramètres transmis.

NTIC 2024-2025
76 LE POLYMORPHISME
Redéfinition des méthodes héritées

• La redéfinition d'une méthode héritée est motivée par le fait que sa version, dans la classe

mère, ne correspond pas aux besoins de la classe fille.

• La redéfinition permet alors de proposer un code différent à une méthode héritée tout en

gardant son entête. Autrement, il ne peut s'agir d'une redéfinition mais d'une nouvelle

méthode complétement différente de celle héritée.

• A partir d'une classe fille, il est possible, à tout moment, d'invoquer une méthode redéfinie,

dans sa version initiale, déclarée dans la classe mère.

NTIC 2024-2025
77 LE POLYMORPHISME

 Malheureusement, nous ne pouvons pas définir plusieurs constructeurs pour une


seule classe en Python. Une méthode générale pour contourner cette limitation
consiste à utiliser un constructeur de paramètres par défaut.

 Un constructeur de paramètres par défaut est celui qui attribue


automatiquement une valeur à ses attributs de classe si aucun paramètre n’est
passé lors de la création de l’objet de classe.

 Le constructeur de paramètre par défaut affecte la valeur spécifiée à l’attribut


de classe si une valeur est spécifiée lors de la création de l’objet.

NTIC 2024-2025
78 LE POLYMORPHISME

L’extrait de code suivant montre comment éliminer le besoin de plusieurs


constructeurs avec le constructeur de paramètres par défaut en Python.

NTIC 2024-2025
79 LE POLYMORPHISME
Chainage des constructeurs

• Le chaînage de constructeurs est une technique d’appel d’un constructeur


de la classe mère à partir d’un constructeur de la classe fille

• Le chaînage des constructeurs permet d’éviter la duplication du code


d'initialisation des attributs qui sont hérités par la classe fille

NTIC 2024-2025
80 LE POLYMORPHISME
 Exemple :

NTIC 2024-2025
81 LE POLYMORPHISME
Surcharge des opérateurs en Python

• La surcharge d’opérateurs vous permet de redéfinir la signification


d’opérateur en fonction de votre classe.

• Pour surcharger l'opérateur +, nous devrons

implémenter la fonction __add __ () dans la classe

NTIC 2024-2025
82 LE POLYMORPHISME
Fonctions spéciales de surcharge de l'opérateur en Python

NTIC 2024-2025
83 LE POLYMORPHISME
Opérateurs de comparaison
• En Python, il est possible de surcharger les opérateurs de comparaison

NTIC 2024-2025
84 LE POLYMORPHISME

Fonctions spéciales de surcharge des opérateurs de comparaison en Python

NTIC 2024-2025
85 EXERCICE
Exercice 1

Les Pokémons sont des gentils animaux qui sont passionnés par la programmation objet en général et par le
polymorphisme en particulier.

Il existe trois grandes catégories de pokémons :

- Les pokémons sportifs : Ces pokémons sont caractérisés par un nom, un poids (en kg), un nombre de pattes, une
taille (en mètres) et une fréquence cardiaque mesurée en nombre de pulsations à la minute. Ces pokémons se
déplacent sur la terre à une certaine vitesse que l’on peut calculer grâce à la formule suivante : vitesse = nombre
de pattes * taille * 3

- Les pokémons casaniers : Ces pokémons sont caractérisés par un nom, un poids (en kg), un nombre de pattes,
une taille (en mètres) et le nombre d’heures par jour où ils regardent la télévision. Ces pokémons se déplacent
également sur la terre à une certaine vitesse que l’on peut calculer grâce à la formule suivante : vitesse = nombre
de pattes * taille * 3

- Les pokémons des mers : Ces pokémons sont caractérisés par un nom, un poids (en kg) et un nombre de
nageoires. Ces pokémons ne se déplacent que dans la mer à une vitesse que l’on peut calculer grâce à la
formule suivante : vitesse = poids / 25 * nombre de nageoires
NTIC 2024-2025
86 EXERCICE
Pour chacune de ces trois catégories de pokémons, on désire disposer d’une méthode __str__ qui retourne (dans
une chaîne de caractères) les caractéristiques du pokémon.

Par exemple la méthode __str__ () appliquée sur un pokémon sportif retournerait :

"Je suis le pokémon Pikachu mon poids est de 18 kg, ma vitesse est de 5,1 km/h j'ai 2 pattes, ma taille est de
0,85m ma fréquence cardiaque est de 120 pulsations à la minute"

Cette même méthode appliquée sur un pokémon casanier pourrait retourner :

"Je suis le pokémon Salameche mon poids est de 12 kg, ma vitesse est de 3,9 km/h j'ai 2 pattes, ma taille est de
0,65m je regarde la télé 8h par jour"

Sur un pokémon des mers :

"Je suis le pokémon Rondoudou mon poids est de 45 kg, ma vitesse est de 3,6 km/h j'ai 2 nageoires"

Question 1. Programmer ces classes et leurs méthodes.

Question 2. Programmer le main pour tester les classes.


NTIC 2024-2025
87 EXERCICE
Exercice 2

Considérons une classe appelée Point ayant deux attributs privés _ _abs (abscisse du point) et
_ _ord (ordonnée du point) et un attribut statique nb qui représente le nombre de point crées

1. Définissez la classe Point et un constructeur à deux paramètres.

2. Définissez les getters et setters pour les deux attributs en utilisant le décorateur @property

3. Définissez la méthode__ str ()__qui retourne la représentation mathématique d’un point :


(abs,ord).

4. Proposer une surcharge de l’opérateur == permettant de vérifiant si deux point p1(x1,y1) et


p2(x2,Y2) sont égaux ou non(x1=x2 et y1=y2)

NTIC 2024-2025
88 EXERCICE
5. Ecrivez la méthode calculerdistance(self) qui permet de calculer la distance entre le point de
l’objet courant (self) et l’objet p passé en paramètre.

Nous rappelons que la distance entre deux points A(x1,y1) et B(x2,y2), en mathématiques, est égale
à: AB=√(𝒙𝟐−𝒙𝟏)𝟐+(𝒚𝟐−𝒚𝟏)𝟐

Vous pouvez utiliser la fonction [Link](a) pour calculer la racine carrée de a et [Link](x, y)
pour calculer x puissance y

6. Ecrivez la fonction calculermilieu(self) qui permet de calculer et de retourner un objet


correspondant au milieu du segment défini par le point de l’objet courant (self) et l’objet Point p
passé en paramètre. Nous rappelons que les coordonnées d’un point M(xM,yM) milieu de A(x1,y1) et
B(x2,y2), en mathématiques, sont : xM=(x1+x2)/2, yM=(y1+y2)/2

Considérons maintenant une deuxième classe appelée TroisPoints ayant les attributs __point1, __
point2 et __ point3 qui sont de type Point

7. Définissez les getters/setters (avec le décorateur @property) et un constructeur acceptant trois


paramètres.
NTIC 2024-2025
89 EXERCICE
8. Ecrivez une méthode sontalignes(self) qui retourne True si les trois points point1 ,
point2 et point3 sont alignés, False sinon.

Nous rappelons que trois points A, B et C sont alignés si AB = AC + BC, AC = AB +


BC ou

BC = AC + AB (AB désignant la distance séparant le point A du point B,


pareillement pour AC et BC).

9. Ecrivez une méthode estisocèle(self) qui retourne True si les trois points point1,
point2 et point3 forment un triangle isocèle, False sinon. Nous rappelons qu’un
triangle ABC est isocèle si AB = AC ou AB = BC ou BC = AC.

10. Implémentez une version statique (méthode décorée par @staticmethod) des
deux méthodes calculant la distance et le milieu.

11. Dans un fichier [Link], testez toutes les classes et méthodes que vous avez
implémentées.
NTIC 2024-2025
90

SOLUTIONS ORIENTÉES OBJET


Chapitre 1 : CARACTÉRISER L’ABSTRACTION

PARTIE 3: CODER DES Chapitre 2 : MANIPULER LES DONNÉES

Chapitre 3 : LES EXPRESSIONS REGULIERES

Chapitre 4 : LES EXCEPTIONS

NTIC 2024-2025
91
CARACTÉRISER L’ABSTRACTION

1- Classe abstraite

Les classes abstraites sont des classes qui ne peuvent pas

être instanciées, elles contiennent une ou plusieurs méthodes

abstraites. C’est un modèle pour d’autres classes qui héritent

un ensemble de méthodes et de propriétés.

L’abstraction est très utile lors de la conception de systèmes complexes pour limiter

la répétition et assurer la cohérence.


NTIC 2024-2025
92
CARACTÉRISER L’ABSTRACTION

2-Methode abstraite

• Une méthode abstraite est une méthode qui ne contient pas de corps. Elle
possède simplement une signature de définition (pas de bloc d'instructions)

• Une méthode abstraite est déclarée dans une classe abstraite

• Une classe possédant une ou plusieurs méthodes abstraites devient


obligatoirement une classe abstraite.

• Il n'est pas indispensable d'avoir des méthodes abstraites dans une classe
abstraite.

NTIC 2024-2025
93
CARACTÉRISER L’ABSTRACTION

Remarque:

Les règles suivantes s'appliquent aux classes abstraites :

• Une sous-classe d'une classe abstraite ne peut être instanciée que si elle
redéfinit chaque méthode abstraite de sa classe parente et qu'elle fournit une
implémentation (un corps) pour chacune des méthodes abstraites

• Si une sous-classe d'une classe abstraite n'implémente pas toutes les


méthodes abstraites dont elle hérite, cette sous-classe est elle-même abstraite
(et ne peut donc pas être instanciée)

NTIC 2024-2025
94
CARACTÉRISER L’ABSTRACTION
Une classe abstraite hérite de la classe ABC ( Abstract base class)

NTIC 2024-2025
95 CARACTÉRISER L’ABSTRACTION
Exercice : Gestion des objets à expédier dans une poste

On souhaite concevoir des classes et un programme qui pourront être utiles à un employé de poste pour traiter des objets à expédier.

1. Définir une classe ObjetPostal dont les caractéristiques sont les suivantes :

·le nom du destinataire , l'adresse du destinataire , le code postal, le nom de la ville destination , et un booléen qui indique si l'objet doit être
expédié en recommandé ou pas.

On devra munir cette classe des méthodes suivantes :

· un constructeur, · une méthode prix retournant un réel correspondant au prix d'affranchissement,

Dans un premier lieu il faut créer une classe ObjetPostal simple avec les données citées en haut,

En fait, la classe ObjetPostal ne correspond en réalité à aucun objet existant (classe abstraite), elle ne fait que rassembler les caractéristiques
communes à tous les objets postaux réellement manipulés par l’application, qui seront des instances des classes Lettre et Colis que nous
allons définir ci-dessous.

Une conséquence de ceci est que la méthode prix de la classe ObjetPostal n'a aucune définition, elle sera définie effectivement dans les
sous-classes.

Ceci fera sujet d’exercice d’application lorsqu’on aura fait la notion de classe abstaite
NTIC 2024-2025
96 CARACTÉRISER L’ABSTRACTION
2. Définir une classe Lettre, sous-classe d’ObjetPostal, et qui possède, hormis les données héritées, une donnée de type booléen
qui indique si la lettre doit être expédiée en urgence ou pas.

Cette classe sera munie d'un constructeur, et calculera le prix d'affranchissement de la façon suivante :

· le prix d'affranchissement normal est 0.53 euros,

· si la lettre doit être expédiée en recommandé, il y a un surcoût de 1.5 euros,

· si la lettre doit être expédiée en urgence, il y a également un surcoût de 0.6 euros.

3. Définir une classe Colis, sous-classe de ObjetPostal, et qui possède, hormis les données héritées, une donnée de type réel qui
donne le poids du colis, exprimé en grammes.

Cette classe sera munie d'un constructeur, et calculera le prix d'affranchissement de la façon suivante :

· le prix d'affranchissement normal est calculé sur la base de 0.8 euros par unité de poids de

100 grammes,

· si le colis doit être expédié en recommandé, il y a un surcoût de 3 euros.

4. Réaliser un test (main) qui permet de calculer le prix à payer pour envoyer un objet postal.
NTIC 2024-2025
97
CARACTÉRISER L’ABSTRACTION

Remarque : Interface

• Une interface est une forme particulière de classe où toutes les méthodes sont abstraites

Les interfaces permettent de :

• Spécifier des propriétés qui peuvent être utilisées par les classes qui implémentent ces
interfaces.

• Obliger les classes qui les implémentent de définir les méthodes abstraites déclarées dans
les interfaces.

• Tirer profit du polymorphisme avec des instances dont les classes ne font pas partie de la
même hiérarchie d’héritage.

NTIC 2024-2025
98 CARACTÉRISER L’ABSTRACTION

• On dit qu'une classe implémente une interface, si elle fournit une


implémentation (c'est-à-dire un corps) pour chacune des méthodes abstraites
de cette interface.

• Si une classe implémente plus d'une interface, elle doit implémenter toutes
les méthodes abstraites de chacune des interfaces.

NTIC 2024-2025
99 CARACTÉRISER L’ABSTRACTION
Exemple:

• Si l'on souhaite caractériser la fonctionnalité de comparaison qui est commune


à tous les objets qui ont une relation d'ordre (plus petit, égal, plus grand), on peut
définir l'interface Comparable.

• Les classes Personne et Outils qui implémentent l'interface Comparable doivent


présenter une implémentation de la méthode CompareTo() sinon elles seront
abstraites.

NTIC 2024-2025
100
CARACTÉRISER L’ABSTRACTION
Utilité des interfaces

Les interfaces permettent de :

• Spécifier des propriétés qui peuvent être


utilisées par les classes qui implémentent ces
interfaces.

• Obliger les classes qui les implémentent de


définir les méthodes abstraites déclarées dans
les interfaces.

• Tirer profit du polymorphisme avec des


instances dont les classes ne font pas partie
de la même hiérarchie d’héritage.

NTIC 2024-2025
101

SOLUTIONS ORIENTÉES OBJET


Chapitre 1 : CARACTÉRISER L’ABSTRACTION

PARTIE 3: CODER DES Chapitre 2 : MANIPULER LES DONNÉES

Chapitre 3 : LES EXPRESSIONS REGULIERES

Chapitre 4 : LES EXCEPTIONS

NTIC 2024-2025
102
MANIPULER LES DONNÉES: Liste, Collections, Fichiers
1-Les listes

• Une liste est une collection qui est ordonnée, modifiable et qui peuvent contenir
plusieurs fois la même valeur ;

• Une liste est déclarée comme suit :

Liste= [el1, elt2,…eln]

• Liste[i]: permet d’accéder à l’élément de la liste se trouvant à la i ème position

• Liste[i]= val: permet de changer la valeur de l’élément de la liste se trouvant à la


position i.

NTIC 2024-2025
103
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

La fonction Utilisation

Len(list) La longueur de la liste

[Link](x) Ajouter x à la fin de la liste

[Link](i, x) Insérer l’element x dans la position i

[Link](x) Supprimer le premier élément x de la liste

[Link]([i]) Supprimer l’element d’indice i

[Link]() Supprimer tous les éléments de la liste

[Link](x) Retourne le nombre d’occurrence de x dans list

NTIC 2024-2025
104
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

La fonction Utilisation
[Link]() Inverser la liste sur place

[Link]() Retourne un copie de la liste

Del list [i] Supprimer le i eme élément de la liste

NTIC 2024-2025
105
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

NTIC 2024-2025
106
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

NTIC 2024-2025
107
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

NTIC 2024-2025
108
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

NTIC 2024-2025
109 Exercice (déjà fait)
Vous devez créer un système de gestion de bibliothèque en utilisant la programmation
orientée objet en Python. Ce système permettra de gérer différents types de documents dans
une bibliothèque.
[Link] Document (classe de base) :
•Attributs privés : titre, auteur, année de publication, statut d'emprunt
•Getters et setters pour tous les attributs
•Une méthode __str__ pour afficher les informations du document
Classe Livre (hérite de Document) :
•Attributs privés supplémentaires : ISBN et nombre de pages
•Getters et setters spécifiques
•Redéfinition de la méthode __str__
NTIC 2024-2025
110 Exercice

Classe DVD (hérite de Document) :


•Attributs privés supplémentaires : durée en minutes et âge minimum
•Getters et setters avec validation
•Redéfinition de la méthode __str__

Classe Bibliothèque : Gestion d'une collection de documents

• Méthodes pour ajouter des documents

• Méthode de recherche par titre

• Méthode d'affichage de tous les documents

NTIC 2024-2025
111
Exercice: MANIPULER LES DONNÉES
Etagères de livres, tableaux d'objets

Créer une classe Livre comportant les attributs suivants :

Le Code, Titre, Le nom d’auteur, La date d’édition, L’éditeur, Le nombre de pages.

Créer le constructeur, la méthode _ _str ()_ _ qui retourne les informations sur un livre

Créez une classe Etagere pour représenter une étagère qui peut contenir un certain nombre de
livres (fixe pour chaque étagère). Vous utiliserez un tableau pour ranger les livres.

1- Créer le constructeur

2- Vous ajouterez des méthodes pour :

 Ajouter des livres Ajouter(Livre). Vous ajouterez les livres à la suite des livres déjà ajoutés
dans l'étagère ;(Il devra être impossible d'ajouter des livres dans une étagère pleine).
NTIC 2024-2025
112
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

 Récupérer un livre dont on donne la position sur l'étagère (le livre reste sur l'étagère, on
récupère simplement une référence sur le livre). La méthode renverra une instance de Livre.
La position du premier livre d'une étagère devra être 1 (et pas 0, bien que le livre soit rangé
dans la première position du tableau, qui est d'indice 0). La signature de la méthode sera "
getLivre(pos)".

 Chercher sur l'étagère un livre repéré par son titre et son auteur. La méthode renverra la
position du livre dans l'étagère (ou 0 si le livre n'y est pas). La signature de la méthode sera
chercher(titre, auteur)". Ecrivez aussi 2 méthodes pour rechercher tous les livres d'un auteur,
ou tous les livres qui ont un certain titre. Cette fois-ci, les méthodes renvoient un tableau de
livres.

NTIC 2024-2025
113
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

 Enlever des livres. Vous "tasserez" les livres vers le début quand vous enlèverez des livres
une méthode qui repèrera le livre par sa position (1 pour le premier livre) dans l'étagère
(de profil "enleverLivre(pos)"),

NB : La méthode renverra le livre supprimé (ou null si le livre n'a pas été trouvé).

 Renvoyer une description d'une étagère (la fameuse, et bien utile, méthode _ _str_ _()).
Utilisez-la dès le début, par exemple pour tester la méthode ajouter.

 Dans la méthode main, vous créerez des livres, 2 étagères et ajouterez les livres dans les
étagères. Tester les méthodes de la classe étagère.

NTIC 2024-2025
114
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

2- Les collections

• Le module collections est un module standard de Python qui fournit des classes
spécialisées pour créer des conteneurs de données plus avancés que les types de
données de base tels que les listes, les tuples, les ensembles et les dictionnaires.

• Ce module contient plusieurs classes qui sont utiles pour manipuler et organiser des
données complexes.

NTIC 2024-2025
115
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

NTIC 2024-2025
116
MANIPULER LES DONNÉES: Liste, Collections, Fichiers
Collection namedtuple

NTIC 2024-2025
117
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

NTIC 2024-2025
118
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

NTIC 2024-2025
119
MANIPULER LES DONNÉES: Liste, Collections, Fichiers
Collection deque

Les listes Python sont une séquence d'éléments ordonnés, mutable ou modifiable.

• Python peut ajouter des listes en temps constant mais l'insertion au début d'une liste peut être
plus lente (le temps nécessaire augmente à mesure que la liste s'agrandit).

Exemple :

NTIC 2024-2025
120
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

• La classe deque du module collections est un objet de type liste qui permet d'insérer des
éléments au début ou à la fin d'une séquence avec une performance à temps constant (O(1)).

• O(1) performance signifie que le temps nécessaire pour ajouter un élément au début de liste
n'augmentera pas, même si cette liste a des milliers ou des millions d'éléments.

NTIC 2024-2025
121
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

NTIC 2024-2025
122
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

Collection ChainMap
La classe [Link] permet de linker plusieurs mappings pour qu’ils soient gérés
comme un seul.

• class [Link](*maps) cette fonction retourne une nouvelle ChainMap. Si il n’y a


pas de maps specifies en parametres la ChainMap sera vide.

Dans l'exemple précèdent on remarque que la clé b a pris


la valeur 10 et pas 2 car y est passe avant x dans le constructeur
de ChainMap.

NTIC 2024-2025
123
MANIPULER LES DONNÉES: Liste, Collections, Fichiers
Collection Counter

La classe [Link] est une sous-classe de dict. qui permet de compter des objets
hachable.

• En fait c’est un dictionnaire avec comme clé les éléments et comme valeurs leur nombre.

• class [Link]([iterable-or-mapping]) ceci retourne un Counter. L’argument permet de


spécifier ce que l’on veut mettre dedans et qui doit être compte.

NTIC 2024-2025
124
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

NTIC 2024-2025
125
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

NTIC 2024-2025
126
MANIPULER LES DONNÉES: Liste, Collections, Fichiers
Collection OrderedDict
Les [Link] sont comme les dict. mais ils
se rappellent l’ordre d’entree des valeurs. Si on itère
dessus les données seront retournées dans l’ordre d’ajout
dans notre dict.
• La fonction popitem(last=True) : fait sortir une paire clé
valeur de notre dictionnaire et si l’argument last est a
‘True’ alors les pairs seront retournées en LIFO sinon ce
sera en FIFO.
• La fonction move_to_end(key, last=True) : permet de
déplacer une clé a la fin de notre dictionnaire si last est a
True sinonNTIC
au2024-2025
debut de notre dict.
127
MANIPULER LES DONNÉES: Liste, Collections, Fichiers
Collection defaultdict

• defaultdict du module de collections qui permet de rassembler les informations dans les
dictionnaires de manière rapide et concise.

• Si une clé n'est pas présente, defaultdict se contente d'inserer et de renvoyer une valeur de
remplacement a la place.

• defaultdict se comporte différemment d'un dictionnaire ordinaire. Au lieu de soulever une KeyError
sur une clé manquante, defaultdict appelle la valeur de remplacement sans argument pour créer un
nouvel objet.

Dans l’exemple, list() pour créer une liste vide.


NTIC 2024-2025
128
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

NTIC 2024-2025
129
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

NTIC 2024-2025
130
MANIPULER LES DONNÉES: Liste, Collections, Fichiers
3- Les fichiers
Type de fichier
Il existe différents formats standards de stockage de données.
Il est recommandé de favoriser ces formats car il existe déjà des modules Python permettant de simplifier leur
utilisation:
• Le fichier Texte (TXT) est un format permettant de stocker des données sous forme de texte brut. un fichier
texte n'a pas de structure prédéfinie. Il peut contenir des informations sous diverses formes.
• Le fichier Comma-separated values (CSV) est un format permettant de stocker des tableaux dans un
fichier texte. Chaque ligne est représentée par une ligne de texte et chaque colonne est séparée par un
séparateur (virgule, point-virgule …).
• Le format JavaScript Object Notation (JSON) est issu de la notation des objets dans le langage JavaScript,
Il s'agit aujourd'hui d'un format de données très répandu permettant de stocker des données sous une forme
structurée.
NTIC 2024-2025
131
MANIPULER LES DONNÉES: Liste, Collections, Fichiers
Manipuler un fichier texte

Le fichier Texte (TXT) :

est un format permettant de stocker des données sous forme de texte brut. un fichier texte n'a pas de structure prédéfinie. Il peut
contenir des informations sous diverses formes.
o Python a plusieurs fonctions pour créer, lire, mettre à jour et supprimer des fichiers texte.

o La fonction clé pour travailler avec des fichiers en Python est open().

o Elle prend deux paramètres; nom de fichier et mode.

f =open(nomfichier,mode)

• Il existe quatre méthodes (modes) différentes pour ouvrir un fichier:


 "r" -Lecture -Par défaut. Ouvre un fichier en lecture, erreur si le fichier n'existe pas

 "a" -Ajouter -Ouvre un fichier à ajouter, crée le fichier s'il n'existe pas

 "w" -Écrire -Ouvre un fichier pour l'écriture, crée le fichier s'il n'existe pas

 "x" -Créer -Crée le fichier spécifié, renvoie une erreur si le fichier existe

NTIC 2024-2025
132
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

NTIC 2024-2025
133
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

NTIC 2024-2025
134
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

NTIC 2024-2025
135
MANIPULER LES DONNÉES: Liste, Collections, Fichiers
Exemple :
Ecrire et lire une chaine dans un fichier texte

NTIC 2024-2025
136
MANIPULER LES DONNÉES: Liste, Collections, Fichiers
Exemple:
Ecrire et lire une chaine dans un fichier texte

Pour écrire dans le fichier :

NTIC 2024-2025
137
MANIPULER LES DONNÉES: Liste, Collections, Fichiers
Le fichier Texte (TXT) :

Pour lire le fichier :

NTIC 2024-2025
138
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

Manipuler un fichier CSV

Le fichier Comma-separated values (CSV) :


est un format permettant de stocker des tableaux dans un fichier texte.
Chaque ligne est représentée par une ligne de texte et chaque colonne
est séparée par un séparateur (virgule, point-virgule …).
• Les champs texte peuvent également être délimités par des guillemets.
• Lorsqu'un champ contient lui-même des guillemets, ils sont doublés afin
de ne pas être considérés comme début ou fin du champ.
• Si un champ contient un signe pouvant être utilisé comme séparateur de colonne (virgule, point-virgule …) ou comme
séparateur de ligne, les guillemets sont donc obligatoires afin que ce signe ne soit pas confondu avec un séparateur.
NB: Le module csv de Python permet de simplifier l'utilisation des fichiers CSV.

NTIC 2024-2025
139
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

Écriture dans un fichier CSV


• Pour écrire dans un fichier CSV, on ouvre un flux d'écriture (fonction writer()) et on ouvre un
écrivainCSV à partir de ce flux pour écrire avec la méthode (fonction é[Link](row)) :

NTIC 2024-2025
140
MANIPULER LES DONNÉES: Liste, Collections, Fichiers
Lecture d’un fichier CSV
• Pour lire un fichier CSV, il faut ouvrir un flux de lecture de fichier et ouvrir à partir de ce flux un
lecteur CSV.

NTIC 2024-2025
141
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

• Il est également possible de lire les données et obtenir un dictionnaire par ligne contenant
les données en utilisant DictReader au lieu de reader

NTIC 2024-2025
142
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

Manipuler un fichier JSON


Le format JavaScript Object Notation (JSON)
est issu de la notation des objets dans le langage JavaScript.
• Il s'agit aujourd'hui d'un format de données très répandu permettant de stocker des données sous
une forme structurée.
• Il ne comporte que des associations clés → valeurs (à l'instar des dictionnaires), ainsi que des listes
ordonnées de valeurs (comme les listes en Python).
• Une valeur peut être une autre association clés → valeurs, une liste de
valeurs, un entier, un nombre réel, une chaîne de caractères, un booléen
ou une valeur nulle.
• Sa syntaxe est similaire à celle des dictionnaires Python.
NTIC 2024-2025
143
MANIPULER LES DONNÉES: Liste, Collections, Fichiers

Écrire un fichier JSON


• la fonction dumps(variable) transforme un dictionnaire ou une liste en texte JSON en
fournissant en argument la variable à transformer

NTIC 2024-2025
144
MANIPULER LES DONNÉES: Liste, Collections, Fichiers
Lire un fichier JSON
• La fonction loads (texteJSON) permet de décoder le texte JSON passé en argument et de le
transformer en dictionnaire ou une liste

NTIC 2024-2025
145 MANIPULER LES DONNÉES: Liste, Collections, Fichiers
Exemple de creation d’un fichier JSON avec des objet Personne :

NTIC 2024-2025
146

Chapitre 1 : CARACTÉRISER L’ABSTRACTION

SOLUTIONS ORIENTÉES OBJET


PARTIE 3: CODER DES
Chapitre 2 : LES INTERFACES

Chapitre 3 : MANIPULER LES DONNÉES

Chapitre 4 : LES EXPRESSIONS REGULIERES

Chapitre 5 : LES EXCEPTIONS

NTIC 2024-2025
147 UTILISER LES EXPRESSIONS RÉGULIÈRE
Les expressions régulières fournissent une notation générale permettant de décrire
abstraitement des éléments textuels .

Elles utilisent six symboles de base qui, dans le contexte des expressions régulières,
acquièrent les significations suivantes :

1. le point . représente une seule instance de n'importe quel caractère sauf le caractère de fin
de ligne.

Exemple : l'expression t.c représente toutes les combinaisons de trois lettres commençant par
« t » et finissant par « c », comme tic, tac, tqc ou t9c
NTIC 2024-2025
148 UTILISER LES EXPRESSIONS RÉGULIÈRE

2. la paire de crochets [ ] représente une occurrence quelconque des caractères qu'elle


contient. Exemple : [aeiouy] représente une voyelle, et Duran[dt] désigne Durand ou
Durant.

• Entre les crochets, on peut noter un intervalle en utilisant le tiret. Exemple : [0-9]
représente les chiffres de 0 à 9, et [a-zA-Z] représente une lettre minuscule ou majuscule.

• On peut de plus utiliser l'accent circonflexe en première position dans les crochets pour
indiquer le contraire Exemple : [^a-z] représente autre chose qu'une lettre minuscule, et
[^'"] n'est ni une apostrophe ni un guillemet.

NTIC 2024-2025
149 UTILISER LES EXPRESSIONS RÉGULIÈRE

3. l'astérisque * est un quantificateur, il signifie aucune ou plusieurs occurrences du


caractère ou de l'élément qui le précède immédiatement.

Exemple : L'expression ab* signifie la lettre a suivie de zéro ou plusieurs lettres b, par
exemple ab, a ou abbb et [A-Z]* correspond à zéro ou plusieurs lettres majuscules

4. l'accent circonflexe ^ est une ancre. Il indique que l'expression qui le suit se trouve
en début de ligne.

Exemple : l'expression ^Depuis indique que l'on recherche les lignes commençant par
le mot Depuis.

NTIC 2024-2025
150 UTILISER LES EXPRESSIONS RÉGULIÈRE

5. le symbole dollar $ est aussi une ancre. Il indique que l'expression qui le précède se
trouve en fin de ligne.

Exemple : L'expression suivante :$ indique que l'on recherche les lignes se terminant par
« suivante : ».

6. la contre-oblique \ permet d'échapper à la signification des métacaractères. Ainsi \.


désigne un véritable point, \* un astérisque, \^ un accent circonflexe, \$ un dollar et
\\ une contre-oblique

NTIC 2024-2025
151 UTILISER LES EXPRESSIONS RÉGULIÈRE
Expressions régulières étendues
Elles ajoutent cinq symboles qui ont les significations suivantes :
1. la paire de parenthèses ( ): est utilisée à la fois pour former des sous-motifs et pour
délimiter des sous-expressions, ce qui permettra d'extraire des parties d'une chaîne de
caractères.
Exemple : L'expression (to)* désignera to, tototo, etc.
2. le signe plus +: est un quantificateur comme *, mais il signifie une ou plusieurs
occurrences du caractère ou de l'élément qui le précède immédiatement.
Exemple : L'expression ab+ signifie la lettre a suivie d'une ou plus
3. le point d'interrogation ?: il signifie zéro ou une instance de l'expression qui le précède.
Exemple : écran(s)? désigne écran ou écrans ;

NTIC 2024-2025
152 UTILISER LES EXPRESSIONS RÉGULIÈRE
4. la paire d'accolades { } : précise le nombre d'occurrences permises pour le
motif qui le précède.

Exemple : [0-9]{2,5} attend entre deux et cinq nombres décimaux. • Les variantes
suivantes sont disponibles : [0- 9]{2,} signifie au minimum deux occurrences
d'entiers décimaux et [0-9]{2} deux occurrences exactement

5. la barre verticale | : représente des choix multiples dans un sous-motif.

Exemple : L'expression Duran[d|t] peut aussi s'écrire (Durand|Durant). On pourrait


utiliser l'expression (lu|ma|me|je|ve|sa|di) dans l'écriture d'une date

NTIC 2024-2025
153 UTILISER LES EXPRESSIONS RÉGULIÈRE

Remarque: • \d : classe des nombres entiers ;


la syntaxe étendue comprend aussi • \s : classe des caractères
une série de séquences d'espacement ;
d'échappement : • \w : classe des caractères
• \ : symbole d'échappement ; alphanumériques ;

• \e : séquence de contrôle escape ; • \b : délimiteurs de début ou de fin de


mot ;
• \f : saut de page ;
• \D : négation de la classe \d ;
• \n : fin de ligne ;
• \S : négation de la classe \s ;
• \r : retour-chariot ;
• \W : négation de la classe \w ;
• \t : tabulation horizontale ;
• \B : négation de la classe \b.
• \v : tabulation verticale ;
NTIC 2024-2025
154 UTILISER LES EXPRESSIONS RÉGULIÈRE

Manipulation des expressions régulières


• Le module re permet d'utiliser les expressions régulières dans les scripts
Python.
• Les scripts devront donc comporter la ligne : import re
Fonction de compilation d’une regex en Python:
Pour initialiser une expression régulière avec Python, il est possible de la
compiler, surtout si vous serez amené à l’utiliser plusieurs fois tout au long du
programme.

Pour ce faire, il faut utiliser la fonction compile()

NTIC 2024-2025
155 UTILISER LES EXPRESSIONS RÉGULIÈRE

Les options de compilation : Grâce à un jeu d'options de compilation, il est possible de


piloter le comportement des expressions régulières. On utilise pour cela la syntaxe (?…)
avec les drapeaux suivants :
• a : correspondance ASCII (Unicode par défaut) ;
• i : correspondance non sensible à la casse ;
• L : les correspondances utilisent la locale, c'est-à-dire les particularités du pays ;
• m : correspondance dans des chaînes multilignes ;
• s : modifie le comportement du métacaractère point qui représentera alors aussi le saut
de ligne ;
• u : correspondance Unicode (par défaut) ;
• x : mode verbeux.
NTIC 2024-2025
156 UTILISER LES EXPRESSIONS RÉGULIÈRE

Le module ‘re’ propose un ensemble de fonctions qui nous permet de


rechercher une chaîne pour une correspondance :

NTIC 2024-2025
157 UTILISER LES EXPRESSIONS RÉGULIÈRE

Exemple
Import re
email=input("Donner votre email:")
regex = '^[a-zA-Z][a-zA-Z0-9_.-]+@[a-zA-Z] [a-zA-Z0-9_.-]+\.[a-zA-Z]+$‘
If [Link](regex,email):
print("Valid Email")
else:
print("Invalid Email")

NTIC 2024-2025
158 UTILISER LES EXPRESSIONS RÉGULIÈRE
La fonction findall() renvoie une liste contenant toutes les
correspondances. La liste contient les correspondances dans l’ordre où
elles sont trouvées. Si aucune correspondance n’est trouvée, une liste vide
est renvoyée.

Exemple :

NTIC 2024-2025
159 UTILISER LES EXPRESSIONS RÉGULIÈRE
• La fonction search() recherche une correspondance dans la chaîne et renvoie un
objet Match s’il existe une correspondance. S’il y a plus d’une correspondance,
seule la première occurrence de la correspondance sera renvoyée:
Exemple : Extraction simple
La variable expression recoit la forme compilee de l'expression reguliere, Puis on
applique a ce motif compile la methode search() qui retourne la premiere position
du motif dans la chaine Nameage et l'affecte a la variable ages.
Enfin on affiche la correspondance complete
(en ne donnant pas d'argument a group())

NTIC 2024-2025
160 UTILISER LES EXPRESSIONS RÉGULIÈRE

Exemple : Extraction des sous-groupes

• Il est possible d’affiner l'affichage du résultat en modifiant l'expression


régulière de recherche de façon à pouvoir capturer les éléments du motif

NTIC 2024-2025
161 UTILISER LES EXPRESSIONS RÉGULIÈRE

• Python possède une syntaxe qui permet de nommer des parties de motif
délimitées par des parenthèses, ce qu'on appelle un motif nominatif :

• syntaxe de création d'un motif nominatif : (?P) ;

• syntaxe permettant de s'y référer : (?P=nom_du_motif) ;

Exemple : Extraction des sous-groupes nommés

• la méthode groupdict() renvoie une liste

comportant le nom et la valeur des

sous-groupes trouvés (ce qui nécessite de

nommer les sous-groupes).


NTIC 2024-2025
162 UTILISER LES EXPRESSIONS RÉGULIÈRE

• La fonction split() renvoie une liste où la chaîne a été divisée à chaque


correspondance

• L’exemple suivant divise la chaîne à chaque espace trouvé. ‘\s’ est


utilisé pour faire correspondre les espaces.

• Il est possible de contrôler le nombre d’occurrences en spécifiant le


paramètre maxsplit:

Exemple : maxsplit=1
NTIC 2024-2025
163 UTILISER LES EXPRESSIONS RÉGULIÈRE

• La fonction sub() remplace les correspondances par le texte de votre choix


Exemple : Remplacer chaque espace par un tiret ‘-‘:

• Il est possible de contrôler le nombre de remplacements en spécifiant le


paramètre count: Exemple : count=2

NTIC 2024-2025
164

Chapitre 1 : CARACTÉRISER L’ABSTRACTION

SOLUTIONS ORIENTÉES OBJET


PARTIE 3: CODER DES
Chapitre 2 : LES INTERFACES

Chapitre 3 : MANIPULER LES DONNÉES

Chapitre 4 : LES EXPRESSIONS REGULIERES

Chapitre 5 : LES EXCEPTIONS

NTIC 2024-2025
165 ADMINISTRER LES EXCEPTIONS

Erreurs de syntaxe

• Les erreurs de syntaxe sont des erreurs d'analyse du code

Exemple :

• L'analyseur indique la ligne incriminée 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 par le symbole placé avant la flèche.

• Dans cet exemple, la flèche est sur la fonction print() car il manque deux points (':') juste avant. Le
nom du fichier et le numéro de ligne sont affichés pour vous permettre de localiser facilement
l'erreur lorsque le code provient d'un script
NTIC 2024-2025
166 ADMINISTRER LES EXCEPTIONS

Exceptions

• Même si une instruction ou une expression est syntaxiquement correcte, elle peut générer une erreur lors
de son exécution.

• Les erreurs détectées durant l'exécution sont appelées des exceptions et ne sont pas toujours fatales

• La plupart des exceptions toutefois ne sont pas prises en charge par les programmes, ce qui génère des
messages d'erreurs comme celui-ci :

La dernière ligne du message d'erreur indique ce qui s'est passé. Les exceptions peuvent être de différents
types et ce type est indiqué dans le message : le types indiqué dans l'exemple est ZeroDivisionError

NTIC 2024-2025
167 ADMINISTRER LES EXCEPTIONS

Types des exceptions

• En Python, les erreurs détectées durant l’exécution d’un script sont appelées des
exceptions car elles correspondent à un état “exceptionnel” du script

• Python analyse le type d’erreur déclenché

• Python possède de nombreuses classes d’exceptions natives et toute exception est


une instance (un objet) créée à partir d’une classe exception

• La classe d’exception de base pour les exceptions natives est BaseException

NTIC 2024-2025
168 ADMINISTRER LES EXCEPTIONS

Quatre classes d’exception dérivent de la classe BaseException à savoir :

NTIC 2024-2025
169 ADMINISTRER LES EXCEPTIONS

Il y a également d’autres classes d’exception qui dérivent de Exception telles que:

NTIC 2024-2025
170 ADMINISTRER LES EXCEPTIONS

Détection et traitement des exceptions en Python

• On peut détecter les exceptions en plaçant les instructions qui peuvent


générer des exceptions dans un bloc try.

• Il existe 2 formes d’expressions try mutuellement exclusives (on ne peut en


employer qu’une à la fois) : try-except et try-finally.

• Une instruction try peut être accompagnée d’une ou plusieurs clauses


except, d’une seule clause finally ou d’une combinaison try-except-finally.

NTIC 2024-2025
171 ADMINISTRER LES EXCEPTIONS

Exemple :

• On souhaite calculer l’âge saisi par l’utilisateur en soustrayant son année de


naissance à 2016. Pour cela, il faut convertir la valeur de la variable birthyear
en un int.

• Cette conversion peut échouer si la chaine de caractères entrée par


l'utilisateur n'est pas un nombre.

NTIC 2024-2025
172 ADMINISTRER LES EXCEPTIONS

Instruction try-except

NTIC 2024-2025
173 ADMINISTRER LES EXCEPTIONS

Type Exception

• Lorsqu'on utilise l'instruction try-except, le bloc except capture toutes les erreurs possibles
qui peuvent survenir dans le bloc try correspondant.

• Une exception est en fait représentée par un objet, instance de la classe Exception.

• On peut récupérer cet objet en précisant

un nom de variable après except.

• On récupère donc l'objet de type Exception dans

la variable e.

• Dans le bloc except, on affiche son type et sa valeur


NTIC 2024-2025
174 ADMINISTRER LES EXCEPTIONS
Capture d’erreur spécifique

• Chaque type d'erreur est donc défini par une classe spécifique.

• Il est possible d’associer plusieurs blocs except à un même bloc try,pour exécuter un code
différent en fonction de l'erreur capturée.

• Lorsqu'une erreur se produit, les blocs except sont parcourus l'un après l'autre, du premier
au dernier, jusqu'à en trouver un qui

corresponde à l'erreur capturée.

NTIC 2024-2025
175 ADMINISTRER LES EXCEPTIONS

Bloc finally

• Le mot réservé finally permet d'introduire un bloc qui sera exécuté soit après que
le bloc try se soit exécuté complètement sans erreur, soit après avoir exécuté le
bloc except correspondant à l'erreur qui s'est produite lors de l'exécution du bloc
try.

• On obtient ainsi une instruction try-except-finally

NTIC 2024-2025
176 ADMINISTRER LES EXCEPTIONS

Génération d'erreur

• Il est possible de générer une erreur dans un programme grâce à l'instruction raise.

• Il suffit en fait simplement d'utiliser le mot réservé raise suivi d'une référence vers un
objet représentant une exception.

Exemple

Si n est strictement négatif, une exception de type ArithmeticError est générée.

NTIC 2024-2025
177 ADMINISTRER LES EXCEPTIONS

Le programme suivant permet de capturer spécifiquement l'exception de type


ArithmeticError lors de l’appel de la fonction factoriel

NTIC 2024-2025
178 ADMINISTRER LES EXCEPTIONS

Créer un type d'exception


• Il est parfois plus pratique et plus lisible de définir nos propres types d’exceptions
• Pour cela, il suffit de définir une nouvelle classe qui hérite de la classe Exception
Exemple :

• Cette classe est tout simplement vide puisque son corps n'est constitué que de
l'instruction pass

NTIC 2024-2025
179 ADMINISTRER LES EXCEPTIONS

Exemple :

• Définissons une fonction trinomial qui calcule et renvoie les racines d'un trinôme du second
degré de la forme ax2+bx+c et qui génère une erreur lorsqu'il n'y a pas de racine réelle :

NTIC 2024-2025
180 ADMINISTRER LES EXCEPTIONS

Exception paramétrée

• Lorsqu'on appelle la fonction trinomial, on va donc pouvoir utiliser l'instruction try-except pour attraper cette erreur,
lorsqu'elle survient

• Essayons, par exemple, de calculer et d'afficher les racines réelles du trinôme

x+2. Pour cela, on appelle donc la fonction trinomial en lui passant en paramètres 1, 0 et 2 puisque x+2 correspond à
a=1, b=0 et c=2

• Pour l’exemple précédent, il pourrait être utile de connaitre la valeur du discriminant

• Lorsqu'aucune racine réelle n'existe. Pour cela il faut ajouter une

variable d'instance et Un accesseur à la classe NoRootExceptiond

NTIC 2024-2025
181 ADMINISTRER LES EXCEPTIONS

• Il est possible de récupérer la valeur du discriminant dans le bloc except, à partir de


l'objet représentant l'exception qui s'est produite

NTIC 2024-2025
182 Exemple:

raise

Try: Try :

Except: Except:

NTIC 2024-2025
183 Exemple:

Def fonction():
If a<0 :
raise ArithmeticError() ou MyException
….
a=int(input("donner un nombre :")) Try :
b=int(input("donner un nombre :")) fonction()
Try:
print("le resultat est ",a/b) Except:
print("erreur")
Except:
print (" erreur ")

NTIC 2024-2025
184

MANIPULER LES MODULESET


LES BIBLIOTHÈQUES
Création des modules

Importation des modules

NTIC 2024-2025
185
MANIPULER LES MODULES ET LES BIBLIOTHEQUES
1- Manipuler les modules
Création de modules

• Un module est un fichier « .py » contenant un ensemble de variables, fonctions et classes


que l’on peut importer et utiliser dans le programme principal (ou dans d’autres modules).

• Pour créer un module, il suffit de programmer les variables/fonctions et classes qui le


constituent dans un fichier portant le nom du module, suivi du suffixe « .py ». Depuis un (autre)

programme en Python, il suffit alors d’utiliser la primitive import pour

pouvoir utiliser ces variables/fonctions/classes.

NTIC 2024-2025
186
MANIPULER LES MODULES ET LES BIBLIOTHEQUES

Remarque:
Les modules :
• Permettent la séparation du code et donc une meilleure organisation du code
• Maximisent la réutilisation
• Facilitent le partage du code

NTIC 2024-2025
187
MANIPULER LES MODULES ET LES BIBLIOTHEQUES

importation d’un module

• l’instruction import nom_module permet l’importation d’un module. L’importation


doit se faire avant l’exploitation des composantes du module.

• En règle générale, toutes les importations sont faites au début du programme.


Cependant, elles peuvent être faite dans n’importe quelle partie du programme.

NTIC 2024-2025
188
MANIPULER LES MODULES ET LES BIBLIOTHEQUES

• import * vous offre la possibilité d’importer toutes les composantes d’un


module (classes, attributs et fonctions). Cependant, il est possible d’importer
qu’une classe de ce module en écrivant from module_exemple import
exemple_class

• Lorsqu’on importe un module, l’interpréteur Python le recherche dans


différents répertoires selon l’ordre suivant :
1. Le répertoire courant ;

2. Si le module est introuvable, Python recherche ensuite chaque répertoire listé dans la variable shell
PYTHONPATH ;

3. Si tout échoue, Python vérifie le chemin par défaut (exemple pour windows \Python\Python39\Lib)

NTIC 2024-2025
189
MANIPULER LES MODULES ET LES BIBLIOTHEQUES

2- Manipuler les bibliothèques

• Dans Python, une bibliothèque est un ensemble logiciel de modules (classes


(types d’objets), fonctions, constantes…) ajoutant des possibilités étendues à
Python : calcul numérique, graphisme, programmation internet ou réseau,
formatage de texte, génération de documents, etc.

• Il en existe un très grand nombre, et c’est d’ailleurs une des grandes forces de
Python.

• La plupart est regroupée dans PyPI (Python Package Index) le dépôt tiers officiel
du langage de programmation Python.

NTIC 2024-2025
190
MANIPULER LES MODULES ET LES BIBLIOTHEQUES

• La distribution standard de Python dispose d’une très riche bibliothèque de modules


étendant les capacités du langage dans de nombreux domaines.

• La bibliothèque standard couvre un large éventail de fonctionnalités, notamment :


 Modules de date et d’heure
 Modules des interfaces graphiques
 Modules numériques et mathématiques
 Modules de système de fichiers
 Modules de système d’exploitation
 Modules pour la lecture et l’écriture de formats de données spécifiques tels que HTML, XML et JSON
 Modules pour l’utilisation de protocoles Internet tels que HTTP, SMTP, FTP, etc.
 Modules pour l’utilisation de données multimédias telles que les données audio et vidéo

NTIC 2024-2025
191
MANIPULER LES MODULES ET LES BIBLIOTHEQUES
Pip (Python Installer Package)

Pip (Python Installer Package) est le manager de package pour Python

• Pip est un moyen d'installer et de gérer des packages et des dépendances supplémentaires qui
ne sont pas encore distribués dans le cadre de la version standard du package

• Pip package est intégré dans l’installation du Python depuis les versions 3.4 pour Python3 et les
versions 2.7.9 pour Python2, et utilisé dans nombreux projets du Python.

• En exécutant la commande ci-dessus, il est possible de vérifier que pip est disponible ou non

ou

NTIC 2024-2025
192 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

Installation des bibliothèques


• pip fournit une commande d'installation pour installer des
packages/bibliothèques

• Il est aussi possible de préciser une version minimum exacte


directement depuis la ligne de commande
• Utiliser des caractères de comparaison tel que >, < ou d’autres
caractères spéciaux qui sont interprétés par le shell, le nom du paquet et
la version doivent être mis entre guillemets

NTIC 2024-2025
193 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

• La mise à jour des bibliothèques existantes doit être demandée


explicitement :

• Pour désinstaller une bibliothèque, il faut utiliser la commande suivante

NTIC 2024-2025
194 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

Bibliothèques graphiques

• La bibliothèque matplotlib (et sa sous-bibliothèque pyplot) sert


essentiellement à afficher des graphismes. Son utilisation ressemble
beaucoup à celle de Matlab.

• Pour installer matplotlib, il faut taper la commande :

NTIC 2024-2025
195 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

Bibliothèques graphiques
• PyQt est un module libre qui permet de créer des interfaces graphiques
en Python.

• Pour installer PyQT, il faut taper la commande

NTIC 2024-2025
196 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

Bibliothèques graphiques

• Tkinter est un module intégré à Python pour développer des applications


graphiques.

• Ce module se base sur la bibliothèque graphique Tcl/Tk.


• Pour installer Tk, il faut taper la commande :

NTIC 2024-2025
197 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

Tkinter

La création d’une application GUI (Graphical User Interface) à l’aide de

Tkinter est une tâche facile. Tkinter est un wrapper autour de la

bibliothèque graphique TK, qui fournit des widgets et des outils pour créer

des fenêtres, des boutons, des zones de texte, des listes déroulantes, des

images, etc.

NTIC 2024-2025
198 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

Tout ce que vous devez faire est d’effectuer les étapes suivantes :
• Importez le module Tkinter.
• Créez la fenêtre principale de l’application GUI (Graphical User Interface) .
• Ajoutez un ou plusieurs des widgets à l’application GUI((Graphical User
Interface) .

• Faite une boucle d’événement pour prendre des mesures contre chaque
événement déclenché par l’utilisateur.
NTIC 2024-2025
199 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

Widgets Tkinter

Tkinter fournit divers contrôles, tels que des boutons, des étiquettes et des
zones de texte utilisées dans une application graphique. Ces contrôles
sont communément appelés widgets.

Il existe actuellement 15 types de widgets dans Tkinter. Nous présentons


ces widgets ainsi qu’une brève description dans le tableau suivant:

NTIC 2024-2025
200 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

NTIC 2024-2025
201 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

NTIC 2024-2025
202 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

La méthode config() de Tkinter permet de configurer les paramètres d'un


widget. Les paramètres qui peuvent être configurés dépendent du type de
widget.

NTIC 2024-2025
203 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

Gestionnaires de positionnement

Tous les widgets Tkinter ont accès à des méthodes de gestion de géométrie spécifiques,
qui ont pour but d’organiser les widgets dans la zone de widget parent. Tkinter expose les
classes de gestionnaire de positionnement suivantes: pack, grid et place.

La méthode pack() : Ce gestionnaire de positionnement organise les widgets en blocs


avant de les placer dans le widget parent.

La méthode grid() : Ce gestionnaire de positionnement organise les widgets dans une


structure semblable à une table dans le widget parent.

La méthode place() : Ce gestionnaire de positionnement organise les widgets en les


plaçant dans une position spécifique dans le widget parent.
NTIC 2024-2025
204 MANIPULER LES MODULES ET LES BIBLIOTHEQUES
Pack() Grid() Place()

Selon les coordonnées

permet de positionner les widgets Cette méthode permet de positionner permet de positionner les widgets
les uns à côté des autres, soit les widgets dans une grille de cellules avec des coordonnées absolues
horizontalement, soit rectangulaires. dans la fenêtre.
verticalement.
t = [Link](app, text="saisir :") l = [Link] (text = "première ligne") l = [Link](text="première ligne")
[Link]() [Link] (column = 0, row = 0)
z = [Link]( app) s = [Link] () [Link] (x=10, y=50)
[Link](side=[Link]) [Link] (column = 0, row = 1)
e = [Link] (text = "seconde ligne")
[Link] (column = 1, row = 0)

NTIC 2024-2025
205 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

Boite de message

Tkinter fournit des fonctions simples pour afficher des boites de message à
l’utilisateur. Ces fonctions prennent comme premier paramètre le titre de la
fenêtre de dialogue et comme second paramètre le message à afficher.

• Message d’information

NTIC 2024-2025
206 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

NTIC 2024-2025
207

Les widgets dans Tkinter

NTIC 2024-2025
208 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

1- Création d’ un composant graphique de type Label.

Notez que l’on passe l’objet app comme premier paramètre de construction
pour indiquer qu’il appartient à la fenêtre principale

NTIC 2024-2025
209 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

NTIC 2024-2025
210 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

2- Création d’ un composant graphique de type Bouton

NTIC 2024-2025
211 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

NTIC 2024-2025
212 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

Tkinter - Lancer une fonction lorsqu’un bouton est pressé

NTIC 2024-2025
213 Concaténation de deux chaines de
caractères
Concaténation de deux chaines de
caractères dans la une Label

NTIC 2024-2025
214 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

3- Création d’ un composant graphique de type Zone de saisie

NTIC 2024-2025
215 Exercice

1- Le bouton ‘ Effacer' efface les trois zones.

2- Cliquer sur "Concaténer" provoque l'exécution de

la concaténation des deux zones et l'affichage du résultat

dans la zone résultat.

3- Aucune saisie ne doit pouvoir être faite dans la zone résultat.

NTIC 2024-2025
216 Exercice

1- Le bouton 'Remise à blanc' efface les trois zones.


2- Cliquer sur "Calculer" provoque l'exécution de
l’operation entre les deux nombres des deux zones et
l'affichage du résultat dans la zone résultat.
3- Aucune saisie ne doit pouvoir être faite dans la
zone résultat.

NTIC 2024-2025
217 Exercice

1- Le bouton ‘Effacer' efface les 2 zones.


2- Cliquer sur "Se connecter" provoque,
si le login est "User" et le mot de passe
"123" , l’ouverture d’une nouvelle fenêtre
d’arriere plan noir et avec un Label
contenant le login.
3- la 1ere fenêtre sera fermé. (avec la
methode destroy())

NTIC 2024-2025
218 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

4- Création d’ un composant graphique de type Zone de saisie multiligne


Le widget Text est un widget Tkinter qui permet d'afficher et d'éditer du texte multiligne. Il permet aux
utilisateurs de saisir du texte et de l'éditer, et offre des fonctionnalités telles que la sélection de texte,

le copier-coller, et l'annulation.

NTIC 2024-2025
219 Exercice

Réaliser une application permettant de saisir


un login et un mot de passe en affichant dans
une zone multiligne les informations entrées en
cliquant sur connecter.
Le message a affiché :
" votre login est : ……
votre mot de passe est : ….. "
NB: "Votre login est: "+a+"\nVotre mot de passe
est: "+b+"\n" .

NTIC 2024-2025
220 Exercice
1- Le bouton ‘Effacer' efface les 2 zones.
2- Cliquer sur "Se connecter" provoque, si le login est "User"
et le mot de passe "123" , l’ouverture d’une nouvelle fenêtre
d’arriere plan noir et avec un Label contenant le login, et
une zone multiligne contenant les informations entrées.
Le message a affiché :
" votre login est : ……
votre mot de passe est : ….. "
Si login ou mot de passe est incorrecte un message dans la 1ere fenêtre
s’affiche: " Bonjour LOGIN votre login ou mot de passe est incorrecte.
3- la 1ere fenêtre sera fermé. (avec la methode destroy())

NTIC 2024-2025
221 Exercice

NTIC 2024-2025
222 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

5- Création d’ un composant graphique de type Case à cocher

NTIC 2024-2025
223 MANIPULER LES MODULES ET LES BIBLIOTHEQUES
6- Création d’ un composant graphique de type Bouton radio

NTIC 2024-2025
224 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

NTIC 2024-2025
225 Exercice
Dans un premier temps, la boite se présente de la façon suivante

Une fois la première case sélectionnée, la boite doit prendre cet aspect:

NTIC 2024-2025
226 Exercice
Après avoir entré un nombre dans les zones de texte libellées 'Nombre1' et 'Nombre2' et sélectionné une des options du cadre
'Opérations', on peut :

Cliquer sur ‘Calcul' déclenche le calcul et l'affichage du résultat.

Le bouton 'Remise à blanc' remet les trois zones à zéro,

et place le point d'insertion dans la zone 'Nombre 1‘

Tant que le premier nombre n'est pas saisi et qu'aucune

option n'est sélectionnée, le bouton " Calcul" doit être

inopérant. Dès qu'un calcul devient possible, rendre le

bouton utilisable.

Dés qu'une option est choisie, le signe de l'opération (+, -, *, /) doit

apparaître dans l'intervalle situé entre les deux nombres.

Aucune saisie ne doit être faite dans la zone résultat.


NTIC 2024-2025
227 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

7- Création d’ un composant graphique de type Listebox

NTIC 2024-2025
228 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

NTIC 2024-2025
229 Exercice

1)-L'utilisateur compose son menu en cochant


les différents plats proposés. Il valide son choix
en cliquant sur le bouton 'Ok'. Les options
choisies s'affichent alors dans le composant
Listbox sur le côté droit.
Le bouton réinitialise tous les composants (Cases
à cochées décochées et Listbox récapitulatif
vide). Le bouton 'Fermer' met fin à l'application.

NTIC 2024-2025
230 Exercice

Lorsque l'utilisateur sélectionne un élément,


les propriétés affectées s'affichent à droite.
Pour associer un évènement a un widget , on ajoute
l’instruction suivante:
# Lier l'événement de sélection de la Listbox à la fonction afficher
[Link]("<<ListboxSelect>>", afficher)
Avec :
def afficher(event):

NTIC 2024-2025
231

NTIC 2024-2025
232 Exercice
Mettre en œuvre les différents types de listes à notre

disposition : Listbox et ComboBox.

Au chargement du formulaire, remplir les différentes listes :

Listbox :Janvier, Février, Mars, Avril, Mai, Juin, Juillet, Août

ComboBox : Sep, Oct, Nov, Déc.

La case à cocher : ‘Sélection Multiple’ permet selon son

état de sélectionner un ou plusieurs éléments dans la

Listbox.

Un dernier textArea récapitule les mois sélectionnés dans

les deux. Cette information se met à jour en temps réel dès

que l’utilisateur modifie la sélection d’une des deux listebox

ou combobox.
NTIC 2024-2025
233 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

8- Création d’ un composant graphique de type Tableau (TreeView)

NTIC 2024-2025
234 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

NTIC 2024-2025
235 MANIPULER LES MODULES ET LES BIBLIOTHEQUES
Tkinter - Associer un événement à un objet

• Une fonction peut être exécutée lorsqu’on déplace la souris, on tape sur une
touche du clavier ou à n’importe quel événement capté par l’interface
graphique.

• La classe Event définit les évènements. Le tableau suivant décrit les


principaux évènements relatifs aux mouvements de la souris et à la pression
d’une touche.

NTIC 2024-2025
236 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

• La méthode bind lance l’exécution d’une fonction lors de l’interception d’un évènement par
un objet.

• La fonction exécutée possède comme paramètre un seul objet de type Event. Sa syntaxe est
comme suit :

[Link](evt, fonction)

• widget représente l’ID de l’objet qui va intercepter l’évènement evt. Le Tableau suivant décrit
les valeurs que peut prendre evt.

• fonction représente la fonction qui va être appelée lors de l’arrivé de l’évènement. Elle
possède un seul paramètre de type Event.

NTIC 2024-2025
237 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

NTIC 2024-2025
238 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

NTIC 2024-2025
239 MANIPULER LES MODULES ET LES BIBLIOTHEQUES

Exercices

NTIC 2024-2025

Vous aimerez peut-être aussi