Método de Depósito
Parte da seção Programação Orientada a Objetos do Journey de Lua da Coddy — lição 20 de 70.
Desafio
FácilEstamos agora iniciando o projeto Digital Bank. Hora de adicionar funcionalidade ao seu novo sistema! Agora que as contas podem ser criadas com um saldo inicial de 0, vamos dar a elas a capacidade de receber dinheiro por meio 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: Faça orequiredo seu módulo Account, crie uma conta, faça alguns depósitos e mostre como o saldo altera.
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 acumula sobre o 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 esse acúmulo acontecer!
Experimente você mesmo
-- Requer 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: deposite deposit1 e imprima account.balance
-- TODO: deposite deposit2 e imprima account.balance
-- TODO: deposite deposit3 e imprima account.balance
Todas as lições de Programação Orientada a Objetos
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ânguloClasse CírculoMétodo PerímetroColeção de FormasÁrea TotalFiltrar Formas2Padrã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