Menu
Coddy logo textTech

Méthode de retrait

Fait partie de la section Object Oriented Programming du Journey Lua de Coddy — leçon 21 sur 70.

challenge icon

Défi

Facile

Votre banque numérique s'agrandit ! Les comptes peuvent désormais recevoir des dépôts, mais une vraie banque doit également permettre aux clients de retirer de l'argent. Ajoutons une méthode :withdraw(amount)—mais avec une vérification de sécurité importante.

Contrairement aux dépôts, les retraits peuvent échouer. Si un client essaie de retirer plus d'argent qu'il n'en possède, la banque ne doit pas l'autoriser. Votre méthode de retrait doit vérifier si les fonds sont suffisants avant de déduire le montant.

Vous continuerez à travailler avec vos deux fichiers :

  • Account.lua : Ajoutez une méthode :withdraw(amount) à votre classe Account existante. Si le compte a un solde suffisant, soustrayez le montant et retournez true. S'il n'y a pas assez de fonds, affichez Insufficient funds et retournez false sans modifier le solde.
  • main.lua : Créez un compte, effectuez un dépôt pour lui donner des fonds, puis tentez plusieurs retraits pour voir les transactions réussies et échouées.

Vous recevrez quatre entrées :

  1. Montant du dépôt initial
  2. Montant du premier retrait
  3. Montant du deuxième retrait
  4. Montant du troisième retrait

Dans votre fichier principal, créez un compte, déposez le montant initial, puis tentez chaque retrait dans l'ordre. Après chaque tentative de retrait, affichez le solde actuel sur une nouvelle ligne. N'oubliez pas que les retraits échoués afficheront également Insufficient funds avant que vous n'affichiez le solde.

Par exemple, si les entrées sont 100, 30, 50, et 40, la sortie devrait être :

70
20
Insufficient funds
20

Le compte commence avec 100 après le dépôt. Le premier retrait de 30 réussit (solde : 70), le deuxième retrait de 50 réussit (solde : 20), mais le troisième retrait de 40 échoue car il ne reste que 20—le solde reste donc à 20.

Essayez vous-même

-- Requiert le module Account
local Account = require('Account')

-- Lit les quatre entrées
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local withdrawal2 = tonumber(io.read())
local withdrawal3 = tonumber(io.read())

-- Crée un compte unique
local account = Account:new()

-- Dépose le montant initial
account:deposit(initialDeposit)

-- Tente le premier retrait et affiche le solde
-- TODO: appeler account:withdraw(withdrawal1) ici
print(account.balance)

-- Tente le deuxième retrait et affiche le solde
-- TODO: appeler account:withdraw(withdrawal2) ici
print(account.balance)

-- Tente le troisième retrait et affiche le solde
-- TODO: appeler account:withdraw(withdrawal3) ici
print(account.balance)

Toutes les leçons de Object Oriented Programming