Menu
Coddy logo textTech

Transférer des fonds

Fait partie de la section Programmation orientée objet 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 consiste à pouvoir transférer de l’argent entre les comptes. C’est ici que votre conception orientée objet montre vraiment toute sa puissance : un objet compte peut interagir directement avec un autre objet compte.

Vous allez ajouter une méthode :transfer(targetAccount, amount) qui déplace de l’argent d’un compte vers 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. L’avantage, c’est que vous pouvez réutiliser les méthodes que vous avez déjà créées !

Continuez à travailler 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 réussite, déposer ce montant sur le targetAccount. Si le retrait échoue (fonds insuffisants), le transfert ne doit pas avoir lieu. Conservez toutes vos fonctionnalités existantes (constructeur avec ID, dépôt, retrait, getBalance et __tostring).
  • main.lua : créez plusieurs comptes et montrez des transferts entre eux, en illustrant la façon dont les soldes changent entre différents objets compte.

Vous recevrez cinq entrées :

  1. ID du premier compte
  2. ID du deuxième compte
  3. Dépôt initial sur le premier compte
  4. Premier montant à transférer (du compte 1 vers le compte 2)
  5. Deuxième montant à transférer (du compte 1 vers le compte 2)

Dans votre fichier principal, créez deux comptes avec les ID fournis (tous deux ayant un solde initial de 0), déposez le montant initial sur le premier compte, puis tentez les deux transferts du premier compte vers le deuxième. Après chaque tentative de transfert, affichez les deux comptes (__tostring affichera leur état actuel).

Par exemple, si les entrées sont 101, 102, 500, 200 et 400, la sortie doit ê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 ne possède que 300 ; les deux soldes restent donc inchangés.

Essayez vous-même

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

-- Lire 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éer deux comptes avec des IDs
local account1 = Account:new(id1)
local account2 = Account:new(id2)

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

-- TODO: Tenter le premier transfert de account1 vers account2

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

-- TODO: Tenter le second transfert de account1 vers account2

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

Toutes les leçons de Programmation orientée objet

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