Método de Depósito
Parte da seção Object Oriented Programming do Journey de Lua da Coddy — lição 20 de 70.
Desafio
FácilHora de adicionar funcionalidade ao seu Banco Digital! Agora que as contas podem ser criadas com um saldo inicial de 0, vamos dar a elas a capacidade de receber dinheiro através de depósitos.
Com base na sua classe Account existente, você adicionará um método :deposit(amount) que aumenta o saldo da conta pelo valor especificado. Esta é uma operação bancária fundamental — o dinheiro entra e o saldo cresce!
Seus dois arquivos:
Account.lua: Estenda sua classe Account adicionando um método:deposit(amount). Este método deve adicionar o valor fornecido aself.balance. Mantenha tudo da lição anterior (a estrutura da classe e o construtor:new()).main.lua: Importe seu módulo Account, crie uma conta, faça alguns depósitos e mostre como o saldo muda.
Você receberá três entradas:
- Valor do primeiro depósito
- Valor do segundo depósito
- Valor do terceiro depósito
No seu arquivo principal, crie uma única conta e realize os três depósitos em ordem. Após cada depósito, imprima o saldo atual em uma nova linha.
Por exemplo, se as entradas forem 100, 50 e 25, a saída deve ser:
100
150
175Observe como cada depósito se baseia no saldo anterior — a conta começa em 0, depois cresce para 100 após o primeiro depósito, 150 após o segundo e 175 após o terceiro. Seu método :deposit() faz essa acumulação acontecer!
Experimente você mesmo
-- Importa o módulo Account
local Account = require('Account')
-- Lê os três valores de depósito
local deposit1 = tonumber(io.read())
local deposit2 = tonumber(io.read())
local deposit3 = tonumber(io.read())
-- Cria uma única conta
local account = Account:new()
-- Realiza os três depósitos e imprime o saldo após cada um
-- TODO: depositar deposit1 e imprimir account.balance
-- TODO: depositar deposit2 e imprimir account.balance
-- TODO: depositar deposit3 e imprimir account.balance
Todas as lições de Object Oriented Programming
1O Conceito 'Self'
Tabelas com Funções'self' ExplícitoA Sintaxe de Dois-pontosPonto vs Dois-pontosRecapitulação - Movendo o Ponto4Projeto: Banco Digital
Configuração do ProjetoMétodo de Depósito7Polimorfismo e Sobrescrita
Sobrescrita de MétodosChamando Métodos da Classe PaiDuck TypingInterface ComumVerificando o TipoRecapitulação - Papéis de Funcionários10Projeto: Gerenciador de Formas
Configuração do ProjetoClasse Retângulo2Padrão de Protótipo de Classe
O Conceito de ProtótipoVinculando com __indexO Construtor :new()Inicializando AtributosInstâncias IndependentesRecapitulação - Fábrica de Carros5Sobrecarga de Operadores em POO
Somando ObjetosSubtraindo ObjetosConcatenando ObjetosComparando Objetos (<, >)Recapitulação - Matemática de Carteira8Encapsulamento
Convenções de NomenclaturaClosures para PrivacidadeAcesso via ClosuresTabelas Somente LeituraLógica de ValidaçãoRecapitulação - Cofre Seguro11Padrões de Projeto (Lite)
Funções FactoryTabela SingletonPadrão IteratorObserver (Listener)Recapitulação - Logger Factory3Estado e Comportamento do Objeto
Variáveis de InstânciaMétodos GetterMétodos SetterPropriedades CalculadasFormatação de StringsVerificações de IgualdadeRecapitulação - Nota do Aluno6Fundamentos de Herança
Configurando a HerançaHerdando MétodosEstendendo o ConstrutorAdicionando Métodos FilhosCompartilhado vs ÚnicoRecapitulação - Hierarquia de Formas