Menu
Coddy logo textTech

Test bancaire final

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

challenge icon

Défi

Facile

Félicitations pour avoir construit un système de Banque Numérique complet ! Votre classe Account gère désormais les dépôts, les retraits, les vérifications de solde, l'identification des comptes et les transferts entre comptes. Mettons tout cela à l'épreuve avec un scénario bancaire multi-comptes réaliste.

Dans ce défi final, vous allez simuler une petite banque avec trois clients effectuant diverses transactions. Cela permettra de vérifier que toutes vos méthodes fonctionnent correctement ensemble et que les comptes conservent réellement un état indépendant.

Vos deux fichiers :

  • Account.lua : Votre classe Account complète avec toutes les fonctionnalités que vous avez construites tout au long de ce projet (constructeur avec ID, deposit, withdraw, getBalance, __tostring et transfer).
  • main.lua : Un script de simulation qui crée plusieurs comptes et exécute une série de transactions entre eux.

Vous recevrez six entrées :

  1. ID du compte 1
  2. ID du compte 2
  3. ID du compte 3
  4. Dépôt initial pour le compte 1
  5. Dépôt initial pour le compte 2
  6. Dépôt initial pour le compte 3

Dans votre fichier principal, simulez la journée bancaire suivante :

  1. Créez trois comptes avec les IDs donnés
  2. Déposez les montants initiaux dans chaque compte respectif
  3. Le compte 1 transfère 100 au compte 2
  4. Le compte 2 transfère 150 au compte 3
  5. Le compte 3 transfère 50 au compte 1
  6. Le compte 1 tente de transférer 1000 au compte 3 (cela devrait échouer)
  7. Affichez les trois comptes dans l'ordre (compte 1, puis 2, puis 3)

Par exemple, si les entrées sont A001, A002, A003, 500, 300 et 200, la sortie devrait être :

Insufficient funds
Account [A001]: Balance = 450
Account [A002]: Balance = 250
Account [A003]: Balance = 300

Traçons le déroulement : Le compte 1 commence avec 500, transfère 100 au compte 2 (maintenant 400), puis reçoit 50 du compte 3 (maintenant 450). Le compte 2 commence avec 300, reçoit 100 (maintenant 400), transfère 150 au compte 3 (maintenant 250). Le compte 3 commence avec 200, reçoit 150 (maintenant 350), transfère 50 au compte 1 (maintenant 300). Le dernier transfert de 1000 échoue car le compte 1 n'a que 450.

Essayez vous-même

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

-- Lit les six entrées
local id1 = io.read()
local id2 = io.read()
local id3 = io.read()
local initialDeposit1 = tonumber(io.read())
local initialDeposit2 = tonumber(io.read())
local initialDeposit3 = tonumber(io.read())

-- Crée trois comptes avec des identifiants
-- TODO: créer account1, account2, account3 en utilisant Account:new()

-- Dépose les montants initiaux dans chaque compte respectif
-- TODO: déposer initialDeposit1 dans account1, initialDeposit2 dans account2, initialDeposit3 dans account3

-- Le compte 1 transfère 100 au compte 2
-- TODO: account1:transfer(account2, 100)

-- Le compte 2 transfère 150 au compte 3
-- TODO: account2:transfer(account3, 150)

-- Le compte 3 transfère 50 au compte 1
-- TODO: account3:transfer(account1, 50)

-- Le compte 1 tente de transférer 1000 au compte 3 (cela devrait échouer)
-- TODO: account1:transfer(account3, 1000)

-- Affiche les trois comptes dans l'ordre
-- TODO: afficher account1, account2, account3

Toutes les leçons de Object Oriented Programming