Exercices Projets guidés E-commerce #4 : Stratégies de reduction
🎉

Bravo!

Intermédiaire 🧠 Fondamentaux 20 XP 0 personnes ont réussi

E-commerce #4 : Stratégies de reduction

Le patron Strategy permet d'echanger des algorithmes sans changer le code qui les utilise. C'est comme avoir plusieurs telecommandes pour la meme tele : chacune fait les choses differemment, mais elles ont toutes les memes boutons.

En Python, on utilise ABC (Abstract Base Class) pour definir l'interface commune :

from abc import ABC, abstractmethod

class Stratégie(ABC):
@abstractmethod
def executer(self, données):
pass

Une classe abstraite ne peut pas etre instanciee directement. Il faut créer des sous-classes qui implementent les méthodes abstraites.

Crée une classe abstraite StratégieReduction avec une méthode abstraite appliquer(total) -> Decimal.

Crée deux stratégies concretes :
- ReductionPourcentage(pct) : reduit de pct pourcent (ex: 10 -> moins 10 pourcent)
- ReductionFixe(montant) : reduit d'un montant fixe (le total ne peut pas devenir negatif)

Exemple :
r = ReductionPourcentage(10)
r.appliquer(Decimal('100')) # Decimal('90')

rf = ReductionFixe(Decimal('15'))
rf.appliquer(Decimal('50')) # Decimal('35')
rf.appliquer(Decimal('10')) # Decimal('0') (pas negatif)

Tests (2/4)

Reduction pourcentage
from decimal import Decimal
r = ReductionPourcentage(10)
assert r.appliquer(Decimal('100')) == Decimal('90')
Reduction fixe
from decimal import Decimal
r = ReductionFixe(Decimal('15'))
assert r.appliquer(Decimal('50')) == Decimal('35')

+ 0 tests cachés

Indices (3 disponibles)

solution.py