Menu
Coddy logo textTech

Méthode de retrait

Fait partie de la section Programmation orientée objet du Journey Lua de Coddy. Leçon 21 sur 70.

challenge icon

Défi

Facile

Votre banque numérique se développe ! Les comptes peuvent désormais recevoir des dépôts, mais une vraie banque doit également permettre à ses clients de retirer de l’argent. Ajoutons une méthode :withdraw(amount), avec toutefois 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 withdraw doit vérifier que 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 renvoyez true. Si les fonds sont insuffisants, affichez Insufficient funds et renvoyez false sans modifier le solde.
  • main.lua : créez un compte, effectuez un dépôt pour lui donner des fonds, puis essayez plusieurs retraits afin d’observer des 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 essayez 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 l’affichage du solde.

Par exemple, si les entrées sont 100, 30, 50 et 40, la sortie doit ê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

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

-- Lire 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éer un seul compte
local account = Account:new()

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

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

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

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

Toutes les leçons de Programmation orientée objet

Entraînez-vous par vous-même : Compilateur Lua en ligne