Obtenir le solde
Fait partie de la section Object Oriented Programming du Journey Lua de Coddy — leçon 22 sur 70.
Défi
FacileVotre banque numérique prend vraiment forme ! Les comptes peuvent recevoir des dépôts et gérer les retraits avec une vérification appropriée des fonds. Maintenant, ajoutons une méthode getter pour récupérer le solde, puis mettons tout cela ensemble dans un scénario bancaire réaliste.
Vous continuerez à travailler sur vos fichiers existants :
Account.lua: Ajoutez une méthode:getBalance()qui retourne le solde actuel. Cela suit le modèle de getter que vous avez appris précédemment — fournir un accès contrôlé aux données internes plutôt que d'accéder directement au champ. Conservez toutes vos fonctionnalités existantes (constructeur, méthodes de dépôt et de retrait).main.lua: Créez un compte et exécutez une séquence d'opérations bancaires pour démontrer comment les dépôts, les retraits et les vérifications de solde fonctionnent ensemble dans un scénario réel.
Vous recevrez cinq entrées :
- Montant du dépôt initial
- Montant du premier retrait
- Montant du deuxième dépôt
- Montant du deuxième retrait
- Montant du troisième retrait
Dans votre fichier principal, créez un compte et effectuez ces opérations dans l'ordre :
- Déposez le montant initial, puis affichez le solde en utilisant
:getBalance() - Retirez le premier montant, puis affichez le solde
- Déposez le deuxième montant, puis affichez le solde
- Retirez le deuxième montant, puis affichez le solde
- Tentez le troisième retrait, puis affichez le solde
N'oubliez pas que les retraits échoués afficheront Insufficient funds avant que vous n'affichiez le solde.
Par exemple, si les entrées sont 200, 50, 100, 180, et 100, la sortie devrait être :
200
150
250
70
Insufficient funds
70Le compte commence à 200, descend à 150 après le premier retrait, monte à 250 après un autre dépôt, tombe à 70 après le retrait de 180, et reste à 70 lorsque le dernier retrait de 100 échoue en raison de fonds insuffisants.
Essayez vous-même
-- Requiert le module Account
local Account = require('Account')
-- Lit les cinq entrées
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local deposit2 = 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 et affiche le solde en utilisant :getBalance()
account:deposit(initialDeposit)
print(account:getBalance())
-- Tente le premier retrait et affiche le solde
account:withdraw(withdrawal1)
print(account:getBalance())
-- Dépose le deuxième montant et affiche le solde
account:deposit(deposit2)
print(account:getBalance())
-- Tente le deuxième retrait et affiche le solde
account:withdraw(withdrawal2)
print(account:getBalance())
-- Tente le troisième retrait et affiche le solde
account:withdraw(withdrawal3)
print(account:getBalance())
Toutes les leçons de Object Oriented Programming
1Le concept de « self »
Tables avec fonctions« self » expliciteLa syntaxe avec deux-pointsPoint vs deux-pointsRécapitulatif - Point mobile4Projet : Banque numérique
Configuration du projetMéthode de dépôt7Polymorphisme et Redéfinition
Redéfinition de méthodesAppeler des méthodes parentesDuck TypingInterface communeVérification du typeRécapitulatif - Rôles des employés10Projet : Gestionnaire de formes
Configuration du projetClasse Rectangle2Modèle de prototype de classe
Le concept de prototypeLiaison avec __indexLe constructeur :new()Initialisation des attributsInstances indépendantesRécapitulatif - Usine de voitures5Surcharge d'opérateurs en POO
Additionner des objetsSoustraire des objetsConcaténer des objetsComparer des objets (<, >)Récapitulatif - Calculs de portefeuille8Encapsulation
Conventions de nommageClosures pour la confidentialitéAccès via les ClosuresTables en lecture seuleLogique de validationRécapitulatif - Coffre-fort sécurisé11Patrons de conception (Lite)
Fonctions FactoryTable SingletonPatron IteratorObserver (Écouteur)Récapitulatif - Logger Factory3État et comportement des objets
Variables d'instanceMéthodes GetterMéthodes SetterPropriétés calculéesFormatage de chaînesVérifications d'égalitéRécapitulatif - Note de l'étudiant6Bases de l'héritage
Mise en place de l'héritageHériter des méthodesÉtendre le constructeurAjouter des méthodes enfantsPartagé vs UniqueRécapitulatif - Hiérarchie des formes