Obtenir le solde
Fait partie de la section Programmation orientée objet 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 des retraits avec une vérification appropriée des fonds. Ajoutons maintenant une méthode getter pour récupérer le solde, puis mettons tout ensemble dans un scénario bancaire réaliste.
Vous continuerez à partir de vos fichiers existants :
Account.lua: ajoutez une méthode:getBalance()qui renvoie le solde actuel. Cela suit le modèle 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 montrer comment les dépôts, les retraits et les vérifications du 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 avec
: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 affichent Insufficient funds avant l'affichage du solde.
Par exemple, si les entrées sont 200, 50, 100, 180 et 100, la sortie doit être :
200
150
250
70
Insufficient funds
70Le compte commence à 200, descend à 150 après le premier retrait, remonte à 250 après un autre dépôt, descend à 70 après le retrait de 180, puis reste à 70 lorsque le retrait final de 100 échoue en raison de fonds insuffisants.
Essayez vous-même
-- Charger le module Account
local Account = require('Account')
-- Lire 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éer un seul compte
local account = Account:new()
-- Déposer le montant initial et afficher le solde en utilisant :getBalance()
account:deposit(initialDeposit)
print(account:getBalance())
-- Tenter le premier retrait et afficher le solde
account:withdraw(withdrawal1)
print(account:getBalance())
-- Déposer le deuxième montant et afficher le solde
account:deposit(deposit2)
print(account:getBalance())
-- Tenter le deuxième retrait et afficher le solde
account:withdraw(withdrawal2)
print(account:getBalance())
-- Tenter le troisième retrait et afficher le solde
account:withdraw(withdrawal3)
print(account:getBalance())
Toutes les leçons de Programmation orientée objet
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 RectangleClasse CercleMéthode PérimètreCollection de formesAire totaleFiltrer les formes2Modè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 formesEntraînez-vous par vous-même : Compilateur Lua en ligne