Leitura recomendada
Objetivos
Declarando uma classe
Lua ainda não suporta POO(10/06/2025), porém, assim como simulamos Enum, vamos utilizar o
tipo de dado table para simular orientação a objeto de forma limitada.
Sintaxe
[local] nome_classe = {}
Exemplo 1
local MinhClasse = {}
Nossos objetos precisam armazenar suas informações, para isso, declaramos seus campos ou
atributos como variáveis locais:
Sintaxe
variavel_local.nome_atributo = valor_inicial
Essa propriedade local deve criada dentro do construtor e retornada como uma table para
que tenhamos acesso:
Exemplo 2
local MinhaClasse = {}
MinhaClasse.construtor = function() //new
local classe = {}
classe.MinhaPropriedade = 999 --public
return classe
end
local objeto = MinhaClasse.construtor() -- instancia
Saída
-
Atributos ou campos privados, devem ser declarados dentro de uma table utilizando o escopo local.
Esses campos devem ser acessados apenas pelas funções internas ou locais.
Exemplo 3
MinhaClasse.construtor = function() //new
local classe = {}
local MinhaPropriedadePrivada = 999 --
return classe
end
local objeto = MinhaClasse.construtor() -- instancia
Atributos estáticos em algumas linguagens POO, são atributos acessados sem a necessidade
de uma instância ou objeto.
A Lua, a simulação é feita adicionando uma propriedade à uma table como no exemplo abaixo:
Exemplo 4
local MinhaClasse = {} --table
MinhaClasse.PropriedadeEstatica = 999
print(MinhaClasse.PropriedadeEstatica)
Saída
999
Histórico de atualizações
- 14/06/2025 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.