Vous êtes sur la page 1sur 3

USTHB/FEI/Master Réseaux et Télécommunications/2023-2024

Programmation Orientée Objet en Python (Section B)

TP Décorateurs
Objectif : Dans ce TP, nous allons aborder les décorateurs de fonctions et les décorateurs de classes

Exercice1
1. Pour recenser l’état d’avancement dans quelques matières, on demande de créer un dictionnaire
avec les clés suivantes : cours, TD, TP. Pour la clé cours on met comme valeurs une liste de tuples
contenant le nom de chaque matière et le nombre de séances :[(POO,14), (CNA, 20), (TAS, 14)].
Pour les TD on met : [(POO,0), (CNA, 12), (TAS, 12)] et pour les TP on met : [(POO,7), (CNA, 4),
(TAS, 6)].
2. Créer une fonction Select qui reçoit le dictionnaire comme paramètre et affiche les tuples qui ont
un nombre de séances supérieur à 10.
3. Créer un décorateur Deco qui reçoit Select comme paramètre. Il ajoute la clé Section avec un tuple
tel que : [(‘RT’, 80)] et affiche toutes les clés du dictionnaire.
4. Faire l’appel de la fonction select avant et après l’ajout du décorateur.

Exercice 2
1. On considère une entreprise qui produit des vêtements (pantalons, chemises et vestes). Pour chaque
produit on construit une liste contenant le nom et le nombre d’articles produits. Les trois listes
doivent être placées dans une liste qui les englobe.
2. Créer une fonction Stock qui reçoit la liste comme paramètre. Pour chaque produit, on ajoute
aléatoirement une étiquette 1 (indiquant que le produit est bon) et 0 (si le produit contient des
défauts). Pour sauvegarder ces informations, créer un tableau numpy, Quality dont la taille est
égale au nombre des articles. Ce tableau est rempli aléatoirement par des 0 et des 1 et ajouté à la
liste du produit concerné.
3. Comme deuxième étape de traitement, on demande de créer un décorateur Tri qui se charge de
séparer les articles en bon état des articles défectueux. Le décorateur commence par exécuter le
contenu de la fonction stock. Ensuite, pour chaque produit, il extrait les bons produits (avec une
étiquette 1), supprime le tableau numpy et ajoute la liste des index des bons articles à la liste du
produit. Utiliser la fonction np.where pour retrouver les étiquettes, pop pour supprimer le tableau
insert pour ajouter le tuple contenant les index.
4. Exécuter le programme de la fonction avant et après décoration, et afficher la liste à chaque fois.

Exercice 3
1. Pour effectuer un traitement des matrices, on commence par créer une matrice remplie par des
valeurs aléatoires prises dans l’intervalle [0, 300].

1
2. On définit une fonction Maxi qui reçoit la matrice en argument. La fonction cherche la valeur
maximale sur chaque colonne qu’elle collecte dans un tableau. Elle fait aussi le même traitement
pour les lignes et renvoie les tableaux obtenus au programme appelant.
3. Créer un décorateur Affiche qui affiche les valeurs inférieures à 100, effectue un sort pour les
tableaux renvoyés par la fonction initiale et renvoie à son tour les tableaux triés et la valeur
maximale de toute la matrice.
4. Ajouter un autre décorateur Display qui affiche les paramètres retournés par Affiche.
5. Exécuter le programme de Maxi avant et après l’ajout des deux décorateurs.
Exercice 4
Pour contrôler la qualité de service dans un réseau de télécom, on définit les quatre KPI pour évaluer
les communications sur une semaine :
 Nb : Nombre d’appels (1256304)
 Ac : Accessibilité aux utilisateurs (valeurs aléatoire entre 50 et 100%).
 Tc : Taux de coupure des appels (5%)
 Td : taux de désabonnements (0%)
1. Créer une classe Contrôle contenant un attribut dictionnaire vide à l’état initial.
2. Ajouter une méthode Collecte qui remplit le dictionnaire selon les valeurs indiquées au-dessus
(utiliser input si possible).
3. On utilise la méthode Display pour afficher les KPI et une méthode Eval qui évalue les KPI telle
que : Si l’accessibilité est inférieure à 85%, on met le taux de coupures à 100-Ac. On retranche le
nombre d’appels équivalents de Nb. Si le Tc est supérieur à 20%, le taux de désabonnement s’élève
à 10%(un client sur deux).
4. Créer un décorateur perturbation pour décorer la méthode Eval. Ce dernier met l’accessibilité à
90% et le taux de coupures à 25% avant de procéder au traitement de Eval.
5. Créer un objet Contrôle, appeler les méthodes Eval et Display avant et après l’ajout du décorateur.

Exercice 5
Pour gérer le compte bancaire d’un client, on propose un programme orienté objet tel que :
1. Définir une classe Compte avec un attribut S (solde) initialisé à une somme de votre choix, un
attribut Etat initialisé à True, un dictionnaire d avec deux clés débité, et crédité dont les valeurs
sont initialisées à 0 et S, respectivement.
2. Ajouter une méthode Consulter qui vérifie si le solde dépasse 1000 DA. Dans le cas contraire le
compte est bloqué (Mettre Etat à False).
3. La méthode Retirer demande au client d’introduire le montant souhaité, si Etat est à True et si le
solde est supérieur à ce montant, et la somme de ce montant avec la valeur de débité du
dictionnaire est inférieure à 100000 DA, on accorde le retrait. Dans ce cas, on affiche un message

2
que l’opération de retrait a été validée, on diminue le montant du Solde, et on appelle la méthode
Consulter.
4. Ajouter une méthode Alimenter qui ne fait qu’ajouter la somme reçue en paramètre au solde,
augmente la valeur de crédité du dictionnaire par cette somme, et met Etat à True.
5. Ajouter un décorateur Bénéfice pour la méthode Alimenter. Bénéfice appelle Alimenter, Vérifie la
différence entre les valeurs débité et crédité du dictionnaire et calcule le taux de bénéfice comme
étant 10% de cette différence qu’on rajoute au solde et qu’on retourne au programme appelant.
6. Créer un objet compte avec un montant de votre choix et appeler les méthodes Etat, Retirer et
Alimenter. Pour cette dernière faire l’appel avant et après l’ajout du décorateur.

Vous aimerez peut-être aussi