Menu
Coddy logo textTech

Transférer des fonds

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

challenge icon

Défi

Facile

Votre banque numérique est presque terminée ! La dernière fonctionnalité majeure est la possibilité de transférer de l'argent entre les comptes. C'est ici que votre conception orientée objet brille vraiment : un objet de compte peut interagir directement avec un autre objet de compte.

Vous allez ajouter une méthode :transfer(targetAccount, amount) qui déplace l'argent d'un compte à un autre. Réfléchissez à ce que cette opération implique réellement : il s'agit d'un retrait du compte source suivi d'un dépôt sur le compte cible. La beauté de la chose est que vous pouvez réutiliser les méthodes que vous avez déjà construites !

Continuez à construire sur vos fichiers existants :

  • Account.lua : Ajoutez une méthode :transfer(targetAccount, amount) à votre classe Account. Cette méthode doit tenter de retirer le montant de self, et en cas de succès, déposer ce montant dans le targetAccount. Si le retrait échoue (fonds insuffisants), le transfert ne doit pas avoir lieu. Conservez toutes vos fonctionnalités existantes (constructeur avec ID, deposit, withdraw, getBalance et __tostring).
  • main.lua : Créez plusieurs comptes et démontrez les transferts entre eux, en montrant comment les soldes changent à travers différents objets de compte.

Vous recevrez cinq entrées :

  1. L'ID du premier compte
  2. L'ID du deuxième compte
  3. Le dépôt initial dans le premier compte
  4. Le montant du premier transfert (du compte 1 vers le compte 2)
  5. Le montant du deuxième transfert (du compte 1 vers le compte 2)

Dans votre fichier principal, créez deux comptes avec les ID donnés (tous deux commençant avec un solde de 0), déposez le montant initial dans le premier compte, puis tentez les deux transferts du premier compte vers le second. Après chaque tentative de transfert, affichez les deux comptes (le __tostring montrera leur état actuel).

Par exemple, si les entrées sont 101, 102, 500, 200, et 400, la sortie devrait être :

Account [101]: Balance = 300
Account [102]: Balance = 200
Insufficient funds
Account [101]: Balance = 300
Account [102]: Balance = 200

Le premier compte commence avec 500 après le dépôt. Le premier transfert de 200 réussit, laissant le compte 101 avec 300 et le compte 102 avec 200. Le deuxième transfert de 400 échoue car le compte 101 n'a que 300 — les deux soldes restent donc inchangés.

Essayez vous-même

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

-- Lit les cinq entrées
local id1 = io.read()
local id2 = io.read()
local initialDeposit = tonumber(io.read())
local transfer1 = tonumber(io.read())
local transfer2 = tonumber(io.read())

-- Crée deux comptes avec des identifiants
local account1 = Account:new(id1)
local account2 = Account:new(id2)

-- Dépose le montant initial dans le premier compte
account1:deposit(initialDeposit)

-- TODO: Tenter le premier transfert du compte1 vers le compte2

-- TODO: Afficher les deux comptes après le premier transfert

-- TODO: Tenter le second transfert du compte1 vers le compte2

-- TODO: Afficher les deux comptes après le second transfert

Toutes les leçons de Object Oriented Programming