1.
Contexte
Dans une application de commerce en ligne, il est nécessaire de proposer plusieurs
moyens de paiement aux utilisateurs (ex : PayPal, Stripe, Visa, MasterCard).
Actuellement, l’application doit gérer chaque service de paiement séparément, ce
qui
entraîne du code dupliqué et difficile à maintenir.
2. Objectif
Vous devez implémenter un système de gestion des paiements qui :
a) Gère plusieurs moyens de paiement (ex: PayPal, Stripe, Carte bancaire).
b) Permet à chaque service de paiement d’implémenter sa propre méthode
pour exécuter un paiement (ex: payer(montant), envoyer_paiement(montant),
process_payment(montant)).
c) Intègre ces services dans le reste du programme, en permettant aux
utilisateurs de choisir leur mode de paiement.
3. Questions
a) Implémentez la gestion des paiements selon vos connaissances actuelles
(sans utiliser de Design Pattern).
b) Testez votre code en instanciant différents services de paiement et en
effectuant des transactions.
Indications pour aider à développer la version naïve
Étape 1 : Définir des classes pour chaque service de paiement
• Indications :
o Créer une classe par type de paiement (PayPal, Stripe, CarteBancaire).
o Chaque classe doit avoir une méthode pour exécuter un paiement (ex:
payer(montant), envoyer_paiement(montant),
process_payment(montant)) qui affiche un message simulant un paiement.
Étape 2 : Permettre la sélection du moyen de paiement
• Indications :
o Ajouter une variable methode_paiement pour stocker le choix du service
("paypal", "stripe", "carte").
o Demander une entrée utilisateur (input()) pour choisir un moyen de
paiement.
o Utiliser des conditions if/elif pour instancier le bon service.
Étape 3 : Tester avec plusieurs services de paiement
• Indications :
o Créer plusieurs instances (paypal = PayPal(), stripe = Stripe()).
o Effectuer un paiement avec la méthode définie (ex: payer(montant)).
o Observer si l’application peut facilement gérer plusieurs systèmes de
paiement.
o Réfléchir : Que se passe-t-il si vous voulez ajouter un autre moyen de
paiement (ex: Apple Pay) ?