Configuração do Projeto
Parte da seção Programação Orientada a Objetos do Journey de Lua da Coddy. Lição 19 de 70.
Desafio
FácilEstamos começando o projeto Digital Bank. Nas próximas lições, você construirá uma classe Account que pode receber depósitos, processar saques, imprimir a si mesma e transferir dinheiro para outras contas. Tudo começa com uma estrutura de arquivos organizada e um construtor.
Seus dois arquivos:
Account.lua: defina a tabelaAccount, configureAccount.__index = Accountpara que as instâncias encontrem seus métodos e escreva o construtor:new(). Ele cria uma tabela vazia, define sua metatabela comoAccount, atribui a ela umbalancede0e a retorna. O arquivo termina comreturn Account.main.lua: exija o módulo comrequire('Account'), crie duas contas comAccount:new(), imprima o saldo de cada uma em sua própria linha e, em seguida, imprimasavings == checkingpara mostrar que as duas chamadas produziram duas tabelas diferentes.
Saída esperada:
0
0
falseToda conta começa em zero. Na próxima lição, você adicionará o método :deposit(amount), que faz o saldo crescer.
Experimente você mesmo
-- TODO: faça o require do módulo Account (o arquivo é Account.lua)
local Account = nil
-- TODO: crie duas contas com Account:new()
-- TODO: imprima o saldo de cada conta (um por linha)
-- TODO: imprima se as duas contas são a mesma tabela (elas não devem ser)
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 FormasPratique por conta própria: Compilador de Lua online