Configuração do Projeto
Parte da seção Object Oriented Programming do Journey de Lua da Coddy — lição 19 de 70.
Desafio
FácilVamos construir a base para um sistema de Gerenciador de Formas! Este projeto crescerá ao longo das próximas lições, então começaremos configurando uma estrutura de arquivos limpa com uma classe base Shape.
Você criará dois arquivos para organizar seu código:
Shape.lua: Defina uma classe baseShapeusando o padrão de protótipo. Cada forma tem um atributoname(como "Circle" ou "Rectangle"). Inclua um construtor:new(name)que aceite o nome da forma e um método:getName()que o retorne.main.lua: Dê vida à sua classe Shape importando o módulo e criando uma instância de forma. Leia um nome de forma da entrada, crie uma Shape com esse nome e imprima o resultado da chamada de:getName().
Esta classe base servirá como pai para formas específicas como Rectangle e Circle nas próximas lições. Por enquanto, concentre-se em acertar a estrutura da classe — a configuração de __index, o padrão do construtor e o método getter.
Entrada: Uma única linha contendo o nome da forma (uma string).
Saída: O nome da forma retornado por :getName().
Experimente você mesmo
-- Requer o módulo Shape
local Shape = require('Shape')
-- Lê o nome da forma a partir da entrada
local shapeName = io.read()
-- TODO: Criar uma nova instância de Shape com o nome fornecido
-- TODO: Imprimir o resultado da chamada :getName() na sua forma
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