Recapitulação - Matemática de Carteira
Parte da seção Object Oriented Programming 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 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