Recapitulação - Fábrica de Carros
Parte da seção Object Oriented Programming do Journey de Lua da Coddy — lição 11 de 70.
Desafio
FácilVamos construir uma classe Car completa que reúne tudo o que você aprendeu neste capítulo! Você criará um sistema de fábrica de carros onde cada carro tem seu próprio modelo e cor, demonstrando a organização adequada de módulos e instâncias independentes.
Você organizará seu código em dois arquivos:
Car.lua: Defina sua classeCarseguindo o padrão de protótipo padrão. Sua classe precisa de um construtor:new(model, color)que cria carros com seus próprios atributos. Inclua um método:describe()que permite que cada carro se apresente.main.lua: Requeira seu módulo Car e crie múltiplas instâncias de carros para demonstrar que cada carro mantém seu próprio estado independente.
Seu método :describe() deve imprimir exatamente neste formato:
A [color] [model]Você receberá quatro entradas:
- Modelo para o primeiro carro
- Cor para o primeiro carro
- Modelo para o segundo carro
- Cor para o segundo carro
No seu arquivo principal, crie dois carros usando as entradas fornecidas e faça com que cada um se descreva em uma linha separada.
Por exemplo, se as entradas forem Sedan, blue, Truck e red, a saída deve ser:
A blue Sedan
A red TruckCada carro deve armazenar seu próprio modelo e cor, provando que sua classe cria instâncias verdadeiramente independentes.
Experimente você mesmo
-- Requer o módulo Car
local Car = require('Car')
-- Lê as entradas
local model1 = io.read()
local color1 = io.read()
local model2 = io.read()
local color2 = io.read()
-- TODO: Criar duas instâncias de carro usando Car:new()
-- TODO: Chamar :describe() em cada carro para imprimir suas descrições
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