Recapitulação - Matemática de Carteira
Parte da seção Programação Orientada a Objetos do Journey de Lua da Coddy. Lição 30 de 70.
Desafio
FácilVamos construir uma classe Wallet que reúne as habilidades de sobrecarga de operadores que você aprendeu neste capítulo. Sua carteira armazenará uma quantia em dinheiro e suportará duas operações principais: combinar carteiras com + e comparar carteiras com <code>< e .
Você organizará seu código em dois arquivos:
Wallet.lua: Defina sua classe Wallet com um campoamountrepresentando quanto dinheiro ela contém. Inclua um construtor:new(amount)e implemente dois metamétodos:__add: Somar duas carteiras cria uma nova carteira contendo o total combinado__lt: Comparar carteiras determina qual contém menos dinheiro
main.lua: Importe seu módulo Wallet, crie instâncias de carteira e demonstre ambas as operações funcionando juntas.
Você receberá três entradas:
- Quantia na primeira carteira
- Quantia na segunda carteira
- Quantia na terceira carteira
No seu arquivo principal, crie três carteiras com as quantias fornecidas. Então:
- Some a primeira e a segunda carteiras para criar uma carteira combinada
- Imprima a quantia da carteira combinada
- Compare a carteira combinada com a terceira carteira usando <code>< e imprima o resultado (
trueoufalse) - Compare a carteira combinada com a terceira carteira usando
e imprima o resultado (trueoufalse)
Por exemplo, se as entradas forem 50, 30 e 100, a saída deve ser:
80
true
falseA primeira carteira (50) mais a segunda carteira (30) cria uma carteira combinada com 80. Como 80 é menor que 100, a primeira comparação é true. Como 80 não é maior que 100, a segunda comparação é false.
Experimente você mesmo
local Wallet = require('Wallet')
-- Ler entrada
local amount1 = tonumber(io.read())
local amount2 = tonumber(io.read())
local amount3 = tonumber(io.read())
-- TODO: Criar três carteiras com os valores fornecidos
-- TODO: Somar a primeira e a segunda carteiras para criar uma carteira combinada
-- TODO: Imprimir o valor da carteira combinada
-- TODO: Comparar a carteira combinada com a terceira carteira usando < e imprimir o resultado
-- TODO: Comparar a carteira combinada com a terceira carteira usando > e imprimir o resultado
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