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 criar 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 oferecerá 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 campoamountque representa quanto dinheiro ela contém. Inclua um construtor:new(amount)e implemente dois metamétodos:__add: adicionar duas carteiras cria uma nova carteira contendo o total combinado__lt: comparar carteiras determina qual contém menos dinheiro
main.lua: exija seu módulo Wallet, crie instâncias de carteira e demonstre as duas operações funcionando em conjunto.
Você receberá três entradas:
- Quantidade na primeira carteira
- Quantidade na segunda carteira
- Quantidade na terceira carteira
Em seu arquivo principal, crie três carteiras com as quantias fornecidas. Em seguida:
- Adicione a primeira e a segunda carteira 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 deverá ser:
80
true
falseA primeira carteira (50) somada à 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